​ 使用TransitionDrawable实现背景切换渐变效果Android使用TransitionDrawable渐变切换多张图片​

该文章介绍了如何在Android中使用TransitionDrawable来实现背景图片的渐变切换效果。通过创建一个包含多张图片的Drawable数组,利用Handler发送消息并启动线程,动态改变TransitionDrawable中的图片,从而达到平滑过渡的效果。

使用TransitionDrawable实现背景切换渐变效果

Android使用TransitionDrawable渐变切换多张图片

1.定义变量

private int change = 0;//记录下标
private int[] ids = new int[]{R.mipmap.loginbg_fenxiyi, R.mipmap.loginbg_houshijing, R.mipmap.loginbg_shoubiao,R.mipmap.loginbg_zuoji};
private Drawable[] drawables;//图片集合
private Thread mThread;//线程
private boolean mThreadFlag = true;//线程结束标志符


2、填充图片

//填充图片
drawables = new Drawable[ids.length];
for (int i = 0; i < ids.length; i++) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        drawables[i] = getDrawable(ids[i]);
    } else {
        drawables[i] = getResources().getDrawable(ids[i]);
    }
}

3、定义hander

Handler handler = new Han
Android中,要实现这种图片切换的平滑过渡效果,通常会使用`TransitionDrawable`或者第三方库如Lottie Animation Studio的JSON动画。以下是基本步骤: 1. **TransitionDrawable**: - 创建两个`ImageView`并设置它们的背景为`TransitionDrawable`。 - 当需要切换图片时,先将当前图片的`TransitionDrawable`的开始状态设置为完全可见,结束状态设置为完全不可见(例如,通过`setFromState(TransitionDrawable(states, null))`)。 - 然后,将新图片的`TransitionDrawable`的开始状态设置为完全不可见,结束状态设置为完全可见。 - 使用`TransitionDrawable.startTransition()`启动动画。 ```java TransitionDrawable drawable = new TransitionDrawable(new Drawable[]{currentDrawable, newDrawable}); imageView.setBackground(drawable); drawable.startTransition(switchDuration); ``` 2. **Lottie JSON 动画**: - 如果你想用更复杂的动画效果,可以创建一个Lottie动画文件,并在XML布局中引用它。使用`LottieAnimationView`加载JSON文件。 - 切换图片时,暂停当前动画,然后设置新的动画,最后更新视图。 ```java lottieAnimationView.setAnimation(lottieAnimationJson); // 新的动画 lottieAnimationView.pauseAnimation(); // ... 等待一段时间(动画过渡时间) lottieAnimationView.playAnimation(); ``` 注意,这两种方法都可能导致在动画过程中图片显示不完整,因为动画是从一种状态渐变到另一种状态,这期间可能会有短暂的视觉偏差。为了避免这个问题,你可以调整过渡时间、使用帧缓冲区或者是优化动画关键帧设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值