Androidフレームアニメーション、移動位置、スケール、透明度の変更などのアニメーション解説
4943 ワード
1.苦しい需要はまた来て、いくつかのアニメーションの効果を実现する必要があって、第1はgifピクチャーを放送することを思い付いて、しかしこのようにパケットの资源を占めて、しかも鲜明度は高くなくて、そこでプログラムの実现を考えて、自分でフレームのアニメーション+ズーム+移动+透明度でいくつかの望みの効果を実现して、ここでみんなと分かち合います
2.効果図は以下の通り.
3.フレームアニメーション実装コード
1).まずフレームごとに表示されるImageViewコントロールを取得し、すべてのフレームをAnimationDrawableオブジェクトに配置してアニメーションを開き、handleで2秒遅延してアニメーションを閉じます.
2).thank_you_boss_anim.xmlすべてのフレームのレイアウトファイルフレームごとのピクチャ、フレームごとの時間を設定
4.フレームアニメーションと移動による透明度拡大効果
ダイアログを開き、背景設定が透明になり、フレームアニメーションとテキストピクチャにImageViewが表示され、2つのアニメーションが開きます.
フレームアニメーションのレイアウトファイルは貼らないで、貼って移動して、スケールして、透明度のレイアウトファイルtranslateを変えます_thank_you_tyrant.xml
クリックしてソースをダウンロード
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>
クリックしてソースをダウンロード