中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android結合xml實現幀動畫的方法

發布時間:2021-05-23 18:44:27 來源:億速云 閱讀:262 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Android結合xml實現幀動畫的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1 創建 xml 動畫文件

在 Android 項目工程中的 drawable 目錄下創建動畫文件,如我這里創建的 loading.xml

Android結合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>

設置android:oneshot屬性為true,表示此次動畫只執行一次,最后停留在最后一幀。設置為false則動畫循環播放。文件可以添加為Image背景,觸發的時候播放。

2 加載使用

在你的 Activity 中,直接將這個動畫文件使用一個 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);
		//設置圖片
		lImageView.setImageResource(R.drawable.loading);
		//動
		AnimationDrawable lAnimationDrawable = (AnimationDrawable) lImageView.getDrawable();
		
		lAnimationDrawable.start();
		
	}
}

3 聊一聊 AnimationDrawable

Drawable animation可以加載Drawable資源實現幀動畫。AnimationDrawable是實現Drawable animations的基本類

有時 調用了 AnimationDrawable.start方法來啟動動畫,但是并沒有出現效果。

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);
		//設置圖片
		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 中調用

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
	mAnimationDrawable.start();
	super.onWindowFocusChanged(hasFocus);
}

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

關于“Android結合xml實現幀動畫的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

雷波县| 定陶县| 杂多县| 芜湖市| 南召县| 和田市| 封开县| 眉山市| 县级市| 贡嘎县| 开平市| 聊城市| 波密县| 汝城县| 呼玛县| 临泽县| 颍上县| 丹棱县| 台东市| 青浦区| 宜春市| 南宁市| 元阳县| 绥德县| 亚东县| 海晏县| 富蕴县| 北宁市| 睢宁县| 桐城市| 池州市| 元氏县| 东辽县| 六安市| 额敏县| 柞水县| 新郑市| 辉南县| 西乡县| 铅山县| 景东|