Android 开发技巧
UI/UE/UX
RippleDrawable - 波纹效果
- 使用Android 提供的属性
android:foreground="?android:attr/selectableItemBackground"
扩散到View边界
android:foreground="?android:attr/selectableItemBackgroundBorderless
设置后,会从孩子往父亲找一个依附的色。如果View往上找的时候,亲生父亲没背景色,会继续向上查找直到最顶端。找到了最顶端的爷爷,这个时候才绘制。然而,如果父亲的兄弟又绘制了颜色,且盖住了最顶端的绘制,会导致看不到效果。如果有一定的透明度,结果就显而易见了。 特别注意: 当把硬件加速给关闭时,这个效果是没有的。 这是API 21的新属性,老版本无法使用.
- 自定义
<!-- A green ripple drawn atop a black rectangle. -->
<ripple android:color="#ff00ff00">
<item android:drawable="@android:color/black" />
</ripple>
<!-- A blue ripple drawn atop a drawable resource. -->
<ripple android:color="#ff0000ff">
<item android:drawable="@drawable/my_drawable" />
</ripple>
android:color中是点击响应色,也是波纹扩散色。 item中是正常状态下的显示。
一般使用时会和原有的selector配合,原有的selector负责5.0以下显示效果, 新的selector内部含有ripple标签放在drawable-v21中,保证点击效果。
VectorDrawable使用
VectorDrawable优点
-
VectorDrawable图像可以自动进行适配,不需要通过分辨率来设置不同的图片Vector图像可以大幅度减少图像的体积。
-
svg图像导出工具方便,从而转换成Vector图像功能强大,前端已经广泛使用。
VectorDrawable使用
Databinding 中使用svg可能会出现找不到的问题 android:drawableLeft=”@{@drawable/ic_password}”