CPl*_*lus 14 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"/>
</transition>
Run Code Online (Sandbox Code Playgroud)
和代码看起来像这样:
View divider = v.findViewById(R.id.divider);
if (divider != null) {
TransitionDrawable transition = (TransitionDrawable) divider.getBackground();
transition.startTransition(2000);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不知道如何永远重复这种转变,所以我可以创造一个脉冲效果.
编辑:
为了清楚起见:在创建视图(listitem)时执行代码,因此循环不是解决方案.
小智 5
我知道这个问题很老,但我想帮助其他用户提供其他可能的解决方案.
AnimationDrawable
当你有超过2张图像时,这是正确的方法,但是如果你只有两张图像,你也可以使用TransitionDrawable
,正如你所说的那样.我会告诉你如何做到这一点.
在第一次,我将在我的使用计时器onCreate()
.
Timer MyTimerImage = new Timer();
Run Code Online (Sandbox Code Playgroud)
然后,我将创建一个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);
}
}});
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我将创建一个MyTimerTask变量来运行我的计时器.此代码低于Timer()的创建.
MyTimerTask MyTimer = new MyTimerTask();
MyTimerImage.schedule(MyTimer, myDelay, myPeriod);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,schedule方法有3个参数:第一个表示我们的TimerTask任务,第二个是以ms为单位运行TimerTask的延迟,第三个表示我们想要运行代码的每个周期.
不要忘记将TransitionFile.xml文件包含在您的android:background
.
我希望它对某人有所帮助.
我认为你应该使用AnimationDrawable而不是TransitionDrawable:http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
归档时间: |
|
查看次数: |
5598 次 |
最近记录: |