Android 我怎样才能永远重复一次过渡?
我有一个这样的过渡:Android 我怎样才能永远重复一次过渡?,android,transition,Android,Transition,我有一个这样的过渡: <?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"/&g
<?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);
}
Timer MyTimerImage = new Timer();
我的问题是,我不知道如何永远重复这个转变,所以我可以创造一个脉冲效应
Timer MyTimerImage = new Timer();
编辑:
Timer MyTimerImage = new Timer();
要澄清的是:代码在创建视图(listitem)时执行,因此循环不是解决方案。编辑:这是一个错误的答案,但我将保留它,以防讨论对任何人都有帮助。我可能仍然应该得到否决票,哈哈
View divider = v.findViewById(R.id.divider);
boolean loop = true;
while (loop) {
TransitionDrawable transition = (TransitionDrawable) divider.getBackground();
transition.resetTransition(); //I don't really know if this is necessary
transition.startTransition(2000);
//you'll want to stop SOME time.
if (wantToStop){
loop = false
}
}
Timer MyTimerImage = new Timer();
可能正常工作,也可能不正常工作。我这样说是因为在2秒钟的转换过程中,while循环将继续循环,startTransition
将被一次又一次地调用。您可以使用condiitonal语句检查当前时间,并检查上次启动时间是否小于2000
Timer MyTimerImage = new Timer();
这可能不是最好的,但是一个while循环是一个很好的开始
Timer MyTimerImage = new Timer();
如果您需要,我可以尝试给出一个更好的代码示例来更好地管理while循环,但您应该首先尝试。我认为您应该使用AnimationDrawable而不是TransitionDrawable:我知道这个问题很老,但我想帮助其他用户找到其他可能的解决方案
Timer MyTimerImage = new Timer();
AnimationDrawable
是两张以上图像的正确方法,但如果只有两张图像,也可以使用TransitionDrawable
,正如您所说。我来教你怎么做
Timer MyTimerImage = new Timer();
第一次,我将在我的onCreate()
中使用计时器
Timer MyTimerImage = new Timer();
然后,我将创建一个MyTimerTask类(在父活动类中)来运行我自己的代码
Timer MyTimerImage = new Timer();
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 MyTimerImage = new Timer();
在这种情况下,schedule方法有3个参数:第一个参数表示我们的TimerTask任务,第二个参数表示运行TimerTask的延迟(毫秒),第三个参数表示我们要运行代码的每个周期
Timer MyTimerImage = new Timer();
别忘了在android:background
中包含TransitionFile.xml文件
Timer MyTimerImage = new Timer();
我希望它能对某人有所帮助。循环不起作用,因为它会阻塞。此分隔符是listview中listitem的一部分。我在创建视图时执行此代码。是否尝试使用线程?这可能有点复杂,因为您无法从工作线程更新UI线程,但这可能是可行的。您还必须使用处理程序进行通信。我想我真的不知道你下一步该去哪里。我想这真的太复杂了。我想到了动画,但我在网上找不到可比的东西:/I我理解并同意。祝你好运,我想。我不知道如何使用动画或TransitionDrawable,或者我可能会提供更多帮助。对不起。:)AnimationDrawable与TransitionDrawable不同,TransitionDrawable不会在其项目之间设置动画,有什么解决方法吗?请在代码片段周围添加一些上下文,否则用户可能难以理解您的方法。
Timer MyTimerImage = new Timer();
public void repeat(){
new CountDownTimer(2000, 1000){
public void onTick(long millisUntilFinished){
transition.startTransition(2000);
}
public void onFinish() {
transition.resetTransition();
repeat();
}
}.start();
}