android button背景光晕动画
时间: 2023-07-21 16:41:50 浏览: 177
android 按钮动画效果
5星 · 资源好评率100%
要实现 Android Button 的背景光晕动画,你可以通过使用 RippleDrawable 来实现。RippleDrawable 是 Android 5.0 (API 21) 引入的一个可产生波纹效果的 Drawable 类型。
以下是一个简单的实现步骤:
1. 在 res/drawable 目录下创建一个 XML 文件,命名为 button_bg.xml,代码如下:
```
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/white">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/holo_blue_light" />
</shape>
</item>
</ripple>
```
其中,`<ripple>` 标签定义了 RippleDrawable 的基本属性,`<item>` 标签定义了 RippleDrawable 的背景颜色和形状。
2. 在布局文件中使用 Button,并将其背景设置为 button_bg.xml:
```
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:text="Button" />
```
3. 在 Java 代码中为 Button 添加点击事件监听器,当 Button 被点击时,播放 RippleDrawable 动画:
```
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
RippleDrawable rippleDrawable = (RippleDrawable) btn.getBackground();
rippleDrawable.setHotspot(v.getWidth() / 2f, v.getHeight() / 2f);
rippleDrawable.setVisible(true, true);
rippleDrawable.setAlpha(255);
rippleDrawable.setRadius(0);
ObjectAnimator animator = ObjectAnimator.ofFloat(rippleDrawable, "radius", 0, btn.getWidth() * 2);
animator.setDuration(500);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.start();
}
}
});
```
在上面的代码中,我们使用 ObjectAnimator 来实现 RippleDrawable 半径的动画变化,从而产生背景光晕的效果。
注意:RippleDrawable 只能在 Android 5.0 及以上版本中使用,如果需要兼容低版本的 Android 系统,可以考虑使用第三方库来实现类似的效果。
阅读全文