如何以特定的时间间隔为图片添加动画效果?

本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解在Android中,如何以特定的时间间隔为图片添加动画效果。

问:StacyM

在Android的开发过程中,我用的是Coursera类别,以下是我想要实现的静态效果图:

目前,我采用的代码是:

XML:

1
2
3
4
5
6
7
8
<Button
         android:id= "@+id/startbutton"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:layout_above= "@+id/leftfoot"
         android:layout_alignRight= "@+id/leftfoot"
         android:onClick= "startRhythmandAnimation"
         android:text= "@string/start_button" />
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Assignment3MainActivity extends Activity {
 
private View mMileTimeGoal;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
     super .onCreate(savedInstanceState);
     setContentView(R.layout.activity_assignment3_main);
     mMileTimeGoal = findViewById(R.id.miletimegoal);
}
 
public void startRhythmandAnimation () {
     String MileTime = mMileTimeGoal.getContext().toString();
     String[] time_array = MileTime.split( ":" );
     int hours = Integer.parseInt(time_array[0]);
     int minutes = Integer.parseInt(time_array[1]);
     int seconds = Integer.parseInt(time_array[2]);
     int duration = 3600 * hours + 60 * minutes + seconds;
     int steps_per_second = 3;
 
     int running_rate = duration * steps_per_second;
 
     View rightfoot = findViewById(R.id.rightfoot);
     View leftfoot = findViewById(R.id.leftfoot);
 
     rightfoot.setVisibility(View.VISIBLE);
     Animation anim = AnimationUtils.makeInChildBottomAnimation( this );
     rightfoot.startAnimation(anim);
 
     leftfoot.setVisibility(View.VISIBLE);
     leftfoot.startAnimation(anim);
}
我应该采用什么算法,来完成左、右脚的淡入淡出的“运动”呢?需要设定一种循环运动的定时器吗?

答:Nick Cardoso

我觉得,你可以采用如下代码:

Activity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private Handler mHandler;   
private long mInterval = 1000;
private View mLeftfoot;
private Animation mFootAnim;
 
public void onCreate(Bundle bundle) {
    ...
    mHandler = new Handler(); //.os package class when importing
    mLeftfoot = findViewById(R.id.leftfoot);
    mFootAnim = AnimationUtils.loadAnimation( this , R.anim.foot);
    stepRecursive();
}
 
private void stepRecursive() {
     mHandler.postDelayed( new Runnable() {
         @Override
         public void run() {
             mLeftFoot.startAnimation(mFootAnim );
             stepRecursive();
         }
     }, mInterval);
}
/res/anim/foot.xml
1
2
3
4
5
<?xml version= "1.0" encoding= "utf-8" ?>
     <translate android:fromYDelta= "0" android:toYDelta= "-15" android:duration= "400" />
     <alpha android:fromAlpha= "1.0" android:toAlpha= "0" android:duration= "400" />
</set>

这是我认为最直接的解决办法,当然,你可以针对特定的需要,再完善以上的代码。

原文链接:http://stackoverflow.com/questions/21667916/android-how-can-i-make-an-animation-of-an-image-occur-at-a-certain-interval 

转载于:https://www.cnblogs.com/aikongmeng/p/3697322.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值