android 如何实现图片的选择框上下左右移动加淡入淡出的动画效果?

就是比如说一个图片查看器 然后屏幕上有好多的图片 选中一个图片有一个选择框 然后对那个选择框做处理 实现上下左右移动加淡入淡出的效果
难点是如何控制动画的效果 比如两个不一样大小的图片
希望高手能给出答案 或者提供一个思路,谢谢!

为了实现这个动画效果,你可以使用 Android 动画框架中的补间动画或属性动画。这两种动画方式都可以用于改变 View 的属性并达到动画的效果。


下面是一个使用补间动画来实现移动和淡入淡出的示例代码:

ImageView imageView = findViewById(R.id.image_view);

// 创建移动动画
TranslateAnimation translateAnimation = new TranslateAnimation(0, 100, 0, 100);
translateAnimation.setDuration(1000); // 设置动画时长
translateAnimation.setFillAfter(true); // 动画结束后保持最终状态

// 创建淡入淡出动画
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
alphaAnimation.setDuration(1000);
alphaAnimation.setFillAfter(true);

// 将两个动画添加到动画集合中
AnimationSet animationSet = new AnimationSet(false); // false 表示不共用插值器
animationSet.addAnimation(translateAnimation);
animationSet.addAnimation(alphaAnimation);

// 开始动画
imageView.startAnimation(animationSet);

如果你想控制不同大小的图片的动画效果,你可以在创建动画时设置不同的参数,比如设置不同的移动距离或淡入淡出的程度。


如果你希望更精细地控制动画,可以使用属性动画。你可以使用 ObjectAnimator 来改变 View 的属性,并使用 AnimatorSet 来组合多个动画。下面是一个使用属性动画来实现移动和淡入淡出的示例代码:

ImageView imageView = findViewById(R.id.image_view);

// 创建移动动画
ObjectAnimator translateAnimator = ObjectAnimator.ofFloat(imageView, "translationX", 0, 100);
translateAnimator.setDuration(1000);

// 创建淡入淡出动画
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 0, 1);
alphaAnimator.setDuration(1000);

// 将两个动画添加到动画集合中
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(translateAnimator, alphaAnimator);

// 开始动画
animatorSet.start();

注意,使用属性动画时,你需要在清单文件中声明 hardwareAccelerated 属性,以开启硬件加速,否则可能会出现性能问题。

<application
    android:hardwareAccelerated="true"
    ...>
</application>