gpt4 book ai didi

android - 我怎样才能永远重复过渡?

转载 作者:可可西里 更新时间:2023-11-01 19:07:21 26 4
gpt4 key购买 nike

我有一个看起来像这样的过渡:

<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:drawable="@drawable/divider"/>
<item android:drawable="@drawable/divider_active"/>

</transition>

代码如下:

View divider = v.findViewById(R.id.divider);
if (divider != null) {
TransitionDrawable transition = (TransitionDrawable) divider.getBackground();
transition.startTransition(2000);
}

我的问题是,我不知道如何永远重复这个过渡,所以我可以创建一个脉冲效果。

编辑:

为了清楚起见:代码在创建 View (listitem)时执行,因此循环不是解决方案。

最佳答案

我知道这个问题很老,但我想用其他可能的解决方案帮助其他用户。

AnimationDrawable 是当您有超过 2 张图片时的正确方法,但是当您只有两张图片时,您也可以使用 TransitionDrawable,如您所说。我将向您展示如何操作。

第一次,我将在我的 onCreate() 中使用一个计时器。

Timer MyTimerImage = new Timer();

然后,我将创建一个 MyTimerTask 类(在父 Activity 类中)来运行我自己的代码。

public class MyTimerTask extends TimerTask {
LinearLayout myIDLinearLayout= (LinearLayout) findViewById(R.id.myIDofLinearLayout);

TransitionDrawable MyTrans = (TransitionDrawable) myIDLinearLayout.getBackground();

int i = 0;
@Override
public void run() {
runOnUiThread(new Runnable(){

@Override
public void run() {
i++;
if (i%2==0) { //
MyTrans.startTransition(myTransitionTimeinms);
}else{
MyTrans.reverseTransition(myTransitionTimeinms);
}

}});
}

}

最后,我将创建一个 MyTimerTask 变量来运行我的计时器。此代码位于 Timer() 的创建之下。

MyTimerTask MyTimer = new MyTimerTask();
MyTimerImage.schedule(MyTimer, myDelay, myPeriod);

在这种情况下,schedule 方法有 3 个参数:第一个表示我们的 TimerTask 任务,第二个是运行 TimerTask 的延迟(以毫秒为单位),第三个表示我们要运行代码的每个周期。

不要忘记将 TransitionFile.xml 文件包含在 android:background 中。

希望对大家有所帮助。

关于android - 我怎样才能永远重复过渡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com