Android結(jié)合xml實(shí)現(xiàn)幀動畫
1 創(chuàng)建 xml 動畫文件
在 Android 項(xiàng)目工程中的 drawable 目錄下創(chuàng)建動畫文件,如我這里創(chuàng)建的 loading.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/ani_1"
android:duration="800" />
<item
android:drawable="@mipmap/ani_2"
android:duration="800" />
<item
android:drawable="@mipmap/ani_3"
android:duration="800" />
<item
android:drawable="@mipmap/ani_4"
android:duration="800" />
<item
android:drawable="@mipmap/ani_5"
android:duration="800" />
<item
android:drawable="@mipmap/ani_6"
android:duration="800" />
<item
android:drawable="@mipmap/ani_7"
android:duration="800" />
<item
android:drawable="@mipmap/ani_8"
android:duration="800" />
</animation-list>
設(shè)置android:oneshot屬性為true,表示此次動畫只執(zhí)行一次,最后停留在最后一幀。設(shè)置為false則動畫循環(huán)播放。文件可以添加為Image背景,觸發(fā)的時(shí)候播放。
2 加載使用
在你的 Activity 中,直接將這個(gè)動畫文件使用一個(gè) ImageView 來加載顯示,代碼如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView lImageView = findViewById(R.id.imageview);
//設(shè)置圖片
lImageView.setImageResource(R.drawable.loading);
//動
AnimationDrawable lAnimationDrawable = (AnimationDrawable) lImageView.getDrawable();
lAnimationDrawable.start();
}
}
3 聊一聊 AnimationDrawable
Drawable animation可以加載Drawable資源實(shí)現(xiàn)幀動畫。AnimationDrawable是實(shí)現(xiàn)Drawable animations的基本類
有時(shí) 調(diào)用了 AnimationDrawable.start方法來啟動動畫,但是并沒有出現(xiàn)效果。
3.1 使用 ViewTreeObserver
ViewTreeObserver.OnPreDrawListener lOnPreDrawListener=new ViewTreeObserver.OnPreDrawListener(){
@Override
public boolean onPreDraw() {
lAnimationDrawable.start();
return true; //注意此行返回的值
}
};
//綁定視圖觀察者
lImageView.getViewTreeObserver().addOnPreDrawListener(lOnPreDrawListener);
3.2 使用 RunAnim
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start3();
}
private AnimationDrawable mAnimationDrawable;
public void start3() {
ImageView lImageView = findViewById(R.id.imageview);
//設(shè)置圖片
lImageView.setImageResource(R.drawable.loading);
//動
mAnimationDrawable = (AnimationDrawable) lImageView.getDrawable();
RunAnim runAnim = new RunAnim();
runAnim.execute("");
}
class RunAnim extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
if (!mAnimationDrawable.isRunning()) {
mAnimationDrawable.stop();
mAnimationDrawable.start();
}
return "";
}
}
}
3.3 在 Activity 的 onWindowFocusChanged 中調(diào)用
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
mAnimationDrawable.start();
super.onWindowFocusChanged(hasFocus);
}
完畢
以上就是Android結(jié)合xml實(shí)現(xiàn)幀動畫的詳細(xì)內(nèi)容,更多關(guān)于Android 實(shí)現(xiàn)幀動畫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android BroadcastReceiver廣播注冊方式總結(jié)
這篇文章主要介紹了Android BroadcastReceiver廣播注冊方式總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-01-01
Android編程實(shí)現(xiàn)Dialog窗體監(jiān)聽的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)Dialog窗體監(jiān)聽的方法,結(jié)合實(shí)例形式分析了Android針對Dialog對話框窗體事件監(jiān)聽與響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-03-03
百度地圖API提示230 錯誤app scode碼校驗(yàn)失敗的解決辦法
筆者近2天在 Android Studio上玩了一下百度地圖,碰到了常見的"230錯誤 APP Scode校驗(yàn)失敗",下面我來介紹一下具體的解決辦法2016-01-01
Android 實(shí)現(xiàn)WebView點(diǎn)擊圖片查看大圖列表及圖片保存功能
這篇文章主要介紹了Android 實(shí)現(xiàn)WebView點(diǎn)擊圖片查看大圖列表及圖片保存功能,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
Android BSearchEdit 搜索結(jié)果選擇框的實(shí)例代碼
EditText搜索結(jié)果下拉框、自動or回調(diào)模式、可diy、使用超簡便。這篇文章主要介紹了Android BSearchEdit 搜索結(jié)果選擇框的實(shí)例代碼,需要的朋友可以參考下2019-10-10
Android手勢密碼--設(shè)置和校驗(yàn)功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android手勢密碼--設(shè)置和校驗(yàn)功能的實(shí)現(xiàn)代碼,非常不錯,具有一定的參考校驗(yàn)價(jià)值,需要的朋友可以參考下2018-05-05

