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