欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android結(jié)合xml實(shí)現(xiàn)幀動(dòng)畫

 更新時(shí)間:2021年05月22日 09:48:26   作者:早起的年輕人  
將一組動(dòng)作相近的圖片組合在一起,然后按照一定的時(shí)間來播放,就會(huì)形成一個(gè)動(dòng)畫,我們可以稱之為幀動(dòng)畫。在 Android 中可通過結(jié)合 xml 的方式來輕松實(shí)現(xiàn)。

1 創(chuàng)建 xml 動(dòng)畫文件

在 Android 項(xiàng)目工程中的 drawable 目錄下創(chuàng)建動(dò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,表示此次動(dòng)畫只執(zhí)行一次,最后停留在最后一幀。設(shè)置為false則動(dòng)畫循環(huán)播放。文件可以添加為Image背景,觸發(fā)的時(shí)候播放。

2 加載使用

在你的 Activity 中,直接將這個(gè)動(dòng)畫文件使用一個(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);
		//動(dòng)
		AnimationDrawable lAnimationDrawable = (AnimationDrawable) lImageView.getDrawable();
		
		lAnimationDrawable.start();
		
	}
}

3 聊一聊 AnimationDrawable

Drawable animation可以加載Drawable資源實(shí)現(xiàn)幀動(dòng)畫。AnimationDrawable是實(shí)現(xiàn)Drawable animations的基本類

有時(shí) 調(diào)用了 AnimationDrawable.start方法來啟動(dòng)動(dòng)畫,但是并沒有出現(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);
		//動(dòng)
		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)幀動(dòng)畫的詳細(xì)內(nèi)容,更多關(guān)于Android 實(shí)現(xiàn)幀動(dòng)畫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論