最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在 Android 項目工程中的 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ā)的時候播放。

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);
		//設(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的基本類

有時 調(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)文章

最新評論

托克托县| 旅游| 南木林县| 金阳县| 阜宁县| 周宁县| 永州市| 田阳县| 青铜峡市| 靖江市| 奉贤区| 清流县| 陆河县| 辰溪县| 平顶山市| 浦城县| 竹山县| 东辽县| 科尔| 平度市| 成武县| 通河县| 中西区| 昌黎县| 清镇市| 桦南县| 浪卡子县| 陇川县| 宝应县| 长武县| 彭山县| 涪陵区| 屯留县| 洛浦县| 常熟市| 江孜县| 龙南县| 吉木萨尔县| 闸北区| 佛冈县| 西城区|