2016-03-25 53 views
-1

這裏是我想要做的一個畫面:如何動態實現多圖像分層效果?

http://i.stack.imgur.com/pQO2r.png

,所有的照片都是不同的,我可以2-10之間有。

我現在的代碼是:

(標誌圖片#)

(picUris []是我的URI的數組)

RelativeLayout imgLayout = (RelativeLayout) findViewById(R.id.RelativeLayoutPictures); 
     for (int i = 0; i < flag; i++) 
     { 
      ImageView iv = new ImageView(this); 
      iv.setImageURI(picUris[i]); 

      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
      lp.setMargins(50*i, 50*i, 0, 0); 
      lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
      lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

      imgLayout.addView(iv, lp); 
     } 

和結果:

http://i.stack.imgur.com/pYD7x.jpg

問題在於它正在調整大小,不會像我想要的那樣被屏幕截斷,底部會出現一些奇怪的現象。

+0

沒有什麼改變:/ –

+0

這就是我做的:lp.setMargins(50 * i,50 * i,0,0);其中0 <= i <5,你可以在上面的圖片中看到它,在5,50,100,150,200的邊緣有5張照片。問題是,他們正在調整大小,以適應右側和底部邊緣,而不是像他們所需要的那樣。對不起,如果它不清楚在圖片中,我還沒有嘗試添加任何東西,但沒有像周圍的邊框和陰影背後的影子 –

+0

我相信這是'RelativeLayout'做大小調整。 「RelativeLayout」做了很多操作其子View的功能,以「認爲」是正確的方式佈置事物。您可以嘗試使用「FrameLayout」。 –

回答

0

爲什麼不使用Stackview?基本上它會達到確切的smae結果,而不會讓你創造視圖....您不必重新發明輪子...

0

其中所有圖片都不同,我可以有2-10

我認爲你應該使用LayerDrawable並通過例如setLayerInset偏移每層。或者在xml中創建所有背景並將其設置爲您的viewgroup。我不建議你使用FrameLayoutRelativeLayout,因爲他們在你的情況下都使用了很多RAM