2016-04-11 133 views
1

我試圖將幀動畫設置爲Imageview。設置動畫後Imageview屬性丟失

imageAnim = (ImageView) rootView.findViewById(R.id.orderCards); 
imageAnim.setBackgroundResource(R.drawable.image_switcher_anim); 
imageAnim.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); 
anim = (AnimationDrawable) imageAnim.getBackground(); 
anim.start(); 

所有的圖像視圖屬性,如高度寬度,縮放類型都會丟失。 我明白這是因爲設置動畫爲背景資源,圖像將顯示無縮放類型。

我看到兩種可能性 有沒有設置動畫而不將其設置爲背景以避免此問題的方法? 或 像高度寬度等屬性可以設置圖像背景。

回答

0

試試這個:

imageAnim.invalidateDrawable(anim); 

這將重繪圖像視圖。

+0

NO ......它不幫助..它實際上消除了動畫和框架並沒有改變。 – Bags

0

我找到答案的另一個鏈接 Android animation with multiple jpeg files?

我們需要設置動畫文件夾中的動畫文件,將其設置爲源到ImageView的,getdrawable而不是getResourceBackground並將其分配給animationDrawable並啓動動畫。有了這個所有的圖像視圖的佈局屬性將保持。

XML代碼

<ImageView android:id="@+id/orderCards 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:scaleType="fitCenter" 
      android:adjustViewBounds="true" 
      android:src="@anim/image_switcher_anim"/> 

Java代碼的

imageAnim = (ImageView) rootView.findViewById(R.id.orderCards); 
       anim = (AnimationDrawable) imageAnim.getDrawable(); 
       imageAnim.post(run); 

Runnable run = new Runnable() { 
     @Override 
     public void run() { 
      anim.start(); 
     } 
    };