ImageButton 实现 FloatingActionButton 波纹/表面高度效果
2017-04-29 11:22
459 查看
ImageButton 实现 FloatingActionButton波纹/表面高度效果
FloatingActionButtonFloatingActionButton 是 Material Design Library 中控件,简单来说可以实现悬浮效果,具有立体感,层次感。 使用很简单,首先需要在 build.gradle 中引入
compile 'com.android.support:design:x.x.x'
xml 文件中添加
<android.support.design.widget.FloatingActionButton android:id="@+id/floatingActionButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_add_circle_black_24dp" app:elevation="6dp" app:fabSize="normal" app:pressedTranslationZ="12dp"/>
效果如下:
app:elevation 属性:表面高度值,即 Z轴 高度值,标准值为 6dp,值越大,在 xy 平面投下的阴影也就越大。
app:fabSize 属性:控件大小,有 normal,mini,auto 三个可选值,分别对应为标准大小(56dp),mini大小(40dp),自适应大小。
app:pressedTranslationZ 属性:按下 FAB 控件后* Z轴 *的高度值,按下后会发现阴影范围变大。
Activity 初始化 FAB 并添加* onClick *事件,运行测试即可。
ImageButoon 实现 FloatingActionButton 效果
观察 FloatingActionButton 可发现,及背景为圆形样式,而 ImageButton 定义时默认矩形,所以需要使用 shape 定义样式。
创建 res/drawable/oval_shape.xml 文件
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/colorAccent"/> </shape>
ImageButton 应用
<ImageButton android:id="@+id/imageButton" android:layout_width="56dp" android:layout_height="56dp" android:background="@drawable/oval_shape" android:src="@drawable/ic_add_circle_black_24dp" android:elevation="6dp"/>
此时可以看到,初步有了 FloatingActionButton 的样式了。
继续修改,添加波纹效果。
创建 res/drawable/oval_ripple.xml 文件
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight"> <!-- //TODO colorControlHighlight 波纹和列表选择器等使用的颜色 --> <item> <shape android:shape="oval"> <solid android:color="?attr/colorAccent"/> </shape> </item> </ripple>
ripple 是 5.0 之后引入的,所以要在 sdk 21及以上才可以。
修改 background 为
android:background="@drawable/oval_ripple"
距离成功又进一步了,现在还缺少 onClick 后的动画效果,也就是阴影效果变化,其实就是 Z轴 高度值的变化。
这一步其实是由属性动画控制的,所以需要去定义一个属性动画出来。
Google 建议属性动画要定义在 animator 文件夹,而不是 anim 文件夹。
创建 res/animator/fab_animator.xml 文件
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_pressed="true"> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="8dp" android:valueType="floatType"/> </item> <item> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="0dp" android:valueType="floatType"/> </item> </selector>
可以看到,当 onClick 后,Z轴的高度提升 8dp,使阴影变大(属性动画的属性这里暂不介绍,感兴趣可以查看下相关资料)。此时属性动画已经定义完成,应用到 ImageButton 即可。
a09f <ImageButton android:id="@+id/imageButton" android:layout_width="56dp" android:layout_height="56dp" android:background="@drawable/oval_ripple" android:elevation="6dp" android:src="@drawable/ic_add_circle_black_24dp" android:stateListAnimator="@animator/fab_animator"/>
此时 ImageButton 已设置完毕,运行即可查看效果。
至此通过 ImageButton 来实现的效果已全部完成,因为 FloatingActionButton 的效果已经非常好,所以这里只是通过案列简单了解下已效果。
如有写错之处,请大家指出帮助改进,谢谢大家!
相关文章推荐
- ImageView 实现 floatingActionButton 的效果
- Android 必知必会 - FloatingActionButton 24.2.0 默认无水波纹效果
- Android中Fab(FloatingActionButton)实现上下滑动的渐变效果
- Android中ImageButton自定义按钮的按下效果的代码实现方法
- Android 笔记:ImageButton单击切换按钮图片效果的实现(转)
- FloatingActionButton的滚动隐藏和弹出特效的实现
- 如何实现Button水波纹效果-Android 5.0 material design Reveal效果
- Android悬浮按钮的两种实现方法(Floating action button)
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- Android ImageButton 如何实现一个点击效果
- Android中ImageButton自定义按钮的按下效果的代码实现方法
- 转载 :Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- 5步实现Floating Action Button
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- android悬浮按钮(Floating action button)的两种实现方法
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。 .
- Android ImageButton自定义按钮的按下效果的代码实现方法分享
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- FloatingActionButton滚动隐藏的另一种实现方法:依赖appBarLayout