Androidフレームアニメーション、移動位置、スケール、透明度の変更などのアニメーション解説


1.苦しい需要はまた来て、いくつかのアニメーションの効果を実现する必要があって、第1はgifピクチャーを放送することを思い付いて、しかしこのようにパケットの资源を占めて、しかも鲜明度は高くなくて、そこでプログラムの実现を考えて、自分でフレームのアニメーション+ズーム+移动+透明度でいくつかの望みの効果を実现して、ここでみんなと分かち合います
2.効果図は以下の通り.
     
3.フレームアニメーション実装コード
    1).まずフレームごとに表示されるImageViewコントロールを取得し、すべてのフレームをAnimationDrawableオブジェクトに配置してアニメーションを開き、handleで2秒遅延してアニメーションを閉じます.
		ImageView ivFrame = (ImageView) findViewById(R.id.iv_frame);
		//              AnimationDrawable  
		final AnimationDrawable frameAnim = (AnimationDrawable) getResources().getDrawable(R.drawable.thank_you_boss_anim);
		ivFrame.setBackgroundDrawable(frameAnim);//  AnimationDrawable   ImageView   
		frameAnim.start();

		new Handler().postDelayed(new Runnable() {
			@Override
			public void run(){
				if (frameAnim != null && frameAnim.isRunning()) {//2       
					frameAnim.stop();
				}
			}
		},2000);

  2).thank_you_boss_anim.xmlすべてのフレームのレイアウトファイルフレームごとのピクチャ、フレームごとの時間を設定
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >
    <!--        ,Drawable img0,    300   -->
    <item  android:drawable="@drawable/icon_think_boss_one"   android:duration="100"/>
    <item android:drawable="@drawable/icon_think_boss_two"  android:duration="100"/>
    <item android:drawable="@drawable/icon_think_boss_three"  android:duration="100"/>
    <item  android:drawable="@drawable/icon_think_boss_four"  android:duration="300"/>
</animation-list>

4.フレームアニメーションと移動による透明度拡大効果
ダイアログを開き、背景設定が透明になり、フレームアニメーションとテキストピクチャにImageViewが表示され、2つのアニメーションが開きます.
	/**
	 *       
	 */
	private void thankTuhaoReward(){
		View view=LayoutInflater.from(this).inflate(R.layout.activity_thank_tuhao_reward,null);
		final Dialog tyrantDialog = new Dialog(this,R.style.selectorDialog);
		
		tyrantDialog.findViewById(R.id.iv_frame);
		
		tyrantDialog.setContentView(view); 
		tyrantDialog.setCanceledOnTouchOutside(true);
		
		ImageView ivFrame=(ImageView) tyrantDialog.findViewById(R.id.iv_frame);
		
		//              AnimationDrawable  
		final AnimationDrawable frameAnim=(AnimationDrawable) getResources().getDrawable(R.drawable.thank_you_tyrant_anim);
		ivFrame.setBackgroundDrawable(frameAnim);// AnimationDrawable   ImageView   
		frameAnim.start();
		
		ImageView playThinkOneText=(ImageView) tyrantDialog.findViewById(R.id.play_think_one_text);
		Animation anim = AnimationUtils.loadAnimation(this,R.anim.translate_thank_you_tyrant);
		playThinkOneText.startAnimation(anim);
		anim.setFillAfter(true);
		tyrantDialog.show();
		
		view.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				stop(frameAnim);
				tyrantDialog.cancel();
			}
		});
		
		anim.setAnimationListener(new AnimationListener() {
			@Override
			public void onAnimationStart(Animation animation) {}
			@Override
			public void onAnimationRepeat(Animation animation) {}
			@Override
			public void onAnimationEnd(Animation animation){
				stop(frameAnim);
				tyrantDialog.cancel();
			}
		});
	}
	
	/**
	 *     
	 */
	protected void stop(AnimationDrawable frameAnim) {
		if (frameAnim != null && frameAnim.isRunning()) {
			frameAnim.stop();
		}
	}

 
フレームアニメーションのレイアウトファイルは貼らないで、貼って移動して、スケールして、透明度のレイアウトファイルtranslateを変えます_thank_you_tyrant.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="1000"
        android:fromXDelta="30"
        android:fromYDelta="30"
        android:toXDelta="30"
        android:toYDelta="-120" />

    <alpha
        android:duration="2000"
        android:fromAlpha="0.4"
        android:toAlpha="1.0" />

    <scale
        android:duration="2000"
        android:fillAfter="false"
        android:fromXScale="0.4"
        android:fromYScale="0.4"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" />
    <!--
     translate         
           :
        fromXDelta          X          
        toXDelta            X      
        
        fromYDelta          Y      
        toYDelta            Y      
          :    fromXType toXType fromYType toYType   ,             
                   
            :
        duration           
          :              
    -->

</set>

クリックしてソースをダウンロード