我如何使用Shape drawable在android中制作此形状

我想在我的android项目中制作此形状。如何使用形状制作这种形状?

我如何使用Shape drawable在android中制作此形状

tjlyu 回答:我如何使用Shape drawable在android中制作此形状

尝试这种方式

您可以使用MaterialButton

<com.google.android.material.button.MaterialButton
        style="@style/Widget.MaterialComponents.Button.Icon"
        android:text="Nilesh rathod"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        app:shapeAppearanceOverlay="@style/CustomShapeAppearanceOverlay.Button"/>

现在在您的CustomShapeAppearanceOverlay.Button中创建styles.xml

    <style name="CustomShapeAppearanceOverlay.Button" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSizeTopLeft">18dp</item>
    <item name="cornerSizeBottomLeft">18dp</item>
    <item name="cornerFamilyTopLeft">cut</item>
    <item name="cornerFamilyBottomLeft">cut</item>
    <item name="cornerSizeTopRight">0dp</item>
    <item name="cornerSizeBottomRight">0dp</item>
</style>

确保已添加dependencies库中的material

implementation 'com.google.android.material:material:1.1.0-alpha10'

输出

enter image description here

,

您可以尝试以下方法:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <size
                android:width="100dp"
                android:height="40dp" />
            <solid android:color="#FAD55C" />
        </shape>
    </item>
    <item
        android:top="-40dp"
        android:bottom="60dp"
        android:start="-24dp">
        <rotate
            android:fromDegrees="315">
            <shape android:shape="rectangle">
                <solid android:color="#FFF" />
            </shape>
        </rotate>
    </item>

    <item
        android:top="60dp"
        android:bottom="-40dp"
        android:start="-24dp">
        <rotate
            android:fromDegrees="-315">
            <shape android:shape="rectangle">
                <solid android:color="#FFF" />
            </shape>
        </rotate>
    </item>
</layer-list>

enter image description here

,

像这样创建自定义可绘制类

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

public class ArrowDrawable extends Drawable {
    private Rect mBounds;
    private Paint mDrawPaint;

    public ArrowDrawable() {
        mDrawPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
        mDrawPaint.setColor(Color.BLUE);
    }

    @Override
    public void draw(@NonNull Canvas canvas) {
        mBounds=getBounds();
        Path path=new Path();
        path.moveTo(mBounds.left,mBounds.bottom/2);
        path.lineTo(mBounds.right/8,mBounds.top);
        path.lineTo(mBounds.right,mBounds.bottom);
        path.lineTo(mBounds.right/8,mBounds.bottom);
        path.lineTo(mBounds.left,mBounds.bottom/2);
        canvas.drawPath(path,mDrawPaint);
    }

    @Override
    public void setAlpha(int alpha) {
      mDrawPaint.setAlpha(alpha);
    }

    @Override
    public void setColorFilter(@Nullable ColorFilter colorFilter) {
      mDrawPaint.setColorFilter(colorFilter);
    }

    @Override
    public int getOpacity() {
        return PixelFormat.TRANSLUCENT;
    }
}

Drawable设置为TextView

ArrowDrawable arrowDrawable=new ArrowDrawable();
textView.setBackground(arrowDrawable);
本文链接:https://www.f2er.com/3168949.html

大家都在问