2016-03-28 26 views
1

ImageView numaralı telefona biraz eğim vermeye çalışıyorum. bunu yapmak mümkün mü? Öyleyse nasıl olacak?Android'de ImageView'e nasıl Eğim Verilir

Görüntünün altında tam olarak ne yapmak istediğimi göster. ImageView'da vurgulanmış eğim var. API ile

cevap

2

Neyi başarmaya çalışıyorsunuz, birkaç şekilde yapılabilir.

Birinci yöntem - Bu uygulamaya Bu muhtemelen bir bindirme imajını

en düz İleri yöntemini kullanın. İstenilen arka plan rengiyle (örneğinizde koyu kırmızı) bir üçgen oluşturabileceğiniz ya da çekilebilen bir bitmap oluşturun ve orijinal ImageView ürününüze, alt tarafa hizalanmış olan ImageView üzerine yerleştirin. Bu yeni ImageView, orijinal ImageView'un alt kısmını temel olarak engelleyecek ve size istenen etkiyi verecektir.

İkinci yöntem - Kullanım görüntü maskeleri

Bu yöntem biraz daha karmaşıktır, ama düzeninde ilave ImageView sahip olan ihtiyacı ortadan kaldıracaktır. Temel olarak, bitmap'i ImageView'da ayarlamaya başlamadan önce işleme koymanız gerektiği anlamına gelir ve sonuçta elde edilen görüntünün şeklini tanımlayan ek bir bitmap'e ihtiyacınız olacaktır. Bu bitmap, resminizin "maskesi" olacaktır. Bunun nasıl yapılacağına dair bir örnek görmek için Click here.

+0

Cevabınız için teşekkürler. İyi çalışıyor! ama bir açıklama, maske görüntüsü oluşturmamız gerektiğidir. Normal görüntüyü maske görüntüsü olarak kullanamayız. –

+0

Resminizi aşağıdaki linkten maskeleyebilirsiniz: http://www166.lunapic.com/editor/?action=mask –

0

bu deneyin yardımı her türlü

enter image description here

sayesinde API ile> 11

mImageView.setRotation(angle); 

> = 11

Ayrıca xml

den ayarlayabilirsiniz
android:rotation="90" 
+0

robot canvas.clipPath(Path path) yöntemi kullanabilir: rotasyon = "90", sadece ImageView dönmesi için. Artık değil. –

0

Sen ImageView genişletmek ve böyle yöntemi onDraw geçersiz kılabilirsiniz: durumunda bazı renk ile bölgeyi boyamak istiyorum

Paint paint=new Paint(); 
paint.setColor(Color.BLACK); 
@Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas);    
      Path p=new Path(); 
      //start from bottom left corner 
      p.moveTo(0,canvas.getHeight()); 
      //move to the offset 
      p.lineTo(canvas.getWidth(),YOUR_OFFSET); 
      //move to bottom right corner 
      p.lineTo(canvas.getWidth(),canvas.getHeight()); 
      //return to bottom left corner 
      p.lineTo(0,canvas.getHeight()); 
      //clsoe the path 
      p.close(); 
      canvas.drawPath(p,paint); 
     } 

söyledi.

aksi takdirde kesilmiş bölge tanımlayan ve