443
技術社區[雲棲]
The Animation in android
The android provide two types of animation.Tween Animation is one,such as rotation,translation,scale,gradual change(gradient).
main types:
Animation、AlphaAnimation、RotateAnimation、ScaleAnimation、TranslateAniamtion、AnimationSet
1.AlphaAnimation
the first argument means the start transparency of animation,the second argument means the end transparency of the animation.
2.RotateAnimation
arguments:
fromDegrees: start angle of the animation
toDegrees:end angle of the animation
3.ScaleAnimation
arguments:
fromX: start scale in X cdoordination;
toX: end scale in X coordination;
fromY: start scale in Y coordination;
toY: end scale in Y coordination;
on the other hand,you can set the scale mode:pivotXType/pivotYType,scale animation relative to x,y's start position:pivotXvalue/pivotYValue ect.
4.TranslateAnimation
arguments:
fromXDelta: start X coordination of animation
toXDelta: end X coordination of animation
fromYDelta: start Y coordination of animation
toYDelta: end Y coordination of animation
the layout file's code as bellow:
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:andro> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="scale" android:layout_x="5dp" android:layout_y="383dp" /> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="rotate" android:layout_x="158dp" android:layout_y="383dp" /> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="alpha" android:layout_x="5dp" android:layout_y="331dp" /> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="translate" android:layout_x="160dp" android:layout_y="329dp" /> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="alpha_translate" android:layout_x="84dp" android:layout_y="265dp" /> <ImageView android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="105dp" android:layout_y="133dp" android:src="@drawable/ic_launcher" /> </AbsoluteLayout>
the class code:
public class Animations_Activity extends Activity { private Button button1; private Button button2; private Button button3; private Button button4; private Button button5; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animations_); button1=(Button)findViewById(R.id.button_alpha); button2=(Button)findViewById(R.id.button_rotate); button3=(Button)findViewById(R.id.button_scale); button4=(Button)findViewById(R.id.button_translate); button5=(Button)findViewById(R.id.button_alpha_translate); imageView=(ImageView)findViewById(R.id.imageview); button1.setOnClickListener(new MyButton()); button2.setOnClickListener(new MyButton()); button3.setOnClickListener(new MyButton()); button4.setOnClickListener(new MyButton()); button5.setOnClickListener(new MyButton()); } class MyButton implements OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.button_alpha: Alpha(); break; case R.id.button_rotate: Rotata(); break; case R.id.button_scale: Scale(); break; case R.id.button_translate: Translate(); break; case R.id.button_alpha_translate: Alpha_Translate(); break; default: break; } } } /* * 1.創建一個AnimationSet對象,該對象存儲的是動畫的集合 * 2.根據需要創建相應的Animation對象 * 3.根據動畫的需求,為Animation對象設置相應的數據(即執行效果) * 4.獎Animation對象添加到AnimationSet對象當中 * 5.使用控件對象開始執行AnimationSet */ public void Alpha() { AnimationSet animationSet=new AnimationSet(true); AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0); alphaAnimation.setDuration(2000); animationSet.addAnimation(alphaAnimation); imageView.startAnimation(animationSet); } public void Rotata(){ AnimationSet animationSet=new AnimationSet(true); //後麵的四個參數定義的是旋轉的圓心位置 RotateAnimation rotateAnimation=new RotateAnimation( 0, 360, Animation.RELATIVE_TO_PARENT, 1f, Animation.RELATIVE_TO_PARENT, 0f); rotateAnimation.setDuration(2000); animationSet.addAnimation(rotateAnimation); imageView.startAnimation(animationSet); } public void Scale() { AnimationSet animationSet=new AnimationSet(true); ScaleAnimation scaleAnimation=new ScaleAnimation( 1, 0.1f, 1, 0.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); scaleAnimation.setDuration(2000); animationSet.addAnimation(scaleAnimation); imageView.startAnimation(scaleAnimation); } public void Translate() { AnimationSet animationSet=new AnimationSet(true); TranslateAnimation translateAnimation=new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0f, //X軸的開始位置 Animation.RELATIVE_TO_SELF, 0.5f, //X軸的結束位置 Animation.RELATIVE_TO_SELF, 0f, //Y軸的開始位置 Animation.RELATIVE_TO_SELF, 1.0f); //Y軸的結束位置 translateAnimation.setDuration(2000); animationSet.addAnimation(translateAnimation); /* * 第一行的設置如果為true,則動畫執行完之後效果定格在執行完之後的狀態 * 第二行的設置如果為false,則動畫執行完之後效果定格在執行完之後的狀態 * 第三行設置的是一個long類型的值,是指動畫延遲多少毫秒之後執行 * 第四行定義的是動畫重複幾次執行 */ animationSet.setFillAfter(true); animationSet.setFillBefore(false); animationSet.setStartOffset(2000); animationSet.setRepeatCount(3); imageView.startAnimation(animationSet); } public void Alpha_Translate() { AnimationSet animationSet=new AnimationSet(true); AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0); alphaAnimation.setDuration(2000); animationSet.addAnimation(alphaAnimation); TranslateAnimation translateAnimation=new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0f, //X軸的開始位置 Animation.RELATIVE_TO_SELF, 0.5f, //X軸的結束位置 Animation.RELATIVE_TO_SELF, 0f, //Y軸的開始位置 Animation.RELATIVE_TO_SELF, 1.0f); //Y軸的結束位置 translateAnimation.setDuration(2000); animationSet.addAnimation(translateAnimation); imageView.startAnimation(animationSet); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_animations_, menu); return true; } }
if you also interest in linux and android embed system,please connection with us in QQ grounp:139761394
最後更新:2017-04-03 07:57:13