Android TransitionDrawable:過渡動畫Drawable
阿新 • • 發佈:2019-01-22
Android TransitionDrawable實現一種可以用動畫表示的Drawable。寫一個例子。
package zhangphil.app; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //定義一個過渡drawable陣列,最後一個drawable:drawables[n-1]是最終的顯示形式 //第一個是開始 Drawable[] drawables=new Drawable[]{new ColorDrawable(Color.TRANSPARENT),new ColorDrawable(Color.RED)}; TransitionDrawable td=new TransitionDrawable(drawables); ImageView image = (ImageView) findViewById(R.id.imageView); image.setImageDrawable(td); //交叉淡入樣式 td.setCrossFadeEnabled(true); //開始執行動畫,從設定的時間內,緩慢的從TransitionDrawable構造時候的陣列第一個drawable(drawables[0])漸變成最後陣列最後一個drawable(drawables[n-1]) //動畫執行結束後,最終顯示的是最後一個drawables[n-1] td.startTransition(500); } }
如果要用xml實現TransitionDrawable,需要在drawable目錄下新建一個xml程式碼檔案,比如transition.xml,程式碼:
<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/transparent" /> <item android:drawable="@android:color/holo_red_dark"/> </transition>
上層Java程式碼變成:
TransitionDrawable transition = (TransitionDrawable)getResources().getDrawable(R.drawable.transition); ImageView image = (ImageView) findViewById(R.id.imageView); image.setImageDrawable(transition); transition.setCrossFadeEnabled(true); transition.startTransition(500);