最新国产好看的视频,伊人天堂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 項(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ā)的時候播放。

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)文章

最新評論

梧州市| 尼玛县| 太和县| 九龙城区| 南宁市| 杨浦区| 孟连| 苗栗市| 隆尧县| 道孚县| 江门市| 小金县| 准格尔旗| 交口县| 永吉县| 洛阳市| 桐梓县| 德江县| 赫章县| 公安县| 襄樊市| 灵石县| 视频| 区。| 遵义县| 乐昌市| 怀集县| 昌图县| 南开区| 溆浦县| 沧州市| 潍坊市| 遵化市| 道孚县| 叶城县| 安福县| 台北市| 桃园市| 博野县| 通江县| 五大连池市|