本文选自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>
|