как построить трапецию в андроиде?

как я могу создать форму трапеции, как показано ниже?

введите здесь описание изображения

Я не хочу использовать изображение или 9.png .


person S.M_Emamian    schedule 10.09.2014    source источник
comment
использовать std ShapeDrawable с пользовательской формой   -  person pskink    schedule 10.09.2014
comment
Используйте векторный рисунок: см. Мой ответ ниже.   -  person Suhayl SH    schedule 21.03.2017
comment
Проверьте этот ответ   -  person Burak Cakir    schedule 23.03.2017
comment
Официальная документация Android Drawables находится здесь: developer.android.com/guide/topics /graphics/2d-graphics.html   -  person user1506104    schedule 27.03.2017
comment
Документация по высокопроизводительной графике Android находится здесь: developer.android.com/guide/topics/ графика/opengl.html   -  person user1506104    schedule 27.03.2017
comment
Этот пост очень помог мне в создании вида трапеции arkapp.medium.com/trapezium -view-for-android-584799c7e849 С помощью этого я смог создать собственный вид с одним краем в качестве наклона.   -  person abdul rehman    schedule 29.11.2020


Ответы (3)


Попробуй это:

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

введите описание изображения здесь

person Suhayl SH    schedule 21.03.2017
comment
Я рекомендую этот ответ. См. мой ответ здесь для ссылок на документацию и пример, который даст немного больше информации о том, как это использовать. - person Gary99; 28.03.2017
comment
Я хочу, чтобы кто-нибудь мог объяснить, как рисовать такие векторные фигуры. - person AkshayT; 10.05.2020

Этот класс представляет собой View, который определяет и рисует трапецию ShapeDrawable. Таким образом, трапецию, являющуюся Drawable, можно использовать и в фоновом режиме.

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);
    }
}
person nandsito    schedule 21.03.2017
comment
На первый взгляд выглядит намного лучше. Надеюсь, это лучшее решение, чем принятое - person Killer; 21.02.2019

Вы можете попробовать сделать LayerDrawable либо в коде, либо в xml. Создайте форму прямоугольника и форму треугольника. Посетите сайт разработчиков для получения дополнительной информации: http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html

person dumazy    schedule 10.09.2014