±¾ÎÄËù·ÖÏíµÄ֪ʶµãÊÇ¡¾¡¾Android »ù´¡¡¿Animation ¶¯»½éÉܺÍʵÏÖ¡¿£¬»¶ÓÄúϲ»¶52ijËù·ÖÏíµÄÐÂÎÅ¡¢¹¥ÂÔ¡¢µçÄԽ̳̼°ÊÖ»ú֪ʶµÈ¾Ñ飬ÏÂÃæÊÇÏêϸµÄ½²½â¡£
¡¾Android »ù´¡¡¿Animation ¶¯»½éÉܺÍʵÏÖ
ÔÚÇ°Ãæ PopupWindow ʵÏÖÏÔʾ·ÂÌÚѶÐÂÎŵײ¿µ¯³ö²Ëµ¥ ÓÐÓõ½Animation¶¯»Ð§¹ûÀ´ÊµÏֲ˵¥µÄÏÔʾºÍÒþ²Ø£¬±¾ÎľÍÀ´½éÉÜϰɡ£
1.Animation ¶¯»ÀàÐÍ
AndroidµÄanimationÓÉËÄÖÖÀàÐÍ×é³É£º
XMLÖÐ
| alph | ½¥±ä͸Ã÷¶È¶¯»Ð§¹û |
| scale | ½¥±ä³ß´çÉìËõ¶¯»Ð§¹û |
| translate | »Ãæ×ª»»Î»ÖÃÒÆ¶¯¶¯»Ð§¹û |
| rotate | »Ãæ×ªÒÆÐýת¶¯»Ð§¹û |
JavaCodeÖÐ
| AlphaAnimation | ½¥±ä͸Ã÷¶È¶¯»Ð§¹û |
| ScaleAnimation | ½¥±ä³ß´çÉìËõ¶¯»Ð§¹û |
| TranslateAnimation | »Ãæ×ª»»Î»ÖÃÒÆ¶¯¶¯»Ð§¹û |
| RotateAnimation | »Ãæ×ªÒÆÐýת¶¯»Ð§¹û |
2.Android¶¯»Ä£Ê½
AnimationÖ÷ÒªÓÐÁ½ÖÖ¶¯»Ä£Ê½£º
Ò»ÖÖÊÇtweened animation(½¥±ä¶¯»)
| XMLÖÐ | JavaCode |
| alpha | AlphaAnimation |
| scale | ScaleAnimation |
Ò»ÖÖÊÇframe by frame(»Ãæ×ª»»¶¯»)
| XMLÖÐ | JavaCode |
| translate | TranslateAnimation |
| rotate | RotateAnimation |
3.ÈçºÎÔÚXMLÎļþÖж¨Ò嶯»
²½ÖèÈçÏ£º
¢Ùн¨ Android ÏîÄ¿
¢ÚÔÚresĿ¼ÖÐн¨animÎļþ¼Ð
¢ÛÔÚanimĿ¼ÖÐн¨Ò»¸ömy_anim.xml(×¢ÒâÎļþÃûСд)
¢ÜÔÚ my_anim.xml ¼ÓÈ붯»´úÂë
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha /> <scale /> <translate /> <rotate /> </set>
4.Android¶¯»½âÎö--XML
4.1 alpha ½¥±ä͸Ã÷¶È¶¯»Ð§¹û
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="1000" android:fromAlpha="0.0" android:toAlpha="1.0" /> <!-- ͸Ã÷¶È¿ØÖƶ¯»Ð§¹û alpha ¸¡µãÐÍÖµ£º fromAlpha ÊôÐÔΪ¶¯»Æðʼʱ͸Ã÷¶È toAlpha ÊôÐÔΪ¶¯»½áÊøÊ±Í¸Ã÷¶È ˵Ã÷: 0.0±íʾÍêȫ͸Ã÷ 1.0±íʾÍêÈ«²»Í¸Ã÷ ÒÔÉÏֵȡ0.0-1.0Ö®¼äµÄfloatÊý¾ÝÀàÐ͵ÄÊý×Ö ³¤ÕûÐÍÖµ£º duration ÊôÐÔΪ¶¯»³ÖÐøÊ±¼ä ˵Ã÷: ʱ¼äÒÔºÁÃëΪµ¥Î» --> </set>
4.2 scale ½¥±ä³ß´çÉìËõ¶¯»Ð§¹û
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <scale android:duration="1000" android:fillAfter="false" android:fromXScale="0.0" android:fromYScale="0.0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.4" android:toYScale="1.4" /> </set><!-- ³ß´çÉìËõ¶¯»Ð§¹û scale ÊôÐÔ£ºinterpolator Ö¸¶¨Ò»¸ö¶¯»µÄ²åÈëÆ÷ ÔÚÎÒÊÔÑé¹ý³ÌÖУ¬Ê¹ÓÃandroid.res.animÖеÄ×ÊԴʱºò·¢ÏÖ ÓÐÈýÖÖ¶¯»²åÈëÆ÷: accelerate_decelerate_interpolator ¼ÓËÙ-¼õËÙ ¶¯»²åÈëÆ÷ accelerate_interpolator ¼ÓËÙ-¶¯»²åÈëÆ÷ decelerate_interpolator ¼õËÙ- ¶¯»²åÈëÆ÷ ÆäËûµÄÊôÓÚÌØ¶¨µÄ¶¯»Ð§¹û ¸¡µãÐÍÖµ£º fromXScale ÊôÐÔΪ¶¯»Æðʼʱ X×ø±êÉϵÄÉìËõ³ß´ç toXScale ÊôÐÔΪ¶¯»½áÊøÊ± X×ø±êÉϵÄÉìËõ³ß´ç fromYScale ÊôÐÔΪ¶¯»ÆðʼʱY×ø±êÉϵÄÉìËõ³ß´ç toYScale ÊôÐÔΪ¶¯»½áÊøÊ±Y×ø±êÉϵÄÉìËõ³ß´ç ˵Ã÷: ÒÔÉÏËÄÖÖÊôÐÔÖµ 0.0±íʾÊÕËõµ½Ã»ÓÐ 1.0±íʾÕý³£ÎÞÉìËõ ֵСÓÚ1.0±íʾÊÕËõ Öµ´óÓÚ1.0±íʾ·Å´ó pivotX ÊôÐÔΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄX×ø±êµÄ¿ªÊ¼Î»Öà pivotY ÊôÐÔΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄY×ø±êµÄ¿ªÊ¼Î»Öà ˵Ã÷: ÒÔÉÏÁ½¸öÊôÐÔÖµ ´Ó0%-100%ÖÐȡֵ 50%ΪÎï¼þµÄX»òY·½Ïò×ø±êÉϵÄÖеãλÖà ³¤ÕûÐÍÖµ£º duration ÊôÐÔΪ¶¯»³ÖÐøÊ±¼ä ˵Ã÷: ʱ¼äÒÔºÁÃëΪµ¥Î» ²¼¶ûÐÍÖµ: fillAfter ÊôÐÔ µ±ÉèÖÃΪtrue £¬¸Ã¶¯»×ª»¯ÔÚ¶¯»½áÊøºó±»Ó¦Óà -->
4.3 translate »Ãæ×ª»»Î»ÖÃÒÆ¶¯¶¯»Ð§¹û
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="2000" android:fromXDelta="30" android:fromYDelta="30" android:toXDelta="-80" android:toYDelta="300" /> <!-- translate λÖÃ×ªÒÆ¶¯»Ð§¹û ÕûÐÍÖµ: fromXDelta ÊôÐÔΪ¶¯»Æðʼʱ X×ø±êÉϵÄλÖà toXDelta ÊôÐÔΪ¶¯»½áÊøÊ± X×ø±êÉϵÄλÖà fromYDelta ÊôÐÔΪ¶¯»Æðʼʱ Y×ø±êÉϵÄλÖà toYDelta ÊôÐÔΪ¶¯»½áÊøÊ± Y×ø±êÉϵÄλÖà עÒâ: ûÓÐÖ¸¶¨fromXType toXType fromYType toYType ʱºò£¬ ĬÈÏÊÇÒÔ×Ô¼ºÎªÏà¶Ô²ÎÕÕÎï ³¤ÕûÐÍÖµ£º duration ÊôÐÔΪ¶¯»³ÖÐøÊ±¼ä ˵Ã÷: ʱ¼äÒÔºÁÃëΪµ¥Î» --> </set>
4.4 rotate »Ãæ×ªÒÆÐýת¶¯»Ð§¹û
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <rotate android:duration="3000" android:fromDegrees="0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="50%" android:toDegrees="+350" /> <!-- rotate Ðýת¶¯»Ð§¹û ÊôÐÔ£ºinterpolator Ö¸¶¨Ò»¸ö¶¯»µÄ²åÈëÆ÷ ÔÚÎÒÊÔÑé¹ý³ÌÖУ¬Ê¹ÓÃandroid.res.animÖеÄ×ÊԴʱºò·¢ÏÖ ÓÐÈýÖÖ¶¯»²åÈëÆ÷: accelerate_decelerate_interpolator ¼ÓËÙ-¼õËÙ ¶¯»²åÈëÆ÷ accelerate_interpolator ¼ÓËÙ-¶¯»²åÈëÆ÷ decelerate_interpolator ¼õËÙ- ¶¯»²åÈëÆ÷ ÆäËûµÄÊôÓÚÌØ¶¨µÄ¶¯»Ð§¹û ¸¡µãÊýÐÍÖµ: fromDegrees ÊôÐÔΪ¶¯»ÆðʼʱÎï¼þµÄ½Ç¶È toDegrees ÊôÐÔΪ¶¯»½áÊøÊ±Îï¼þÐýתµÄ½Ç¶È ¿ÉÒÔ´óÓÚ360¶È ˵Ã÷: µ±½Ç¶ÈΪ¸ºÊý——±íÊ¾ÄæÊ±ÕëÐýת µ±½Ç¶ÈΪÕýÊý——±íʾ˳ʱÕëÐýת (¸ºÊýfrom——toÕýÊý:˳ʱÕëÐýת) (¸ºÊýfrom——to¸ºÊý:ÄæÊ±ÕëÐýת) (ÕýÊýfrom——toÕýÊý:˳ʱÕëÐýת) (ÕýÊýfrom——to¸ºÊý:ÄæÊ±ÕëÐýת) pivotX ÊôÐÔΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄX×ø±êµÄ¿ªÊ¼Î»Öà pivotY ÊôÐÔΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄY×ø±êµÄ¿ªÊ¼Î»Öà ˵Ã÷: ÒÔÉÏÁ½¸öÊôÐÔÖµ ´Ó0%-100%ÖÐȡֵ 50%ΪÎï¼þµÄX»òY·½Ïò×ø±êÉϵÄÖеãλÖà ³¤ÕûÐÍÖµ£º duration ÊôÐÔΪ¶¯»³ÖÐøÊ±¼ä ˵Ã÷: ʱ¼äÒÔºÁÃëΪµ¥Î» --> </set>
5.ÈçºÎʹÓÃXMLÖе͝»Ð§¹û
public static Animation loadAnimation (Context context, int id) //µÚÒ»¸ö²ÎÊýContextΪ³ÌÐòµÄÉÏÏÂÎÄ //µÚ¶þ¸ö²ÎÊýidΪ¶¯»XMLÎļþµÄÒýÓà //Àý×Ó£º myAnimation=AnimationUtils.loadAnimation(this,R.anim.my_anim); //ʹÓÃAnimationUtilsÀàµÄ¾²Ì¬·½·¨loadAnimation()À´¼ÓÔØXMLÖе͝»XMLÎļþ
6.ÈçºÎʹÓÃXMLÖе͝»Ð§¹û
//ÔÚ´úÂëÖж¨Òå ¶¯»ÊµÀý¶ÔÏó private Animation myAnimation_Alpha; private Animation myAnimation_Scale; private Animation myAnimation_Translate; private Animation myAnimation_Rotate; //¸ù¾Ý¸÷×ԵĹ¹Ôì·½·¨À´³õʼ»¯Ò»¸öʵÀý¶ÔÏó myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f); myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f); myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
7.Android¶¯»½âÎö--JavaCode
7.1 AlphaAnimation
¢Ù¡¡AlphaAnimationÀà¶ÔÏó¶¨Òå
private AlphaAnimation myAnimation_Alpha
¢Ú¡¡AlphaAnimationÀà¶ÔÏó¹¹Ôì
//µÚÒ»¸ö²ÎÊýfromAlphaΪ ¶¯»¿ªÊ¼Ê±ºò͸Ã÷¶È //µÚ¶þ¸ö²ÎÊýtoAlphaΪ ¶¯»½áÊøÊ±ºò͸Ã÷¶È AlphaAnimation(float fromAlpha, float toAlpha) //˵Ã÷:0.0±íʾÍêȫ͸Ã÷,1.0±íʾÍêÈ«²»Í¸Ã÷ myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
¢Û¡¡ÉèÖö¯»³ÖÐøÊ±¼ä
//ÉèÖÃʱ¼ä³ÖÐøÊ±¼äΪ 5000ºÁÃë myAnimation_Alpha.setDuration(5000);
7.2 ScaleAnimation
¢Ù¡¡ScaleAnimationÀà¶ÔÏó¶¨Òå
private AlphaAnimation myAnimation_Alpha;
¢Ú¡¡ScaleAnimationÀà¶ÔÏó¹¹Ôì
ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) //µÚÒ»¸ö²ÎÊýfromXΪ¶¯»Æðʼʱ X×ø±êÉϵÄÉìËõ³ß´ç //µÚ¶þ¸ö²ÎÊýtoXΪ¶¯»½áÊøÊ± X×ø±êÉϵÄÉìËõ³ß´ç //µÚÈý¸ö²ÎÊýfromYΪ¶¯»ÆðʼʱY×ø±êÉϵÄÉìËõ³ß´ç //µÚËĸö²ÎÊýtoYΪ¶¯»½áÊøÊ±Y×ø±êÉϵÄÉìËõ³ß´ç //µÚÎå¸ö²ÎÊýpivotXTypeΪ¶¯»ÔÚXÖáÏà¶ÔÓÚÎï¼þλÖÃÀàÐÍ //µÚÁù¸ö²ÎÊýpivotXValueΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄX×ø±êµÄ¿ªÊ¼Î»Öà //µÚÆß¸ö²ÎÊýpivotXTypeΪ¶¯»ÔÚYÖáÏà¶ÔÓÚÎï¼þλÖÃÀàÐÍ //µÚ°Ë¸ö²ÎÊýpivotYValueΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄY×ø±êµÄ¿ªÊ¼Î»Öà myAnimation_Scale=new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
¢Û¡¡ÉèÖö¯»³ÖÐøÊ±¼ä
//ÉèÖÃʱ¼ä³ÖÐøÊ±¼äΪ 700ºÁÃë myAnimation_Scale.setDuration(700);
7.3 TranslateAnimation
¢Ù¡¡TranslateAnimationÀà¶ÔÏó¶¨Òå
private AlphaAnimation myAnimation_Alpha;
¢Ú¡¡TranslateAnimationÀà¶ÔÏó¹¹Ôì
//µÚÒ»¸ö²ÎÊýfromXDeltaΪ¶¯»Æðʼʱ X×ø±êÉϵÄÒÆ¶¯Î»Öà //µÚ¶þ¸ö²ÎÊýtoXDeltaΪ¶¯»½áÊøÊ± X×ø±êÉϵÄÒÆ¶¯Î»Öà //µÚÈý¸ö²ÎÊýfromYDeltaΪ¶¯»ÆðʼʱY×ø±êÉϵÄÒÆ¶¯Î»Öà //µÚËĸö²ÎÊýtoYDeltaΪ¶¯»½áÊøÊ±Y×ø±êÉϵÄÒÆ¶¯Î»Öà TranslateAnimation(float fromXDelta, float toXDelta,float fromYDelta, float toYDelta)
¢Û¡¡ÉèÖö¯»³ÖÐøÊ±¼ä
//ÉèÖÃʱ¼ä³ÖÐøÊ±¼äΪ 2000ºÁÃë myAnimation_Translate.setDuration(2000);
7.4 RotateAnimation
¢Ù¡¡RotateAnimationÀà¶ÔÏó¶¨Òå
private AlphaAnimation myAnimation_Alpha;
¢Ú¡¡RotateAnimationÀà¶ÔÏó¹¹Ôì
RotateAnimation(float fromDegrees, float toDegrees,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) //µÚÒ»¸ö²ÎÊýfromDegreesΪ¶¯»ÆðʼʱµÄÐýת½Ç¶È //µÚ¶þ¸ö²ÎÊýtoDegreesΪ¶¯»Ðýתµ½µÄ½Ç¶È //µÚÈý¸ö²ÎÊýpivotXTypeΪ¶¯»ÔÚXÖáÏà¶ÔÓÚÎï¼þλÖÃÀàÐÍ //µÚËĸö²ÎÊýpivotXValueΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄX×ø±êµÄ¿ªÊ¼Î»Öà //µÚÎå¸ö²ÎÊýpivotXTypeΪ¶¯»ÔÚYÖáÏà¶ÔÓÚÎï¼þλÖÃÀàÐÍ //µÚÁù¸ö²ÎÊýpivotYValueΪ¶¯»Ïà¶ÔÓÚÎï¼þµÄY×ø±êµÄ¿ªÊ¼Î»Öà myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
¢Ú¡¡RotateAnimationÀà¶ÔÏó¹¹Ôì
//ÉèÖÃʱ¼ä³ÖÐøÊ±¼äΪ 3000ºÁÃë myAnimation_Rotate.setDuration(3000);
8.ÈçºÎʹÓÃJava´úÂëÖе͝»Ð§¹û
ʹÓôÓView¸¸Àà¼Ì³Ð¹ýÀ´µÄ·½·¨startAnimation()À´ÎªView»òÊÇ×ÓÀàViewµÈµÈÌí¼ÓÒ»¸ö¶¯»Ð§¹û
public void startAnimation (Animation animation)
9.»¹ÊÇÀ´¸öÀõ×Ó°É
9.1 ʹÓÃXMLÎļþ·½Ê½
¢ÙЧ¹ûͼÈçÏ£º

¢ÚÔÚXMLÎļþÖж¨Ò嶯»£¬Ç°ÃæÒÑÌá¼°
¢ÛÖ÷½çÃæ²¼¾Ö£¬ÕâûɶºÃ˵µÄ£¬ºÜ¼òµ¥ o(∩_∩)o
¢ÜÖ÷½çÃæÂß¼´úÂ룬Ö÷Òª¾ÍÊÇÕâ¸öÁË£¬¿ØÖƶ¯»ÏÔʾ
package com.yanis.base; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; public class AnimationActivity extends Activity implements OnClickListener { private ImageView imgPic; private Button btnAlpha, btnScale, btnTranslate, btnRotate; private Animation myAnimation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animation); intiView(); initData(); } private void intiView() { imgPic = (ImageView) findViewById(R.id.imgPic); btnAlpha = (Button) findViewById(R.id.btnAlpha); btnScale = (Button) findViewById(R.id.btnScale); btnTranslate = (Button) findViewById(R.id.btnTranslate); btnRotate = (Button) findViewById(R.id.btnRotate); } private void initData() { btnAlpha.setOnClickListener(this); btnScale.setOnClickListener(this); btnTranslate.setOnClickListener(this); btnRotate.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnAlpha: myAnimation =AnimationUtils.loadAnimation(this, R.anim.alpha_anim); imgPic.startAnimation(myAnimation); break; case R.id.btnScale: myAnimation =AnimationUtils.loadAnimation(this, R.anim.scale_anim); imgPic.startAnimation(myAnimation); break; case R.id.btnTranslate: myAnimation =AnimationUtils.loadAnimation(this, R.anim.translate_anim); imgPic.startAnimation(myAnimation); break; case R.id.btnRotate: myAnimation = AnimationUtils .loadAnimation(this, R.anim.rotate_anim); imgPic.startAnimation(myAnimation); break; } } }
9.2 ʹÓÃJava´úÂ뷽ʽ
²©ÎÄ ÓÎÏ·¿ª·¢»ù´¡£¨¶¯»£© ÖÐÓÐʵÀý˵Ã÷£¬´Ë´¦²»ÔÙ׸Êö¡£
10. ÓÃAnimation-listʵÏÖÖðÖ¡¶¯»
Àõ×ÓЧ¹ûͼÈçÏ£º

²½ÖèÈçÏ£º
¢ÙÔÚres/drawableĿ¼Ìí¼ÓÍ¼Æ¬ËØ²Ä

¢ÚÔÚdrawableÎļþ¼ÐÖÐÌí¼Ó¶¯»Animation-listÖ¡²¼¾ÖÎļþ
<?xml version="1.0" encoding="utf-8"?> <!-- ¸ù±êǩΪanimation-list£¬ÆäÖÐoneshot´ú±í×ÅÊÇ·ñֻչʾһ±é£¬ÉèÖÃΪfalse»á²»Í£µÄÑ»·²¥·Å¶¯» ¸ù±êǩϣ¬Í¨¹ýitem±êÇ©¶Ô¶¯»ÖеÄÿһ¸öͼƬ½øÐÐÉùÃ÷ android:duration ±íʾչʾËùÓõĸÃͼƬµÄʱ¼ä³¤¶È --> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@drawable/cmmusic_progress_1" android:duration="150"> </item> <item android:drawable="@drawable/cmmusic_progress_2" android:duration="150"> </item> <item android:drawable="@drawable/cmmusic_progress_3" android:duration="150"> </item> <item android:drawable="@drawable/cmmusic_progress_4" android:duration="150"> </item> <item android:drawable="@drawable/cmmusic_progress_5" android:duration="150"> </item> <item android:drawable="@drawable/cmmusic_progress_6" android:duration="150"> </item> <item android:drawable="@drawable/cmmusic_progress_7" android:duration="150"> </item> <item android:drawable="@drawable/cmmusic_progress_8" android:duration="150"> </item> </animation-list>
¢ÛÖ÷½çÃæÒ³Ãæ²¼¾ÖÉèÖã¬Ì«¼òµ¥£¬²»×¸ÊöÁË
¢ÜÖ÷½çÃæ´úÂëÈçÏ£º
package com.yanis.base; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class AnimationActivity extends Activity implements OnClickListener { private ImageView imgPic; private Button btnStart, btnStop; private AnimationDrawable animationDrawable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animation); intiView(); initData(); } private void intiView() { imgPic = (ImageView) findViewById(R.id.imgPic); btnStart = (Button) findViewById(R.id.btnStart); btnStop = (Button) findViewById(R.id.btnStop); } private void initData() { btnStart.setOnClickListener(this); btnStop.setOnClickListener(this); //Sets a drawable as the content of this ImageView. imgPic.setImageResource(R.drawable.loading_anim); //¸ø¶¯»×ÊÔ´¸³Öµ animationDrawable= (AnimationDrawable) imgPic.getDrawable(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnStart: animationDrawable.start();//¿ªÊ¼ break; case R.id.btnStop: animationDrawable.stop(); //Í£Ö¹ break; } } }
±¾ÎĵØÖ·£ºhttp://www.cnblogs.com/yc-755909659/p/4290114.html
¹ØÓÚ¡¾Android »ù´¡¡¿Animation ¶¯»½éÉܺÍʵÏÖµÄÏà¹ØÌÖÂÛÈçÏ£º
¡¡¡¡Ïà¹ØÎÊÌ⣺androidÖе͝»ÓÐÄļ¸À࣬ËüÃǵÄÌØµãºÍÇø±ðÊÇʲô£¿
¡¡¡¡´ð£ºÔÚandroid.view.animation°üÖÐÓÐËÄÖÖ»ù±¾µÄ¶¯» £¬Í¸Ã÷£¯ÉìËõ£¯Òƶ¯£¯Ðýת¡£¶¯»ÀàÐÍ AndroidµÄanimationÓÉËÄÖÖÀàÐÍ×é³É XMLÖÐ alpha½¥±ä͸Ã÷¶È¶¯»Ð§¹ûscale½¥±ä³ß´çÉìËõ¶¯»Ð§¹ûtranslate»Ãæ×ª»»Î»ÖÃÒÆ¶¯¶¯»Ð§¹ûrotate»Ãæ×ªÒÆÐýת¶¯»Ð§¹ûJ... >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺androidת³¡¶¯»windowAnimationºÍActivityAnimati...
¡¡¡¡´ð£ºÇø±ðÖ÷ÒªÈçÏ 1.windowAnimation°üÀ¨windowEnterAnimationºÍwindowExitAnimation£»ActivityAnimation°üº¬android:activityOpenEnterAnimation£¬android:activityOpenExitAnimation£¬android:activityCloseEnterAnimationºÍandroid:activityClose... >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺Android¶¯»ÔõôʵÏÖ£¿
¡¡¡¡´ð£ºAnimationÖ÷ÒªÓÐÁ½ÖÖ¶¯»Ä£Ê½£º Ò»ÖÖÊÇtweened animation(½¥±ä¶¯») XMLÖÐJavaCodealphaAlphaAnimationscaleScaleAnimation Ò»ÖÖÊÇframe by frame(»Ãæ×ª»»¶¯») XMLÖÐJavaCodetranslateTranslateAnimationrotateRotateAnimation >>Ïêϸ
- ÆÀÂÛÁÐ±í£¨ÍøÓÑÆÀÂÛ½ö¹©ÍøÓѱí´ï¸öÈË¿´·¨£¬²¢²»±íÃ÷±¾Õ¾Í¬ÒâÆä¹Ûµã»ò֤ʵÆäÃèÊö£©
-
