您好,登錄后才能下訂單哦!
使用TransitionDrawable漸變切換多張圖片,供大家參考,具體內容如下
1、定義變量
private int change = 0;//記錄下標 private int[] ids = new int[]{R.drawable.anim_one, R.drawable.anim_two, R.drawable.anim_three}; private Drawable[] drawables;//圖片集合 private Thread mThread;//線程 private boolean mThreadFlag = true;//線程結束標志符
2、填充圖片
private void initDrawableView() { //填充圖片 drawables = new Drawable[ids.length]; for (int i = 0; i < ids.length; i++) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { drawables[i] = getDrawable(ids[i]); } else { drawables[i] = getResources().getDrawable(ids[i]); } } }
3、定義hander
private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { int duration = msg.arg1; TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[]{drawables[change % ids.length], drawables[(change + 1) % ids.length]}); change++;//改變標識位置 repeatPlay.setBackground(transitionDrawable); transitionDrawable.startTransition(duration); return false; } });
4、開啟線程發送消息,讓transition一直在改變
private class MyRunnable implements Runnable { @Override public void run() { //這個while(true)是做死循環 while (mThreadFlag) { int duration = 5000;//改變的間隔 Message message = mHandler.obtainMessage(); message.arg1 = duration; mHandler.sendMessage(message); try { Thread.sleep(duration); //隔duration秒發送一次 } catch (InterruptedException e) { e.printStackTrace(); } } } }
5、在onCreate()中開啟線程,改變transition,切換圖片
mThread = new Thread(new MyRunnable()); mThread.start();
6、在onDestroy()中結束線程
mThreadFlag = false;//結束線程
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。