您好,登錄后才能下訂單哦!
逐幀動畫(Frame-by-frame Animations)顧名思義就是一幀接著一幀的播放圖片,就像放電影一樣。可以通過xml實現也可以通過java代碼實現。逐幀動畫適合實現比較簡單的動畫效果,如果要實現復雜動畫不太建議使用逐幀動畫。
xml方式實現:
step 1 : 在res/drawable目錄下一個文件sample_animlist.xml:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@mipmap/sample_1" android:duration="100" /> <item android:drawable="@mipmap/sample_2" android:duration="100" /> <item android:drawable="@mipmap/sample_3" android:duration="100" /> <item android:drawable="@mipmap/sample_4" android:duration="100" /> <item android:drawable="@mipmap/sample_5" android:duration="100" /> <item android:drawable="@mipmap/sample_6" android:duration="100" /> </animation-list>
動畫列表(animation-list)由一個或者多個item節點組成,item節點用來聲明一個動畫幀
drawable: 該幀的圖片資源
duration : 播放時間 單位為毫秒
oneshot : 是否只播放一次,true表示只會播放一次,false表示一直循環播放
step 2:
利用ImageView作為播放載體
<ImageView android:id="@+id/iv_ani" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/sample_animlist" />
step3: 在Activity實現初始化 、暫停、播放。
public class MainActivity extends AppCompatActivity { private ImageView iv_ani; private AnimationDrawable mAnimationDrawable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv_ani = (ImageView) findViewById(R.id.iv_ani); mAnimationDrawable = (AnimationDrawable) iv_ani.getDrawable(); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); //window初始化完畢 開始播放動畫 animationStart(); } @Override protected void onPause() { animationStop(); super.onPause(); } private void animationStart() { if (null != mAnimationDrawable) mAnimationDrawable.start();//開始播放 } private void animationStop() { if (null != mAnimationDrawable) mAnimationDrawable.stop();//暫停播放 } }
純Java方式實現
public class MainActivity extends AppCompatActivity { private ImageView iv_ani; private AnimationDrawable mAnimationDrawable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv_ani = (ImageView) findViewById(R.id.iv_ani); initAnimationDrawable(); } private void initAnimationDrawable(){ mAnimationDrawable = new AnimationDrawable(); for (int i = 1; i <= 4; i++) { int id = getResources().getIdentifier("sample_" + i, "mipmap", getPackageName()); Drawable drawable = getResources().getDrawable(id); mAnimationDrawable.addFrame(drawable, 100); } mAnimationDrawable.setOneShot(false); iv_ani.setImageDrawable(mAnimationDrawable); } }
addFrame(Drawable frame, int duration) : 添加一幀,并設置該幀顯示的持續時間
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。