13

how can I create a trapezoid shape like below image ?

enter image description here

I don't want to use an image or 9.png .

S.M_Emamian
  • 17,005
  • 37
  • 135
  • 254

3 Answers3

17

Try this:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="292dp"
    android:height="172dp"
    android:viewportWidth="292"
    android:viewportHeight="172">

    <path
        android:strokeWidth="1.5"
        android:strokeMiterLimit="10"
        android:pathData="M 27.046 96.615 L 16.416 150.396 L 271.534 150.396 L 186.495 22.836 L 37.676 22.836 L 27.046 86.615 Z" />

    <path
        android:fillColor="#00ff00"
        android:strokeWidth="1.5"
        android:strokeMiterLimit="10"
        android:pathData="M 16.046 20.615 L 13.416 150.396 L 271.534 150.396 L 186.495 22.836 L 37.676 22.836 L 16.046 23.615 Z " />
</vector>

enter image description here

Suhayl SH
  • 1,213
  • 1
  • 11
  • 16
  • I recommend this answer. See my answer [here](http://stackoverflow.com/a/42145439/7292819) for links to documentation and an example which will give a little more idea on how to use this. – Gary99 Mar 28 '17 at 01:22
  • I wish someone can explain how to draw this kind vector shapes. – AkshayT May 09 '20 at 23:45
5

This class is a View that defines and draws a trapezoid ShapeDrawable. Thus the trapezoid, being a Drawable, can be used in backgrounds as well.

package com.stackoverflow.questions.q25768037;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.PathShape;
import android.util.AttributeSet;
import android.view.View;

public class TrapezoidView extends View {

    private ShapeDrawable mTrapezoid;

    public TrapezoidView(Context context, AttributeSet attrs) {
        super(context, attrs);

        Path path = new Path();
        path.moveTo(0.0f, 0.0f);
        path.lineTo(100.0f, 0.0f);
        path.lineTo(200.0f, 100.0f);
        path.lineTo(0.0f, 100.0f);
        path.lineTo(0.0f, 0.0f);

        mTrapezoid = new ShapeDrawable(new PathShape(path, 200.0f, 100.0f));
        mTrapezoid.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);
        mTrapezoid.getPaint().setStrokeWidth(1.0f);
        mTrapezoid.getPaint().setColor(Color.GREEN);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        mTrapezoid.setBounds(0, 0, w, h);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        mTrapezoid.draw(canvas);
    }
}
nandsito
  • 3,782
  • 2
  • 19
  • 26
2

You can try by making a LayerDrawable in either code or xml. Make a rectangle shape and a triangle shape Check out the developer site for more information: http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html

dumazy
  • 13,857
  • 12
  • 66
  • 113