編輯:關於Android編程
逐幀動畫(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) : 添加一幀,並設置該幀顯示的持續時間
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
版本:1.0 日期:2014.8.6版權:© 2014 kince 轉載注明出處 使用過蘑菇街的用戶基本上都知道有一個加入購物車的動畫效果,此處不具體描述想知道
怎麼在安卓模擬器裡面安裝app?它不像別的軟件那樣一拉一拖就進去的,我開始也是這樣的,老是安裝不了,後來讓我嘗試了,我才知道。下面是我跟大家一起分享一下怎麼
Android手勢事件的沖突跟點擊事件的分發過程息息相關,由三個重要的方法來共同完成,分別是:dispatchTouchEvent、onInterceptTouchEve
一般來說在Android裡要實現樹形菜單,都是用ExpandableList(也有高手自己繼承ListView或者LinearLayout來做),但是Expandable