如何以特定的时间间隔为图片添加动画效果?
本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解在Android中,如何以特定的时间间隔为图片添加动画效果。
在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"
/>
|
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);
}
|
我觉得,你可以采用如下代码:
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);
}
|
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>
|