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 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题