2011-04-16 107 views
1

我的代碼創建一個ImageSwitcher:不能讓Android ImageSwitcher背景透明

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="#FFFFFF"  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
<Gallery 
    android:id="@+id/Gallery01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"></Gallery> 
<ImageSwitcher 
    android:id="@+id/ImageSwitcher01" 
    android:background="@android:color/transparent" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
</ImageSwitcher> 
</LinearLayout> 

但是當我運行這個,這個ImageSwitcher背景仍是黑色的,而不是如我所料transprent。我如何解決它?

enter image description here

+0

能任何人都可以幫助我:( – anticafe 2011-04-18 03:52:54

+0

你應該接受一個答案。你試過安德魯建議的嗎? – Namratha 2012-09-14 12:18:39

回答

1

作爲解決此問題的,我用了ViewFlipper代替ImageSwitcher。 我只想在預定義的圖像之間進行動畫處理,所以ViewFlipper對我來說可以。 我還沒有嘗試,但我認爲你可以使用2個圖像瀏覽器,在下一個視圖上設置正確的圖像,並調用viewflipper.showNext()。

編輯:最後,我不得不做我在上面寫的項目,我正在努力,它的工作原理。

在layout.xml您有:

<ViewFlipper 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:id="@+id/viewFlipper"> 
<ImageView 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:src="@drawable/market_product01" 
    android:id="@+id/imgFirst"> 
</ImageView> 
<ImageView 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:id="@+id/imgSecond"> 
</ImageView> 
</ViewFlipper> 

然後創建一個處理圖像開關類:

public class MyImageViewSwitcher { 

private ViewFlipper flipper; 
private ImageView[] views; 
private int currentView = 0; 

public MyImageViewSwitcher(ViewFlipper flipper, ImageView first, ImageView second) { 
    currentView = 0; 
    this.flipper = flipper; 
    views = new ImageView[2]; 
    views[0] = first; 
    views[1] = second; 
} 

public void setImage(Drawable image) { 
    currentView = (currentView + 1) % 2; 
    views[currentView].setImageDrawable(image); 
    flipper.showNext(); 
} 
} 

從你的活動,你建一個ImageViewSwitcher:

ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper); 
viewFlipper.setInAnimation(android.R.anim.fadeIn); 
viewFlipper.setOutAnimation(android.R.anim.fadeOut); 
ImageView imgFirst = (ImageView) findViewById(R.id.imgFirst); 
ImageView imgSecond = (ImageView) findViewById(R.id.imgSecond); 
this.imageSwitcher = new MyImageViewSwitcher(viewFlipper, imgFirst, imgSecond); 

每次你想改變你調用的方法的內容時:

imageSwitcher.setImage(Drawable d) 
2

當你去設定出廠之ImageSwitcher,是確保的ViewFactory返回一個透明背景:

myImageSwitcher.setFactory(new ViewFactory() { 
@Override 
    public View makeView() { 
     ImageView imageView = new ImageView(getActivity()); 
     imageView.setBackgroundColor(0x00000000); // <--- return transparent bg 
     imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
     imageView.setLayoutParams(new ImageSwitcher.LayoutParams(ImageSwitcher.LayoutParams.FILL_PARENT, ImageSwitcher.LayoutParams.FILL_PARENT)); 
     return imageView; 
    } 
}); 

問題解決了我。

+0

也爲我工作!謝謝! – Namratha 2012-09-14 12:16:48

0

設置ImageSwitcher控件的背景顏色不起作用。要取出黑色的背景,你只需要在裏面Imageswitcher每個視圖設置背景顏色爲透明:

_imageSwitcher.getCurrentView().setBackgroundColor(getResources().getColor(R.color.transparent)); 

這樣做對每次調用_imageSwitcher.setImageResource()和您完成:)