91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

万源市| 蛟河市| 静乐县| 城步| 若尔盖县| 关岭| 湘潭县| 海阳市| 南康市| 洱源县| 黄浦区| 响水县| 马关县| 上犹县| 灌南县| 茌平县| 九龙坡区| 玉山县| 杭锦后旗| 沙雅县| 襄樊市| 清河县| 永寿县| 大洼县| 玉门市| 建瓯市| 元谋县| 柳林县| 平果县| 琼中| 忻州市| 东平县| 商丘市| 新津县| 思茅市| 天柱县| 大厂| 同仁县| 马关县| 两当县| 黄龙县|