用到animation-list其实就是帧叠加 ,通常要注意两个问题
1.一般布局要用在frameLayout
2.它呢一般作为背景 然后在取出来
- public class EarthAnimationActivity extends Activity {
- private static final String TAG = "EarthAnimationActivity";
- protected static final int FORWARD = 0;
- protected static final int REVERSE = 1;
- private Button earthButton;
- private AnimationDrawable earthButtonAnimation;
- protected int direction;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.main);
- earthButton = (Button) findViewById(R.id.earth_button);
- earthButtonAnimation = (AnimationDrawable) earthButton.getBackground();
- direction = FORWARD;
- earthButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if ( ! earthButtonAnimation.isRunning() ) {
- earthButtonAnimation.start();
- earthButton.setText(R.string.click_me_to_stop);
- }
- else {
- earthButtonAnimation.stop();
- int resId = R.anim.earth_animation_rev;
- if ( direction == FORWARD ) {
- direction = REVERSE;
- }
- else {
- resId = R.anim.earth_animation;
- direction = FORWARD;
- }
- earthButton.setBackgroundResource(resId);
- earthButtonAnimation = (AnimationDrawable) earthButton.getBackground();
- earthButton.setText(R.string.click_me_to_start);
- }
- }
- });
- }
- /* (non-Javadoc)
- * @see android.app.Activity#onResume()
- */
- @Override
- protected void onResume() {
- super.onResume();
- (new Timer(false)).schedule(new AnimationTimer(earthButtonAnimation), 100);
- }
- /* (non-Javadoc)
- * @see android.app.Activity#onPause()
- */
- @Override
- protected void onPause() {
- super.onPause();
- earthButtonAnimation.stop();
- }
- private static class AnimationTimer extends TimerTask {
- AnimationDrawable animation;
- public AnimationTimer(AnimationDrawable animation) {
- this.animation = animation;
- }
- @Override
- public void run() {
- animation.start();
- this.cancel();
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent" android:id="@+id/frame_layout"
- android:background="@drawable/space_background">
- <Button android:id="@+id/earth_button" android:background="@anim/earth_animation"
- android:text="@string/click_me_to_stop" android:layout_gravity="center"
- android:textStyle="bold" android:textColor="#ff9900"
- android:layout_marginBottom="12dip" android:layout_marginRight="12dip"
- android:layout_marginTop="12dip" android:maxHeight="296dip"
- android:maxWidth="296dip" android:layout_height="wrap_content"
- android:layout_width="wrap_content" android:width="296dip"
- android:height="296dip" android:layout_marginLeft="-10dip"
- android:textSize="24dip"></Button>
- </FrameLayout>
上面主vxml
下面是地球的正反旋转
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Animation frames for earth -->
- <!-- android:id="@+id/earth_animation" -->
- <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
- android:oneshot="false" android:visible="true">
- <item android:drawable="@drawable/earth0" android:duration="150" />
- <item android:drawable="@drawable/earth1" android:duration="150" />
- <item android:drawable="@drawable/earth2" android:duration="150" />
- <item android:drawable="@drawable/earth3" android:duration="150" />
- <item android:drawable="@drawable/earth4" android:duration="150" />
- <item android:drawable="@drawable/earth5" android:duration="150" />
- <item android:drawable="@drawable/earth6" android:duration="150" />
- <item android:drawable="@drawable/earth7" android:duration="150" />
- <item android:drawable="@drawable/earth8" android:duration="150" />
- <item android:drawable="@drawable/earth9" android:duration="150" />
- </animation-list>
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Animation frames for earth -->
- <!-- android:id="@+id/earth_animation_rev" -->
- <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
- android:oneshot="false" android:visible="true">
- <item android:drawable="@drawable/earth9" android:duration="150" />
- <item android:drawable="@drawable/earth8" android:duration="150" />
- <item android:drawable="@drawable/earth7" android:duration="150" />
- <item android:drawable="@drawable/earth6" android:duration="150" />
- <item android:drawable="@drawable/earth5" android:duration="150" />
- <item android:drawable="@drawable/earth4" android:duration="150" />
- <item android:drawable="@drawable/earth3" android:duration="150" />
- <item android:drawable="@drawable/earth2" android:duration="150" />
- <item android:drawable="@drawable/earth1" android:duration="150" />
- <item android:drawable="@drawable/earth0" android:duration="150" />
- </animation-list>