android 收藏动画diamanté
时间: 2023-06-30 13:17:37 浏览: 69
以下是一个简单的 Android 收藏动画实现示例:
1. 首先在你的布局文件中添加一个 ImageView,用于显示收藏的钻石图标:
```
<ImageView
android:id="@+id/diamond_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/diamond_empty" />
```
2. 在你的 Activity 或 Fragment 中获取这个 ImageView,并添加一个点击事件监听器:
```
ImageView diamondIcon = findViewById(R.id.diamond_icon);
diamondIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
animateDiamond(diamondIcon);
}
});
```
3. 实现 animateDiamond() 方法,使用属性动画让钻石图标从空心变成实心,并且放大一些,然后再缩小回原来的大小:
```
private void animateDiamond(final ImageView diamondIcon) {
AnimatorSet animatorSet = new AnimatorSet();
// 缩放动画,从 1.0f 放大到 1.4f,然后再缩小回 1.0f
ObjectAnimator scaleXAnimator = ObjectAnimator.ofFloat(diamondIcon, "scaleX", 1.0f, 1.4f, 1.0f);
ObjectAnimator scaleYAnimator = ObjectAnimator.ofFloat(diamondIcon, "scaleY", 1.0f, 1.4f, 1.0f);
// 颜色动画,从空心的灰色变成实心的绿色
ObjectAnimator colorAnimator = ObjectAnimator.ofInt(diamondIcon.getDrawable(), "colorFilter", Color.GRAY, Color.GREEN);
colorAnimator.setEvaluator(new ArgbEvaluator());
animatorSet.playTogether(scaleXAnimator, scaleYAnimator, colorAnimator);
animatorSet.setDuration(500);
animatorSet.start();
// 延迟 500 毫秒后播放反向动画
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
AnimatorSet reverseAnimatorSet = new AnimatorSet();
// 缩放动画,从 1.0f 缩小到 0.8f,然后再放大回 1.0f
ObjectAnimator reverseScaleXAnimator = ObjectAnimator.ofFloat(diamondIcon, "scaleX", 1.0f, 0.8f, 1.0f);
ObjectAnimator reverseScaleYAnimator = ObjectAnimator.ofFloat(diamondIcon, "scaleY", 1.0f, 0.8f, 1.0f);
reverseAnimatorSet.playTogether(reverseScaleXAnimator, reverseScaleYAnimator);
reverseAnimatorSet.setDuration(300);
reverseAnimatorSet.start();
}
}, 500);
}
```
这样,当用户点击钻石图标时,就会播放一个简单的收藏动画,包括钻石变绿色、放大、缩小回原来的大小。同时,也包括一个反向动画,让钻石图标再次缩小。
阅读全文