Android自定义可移动悬浮按钮
FloatingActionButton简介
悬浮按钮FloatingActionButton是Material Design中的一个控件,它继承了ImageView,因此具备ImageView的全部属性。
FloatingActionButton的使用
Android 5.0 中引入Material Design,FloatingActionButton为Android Design Support Library支持包中的中Material Design控件,要使用FloatingActionButton,先要引入Design Support Library包,如在build.gradle中加入:
implementation 'com.android.support:design:28.0.0'
在布局文件中添加控件
其中几个主要属性:
属性 | 功能 |
---|---|
app:backgroundTint | 正常的背景颜色 ,这里是ColorStateList类型 |
app:rippleColor | 按下时的背景颜色 |
app:elevation | 正常的阴影大小 |
app:pressedTranslationZ | 按下时的阴影大小 |
app:layout_anchor | 设置悬浮按钮的锚点,即以哪个控件为参照设置位置 |
app:layout_anchorGravity | 悬浮按钮相对于锚点的位置 |
app:fabSize | 悬浮按钮的大小,normal或mini(分别对应56dp和40dp) |
app:borderWidth | 边框大小,最好设置成0dp否则会有边框 |
android:clickable | 一定要设置成true否则没有点击效果 |
- 在布局文件添加控件时可使用如下方式:
<android.support.design.widget.FloatingActionButton
.......
/>
- 也可使用自定义的包名:
com.example.notepad2.DragFloatActionButton
因为接下来要实现自定义的悬浮按钮,可根据实际情况自定。这里建议使用第二种方法,使用第一种时可能会出现闪退情况
<com.example.notepad2.DragFloatActionButton
android:id="@+id/fb"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:borderWidth="0dp"
app:backgroundTint="#FFFFFF"
app:rippleColor="#008577"
android:src="@drawable/hao"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
/>
实现自定义悬浮按钮
创建一个DragFloatActionButton类继承FloatingActionButton
在类中覆写 onTouchEvent 函数,捕捉触摸事件,然后利用setX(),setY() 方法将其移动。
而吸附效果,则是利用ObjectAnimator.ofFloat 实现动画。
//左吸附
ObjectAnimator oa=ObjectAnimator.ofFloat(this,"x",getX(),0);
oa.setInterpolator(new DecelerateInterpolator());
oa.setDuration(500);
oa.start();
使用的构造方法为
public static ObjectAnimator ofFloat(Object target, String propertyName, float