2017-02-09 50 views
2

傾斜的長方形繪製我想創建矩形繪製然後旋轉這麼右上方出現傾斜,我最終將覆蓋超過圓角的形象,在努力之下創建圖像的副本,使用一些繪製enter image description here打造的Android XML

我希望使用XML使用,但它只是傾斜和邊緣從來沒有接觸對方

<?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> 

創建繪製形狀的自定義繪製對象:但我再次失敗,會愛任何幫助嗎?謝謝

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

回答

0

我想你需要的是一個VectorDrawable(見thisthis)。它將SVG表示爲XML。你可以用它來畫你最想任何形狀。這裏是繪製一個小盒子打開帶有圓角的,我已經使用了自定義的複選框的例子。

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> 

然後,您可以使用它像其他可繪製。

ImageView imageView = (ImageView)findViewById(R.id.view_for_open_box); 
imageView.setBackgroundResource(R.drawable.open_box); 

我的例子是一個簡單的例子,但這可以用來繪製非常複雜的形狀。有跡象表明,需要之前的API 19 &處理的兼容性問題。查看鏈接瞭解這些。