2017-02-09 1 views
2

Ich möchte Rechteck zeichnen lassen dann drehen Sie es so oben rechts erscheinen schräg, würde ich schließlich über abgerundete Ecke Bild überlagern, in der Bemühung, eine Kopie des Bildes unten zu erstellen, mit einigen ziehbar enter image description hereErstellen Sie eine schräge Rechteck in Android Xml zeichnen

Uhr hofft mit Hilfe von xML, aber es nur schräg und Kante nie andere Seite berührt

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item > 
    <rotate 
     android:fromDegrees="19.5" 
     android:toDegrees="-19.5" 
     android:pivotX="-50%" 
     android:pivotY="0%" 
     > 
     <shape 
      android:shape="rectangle" > 
      <solid 
       android:color="@android:color/black" /> 
     </shape> 
    </rotate> 
</item> 

eine benutzerdefinierte drawable erstellen, die die Form zieht aber wieder scheitern i, würde jede mögliche Hilfe lieben? danke

@Override 
public void draw(Canvas canvas) { 
int width = this.getBounds().width(); 
int height = this.getBounds().height(); 
double angle = 19.5 * (Math.PI/180.0); 
double offsetX = height * Math.tan(angle); 

Path path = new Path(); 
Paint paint = new Paint(); 
path.moveTo(0, 0); 
path.lineTo(width, 0); 
path.lineTo(width, height); 
path.lineTo((int)offsetX, height); 
path.close(); 

paint.setColor(_color); 
paint.setStyle(Paint.Style.FILL); 
canvas.drawPath(path, paint); 
} 

Antwort

0

Ich denke, was Sie brauchen, ist ein VectorDrawable ist (siehe this und this). Es repräsentiert SVG als XML. Sie können es verwenden, um die meisten Formen zu zeichnen, die Sie möchten. Hier ist ein Beispiel, das eine kleine offene Box mit abgerundeten Ecken zeichnet, die ich für eine benutzerdefinierte CheckBox verwendet habe.

open_box.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="20dp" 
    android:width="20dp" 

    android:viewportWidth="400" 
    android:viewportHeight="400"> 

    <!-- the outside box --> 
    <!-- top line & top left corner --> 
    <path android:pathData="M 340 30 H 62 c -20 0 -35 15 -35 35 " 
     android:strokeColor="#000000" android:strokeWidth="20" /> 

    <!-- left line & bottom left corner --> 
    <path android:pathData="M 27 64 v271 c0 20 15 35 35 35 " 
     android:strokeColor="#000000" android:strokeWidth="20" /> 

    <!-- bottom line & bottom right corner --> 
    <path android:pathData="M 60 370 h275 c20 0 35 -15 35 -35" 
     android:strokeColor="#000000" android:strokeWidth="20" /> 

    <!-- right line & top right corner --> 
    <path android:pathData="M 370 336 v -271 c0 -20 -15 -35 -35 -35" 
     android:strokeColor="#000000" android:strokeWidth="20" /> 
</vector> 

Sie können es dann wie andere Drawables verwenden.

Mein Beispiel ist ein einfaches, aber das kann verwendet werden, um sehr komplexe Formen zu zeichnen. Es gibt Kompatibilitätsprobleme, die zuvor für API 19 & behandelt werden müssen. Siehe den Link, um mehr über diese zu erfahren.

Verwandte Themen