`
wang_peng1
  • 浏览: 3900354 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

animation-list旋转的地球以及Timer的使用

阅读更多

用到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>

  

 

分享到:
评论
1 楼 blackspot_zero 2012-02-03  
mark

相关推荐

Global site tag (gtag.js) - Google Analytics