ttym 2013-07-17 01:51 采纳率: 0%
浏览 2778

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

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

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-06 09:57
    关注

    为了实现这个动画效果,你可以使用 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>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。