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否则没有点击效果
  1. 在布局文件添加控件时可使用如下方式:
<android.support.design.widget.FloatingActionButton
       .......
        />
  1. 也可使用自定义的包名:
    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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值