为了账号安全,请及时绑定邮箱和手机立即绑定

自己做悬浮拖拽按钮依赖

标签:
Android

PS:悬浮拖拽按钮的使用也是非常广的,就比如说上一个网站的时候就会弹出一个对话框,对话框可以随意拖动,那么安卓手机上可以实现吗,答案是可以的,这就用到了自定义view的按压点击等事件,本文的例子比较简单是继承FloatingActionButton,这个控件本身就做的很好了,点击效果,按压出的投影等都是可以调节的,所以继承他就可以省去写很多细节代码。网上也是有很多博友写了有关的文章,讲了原理也是很清楚的,写的都很好,也有很多写的代码基本上差不多,再怎么变MotionEvent方法的DOWN、MOVE、UP等是不会变的,里面无非是写了一些不兼容的问题,当时我写这个的时候也是有一些问题,比如说,锤子手机就不能用,或者华为手机5.0以上的不行等,在网上看了一些博友的文章借鉴,在这里首先感谢博客这个平台可以分享技术,其次就是博友的技术思路分享。煽情的话就到这了,这里就稍微说一下制作思路:

思路:

  • 继承FloatingActionButton

  • onTouchEvent()的重写

  • MotionEvent.ACTION_DOWN:

  • MotionEvent.ACTION_MOVE:

  • MotionEvent.ACTION_UP:

当手指按下的时候记住悬浮按钮屏幕所在位置作为起始位置,当滑动的时候再次获取所在位置并且判断所滑动的不能超过屏幕(不判断有时会导致一半按钮在外,一半在内的现象),当超过时,就让它等于屏幕的最小值或者最大值,至于UP就是动画了,当手指抬起后判断在屏幕的哪边,左边就把x=0;右边 x=屏幕最大值。下面有我整理完后,做了一个AS依赖库,直接就可以用,想搞明白这一块的知识可以去查查别的资料,也可以直接拿着用。

效果:

https://img1.sycdn.imooc.com//5b38d4a1000164e901200240.jpg

1:添加依赖

自己做了一个依赖:根目录build.gradle中

    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

在build.gradle中添加

    dependencies {
            implementation 'com.github.hahage001:LZTmusketeer:v1.0.0'
    }

2:使用

添加依赖的地址和本文的有所不同。(mus.cn.suspendbutton.DragFloatActionButton)

    <mus.cn.suspendbutton.DragFloatActionButton
        android:layout_width="200px"
        android:layout_height="200px"
        android:class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@mipmap/ic_launcher"
        app:backgroundTint="#253aac"
        app:rippleColor="#33728dff"
        app:elevation="6dp"
        app:pressedTranslationZ="12dp"
        android:clickable="true"
        android:focusable="true"
    />

 

 

 


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
5
获赞与收藏
57

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消