2016-03-25 20 views
-1

İşte yapmak istediğim şeyin bir resim:Birden çok görüntü katmanlama efekti dinamik olarak nasıl elde edebilirim?

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

tüm resimler farklıdır ve ben 2-10 arasında olabilir.

Şimdi sahip kodudur:

:

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); 
     } 

ve sonuç (Picuris [] benim Uri en dizisidir) (bayrak resimlerin # olan)

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

Sorunlar yeniden boyutlandırılıyor ve İstediğim gibi ekran tarafından kesilmiyor ve altta garip bir şeyler oluyor.

+0

hiçbir şey değişmedi:/ –

+0

Yaptığım şey buydu: lp.setMargins (50 * i, 50 * i, 0, 0); Burada 0 <= i <5, ve yukarıdaki resimde gördüğünüz gibi, 0,50,100,150,200 kenar boşluklarında 5 fotoğraf var. Sorun şu ki, sağ ve alt kenarlara sığacak şekilde yeniden boyutlandırılıyorlar ve ihtiyaç duydukları gibi gitmiyorlar. Üzgünüz, fotoğrafta net olmasaydı, etrafta bir kenarlık gibi bir şey eklemeyi denemedim ve fotoğrafların arkasındaki gölgeyi –

+0

sanırım Yeniden boyutlandırmayı yapıyor 'RelativeLayout'. “RelativeLayout”, “düşünüyor” ın doğru olduğunu düşündüğü bir şeyleri ortaya çıkarmak için çocuğunun 'View's'ını manipüle ediyor. Bunun yerine bir "FrameLayout" kullanmayı deneyebilirsiniz. –

cevap

0

Neden Stackview kullanmıyorsunuz? temel olarak, sizi progrimatik bir görünüm oluşturmanıza yol açmadan kesin smae sonucunu elde edeceksiniz .... tekerleği yeniden icat etmek zorunda değilsiniz ...

0

Tüm resimlerin farklı olduğu ve bunların arasında 2-10

sana LayerDrawable kullanmak ve örnek setLayerInset için her katmanı mahsup gerektiğini düşünüyorum. Ya da arka planın tamamını xml içinde oluşturup viewgroup numarasına ayarlayın. FrameLayout ve RelativeLayout'u kullanmamanız önerilir, çünkü ikiniz de durumunuza çok fazla RAM kullanın.

İlgili konular