2016-03-28 9 views
1

gebe ich versuche, eine Steigung in ImageView geben. Ist es möglich zu tun? Wenn ja, wie?Wie man Slope ImageView in Android

Unter Bildanzeige genau das, was ich tun möchte. Ich habe die Steigung in ImageView markiert.

enter image description here

Vielen Dank für jede Art von Hilfe dieses

Antwort

2

Was Sie erreichen möchten, können Sie auf verschiedene Arten erreichen.

Erste Methode - Verwenden Sie ein Overlay-Bild

Dies ist wahrscheinlich das am meisten Straight-Forward-Verfahren, um dies zu realisieren. Erstellen Sie ein Bitmap oder ein Zeichen, das im Wesentlichen ein Dreieck mit der gewünschten Hintergrundfarbe ist (in Ihrem Beispiel dunkelrot), und geben Sie es an eine ImageView, die über Ihrem ursprünglichen ImageView ausgerichtet ist, nach unten ausgerichtet. Diese neue ImageView wird im Grunde den unteren Teil Ihrer ursprünglichen ImageView blockieren, so dass Sie den gewünschten Effekt.

Zweite Methode - Verwendung Bildmasken

Diese Methode ist etwas komplexer, aber die Notwendigkeit, mit einer zusätzlichen ImageView im Layout zu entfernen. Grundsätzlich bedeutet dies, dass Sie die Bitmap ein wenig bearbeiten müssen, bevor Sie sie auf ImageView setzen, und Sie benötigen eine zusätzliche Bitmap, die die Form des resultierenden Bildes definiert. Diese Bitmap wird die "Maske" Ihres Bildes sein. Click here, um ein Beispiel zu sehen, wie man das macht.

+0

Danke für die Antwort. Es funktioniert gut !!! Aber eine Bemerkung ist, dass wir ein Maskenbild erstellen müssen. Wir können das normale Bild nicht als Maskenbild verwenden. –

+0

Sie können Ihr Bild von unten verlinken: http://www166.lunapic.com/editor/?action=mask –

0

Versuchen Sie, mit API> 11

mImageView.setRotation(angle); 

mit API> = 11

Sie können es auch von xml gesetzt

android:rotation="90" 
+0

android verwenden: Drehung = „90“ ist nur Image drehen. Nicht länger. –

0

Sie können Image erweitern und außer Kraft setzen OnDraw Methode wie folgt:

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

, dass, falls Sie die Region mit etwas Farbe zu malen.

Andernfalls kann man die abgeschnittene Region definieren und canvas.clipPath(Path path) Methode