如何在Android Studio中创建菱形按钮

时间:2018-07-19 17:37:48

标签: android android-studio

我想创建一个像Material website一样的菱形形状的按钮

(This is the picture)

我在网上搜索并没有找到答案,所以我在这里问。

我已经发现了如何创建菱形形状:

from Person p join p.hrpr h

这是我的图像按钮

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:height="60dp"
    android:width="60dp"

    android:right="20dp"
    android:left="20dp"
    android:gravity="center">
    <rotate
        android:fromDegrees="45"
        android:pivotX="50%"
        android:pivotY="50%" >
        <shape
            android:shape="rectangle">
            <solid
                android:color="@color/black" />
        </shape>
    </rotate>
</item>

“ @ drawable / ic_pause_white”是我导入的暂停图标矢量。

现在,我有一个带有菱形形状的暂停按钮,但是我的问题是,点击框与图像(如预期)

不匹配

我已经尝试创建 OnTouchListener

<ImageButton
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:background="@drawable/button_test"
    android:src="@drawable/ic_pause_white"
    />

但是我想知道是否有一种更简单的方法,并且是否没有使用上面的代码“ BitmapFactory.decodeResource(getResources(),R.drawable.button_test)” 是返回 null ,我不知道为什么。

提前

谢谢,所有想要帮助我的人!

1 个答案:

答案 0 :(得分:3)

更“技术正确”的解决方案的替代方案:如果使用方形背景,然后将图标顺时针旋转45度,然后将整个按钮逆时针旋转45度,该怎么办?

layout.xml

<ImageButton
    android:background="@color/black"
    app:srcCompat="@drawable/ic_camera_45deg"
    android:rotation="-45"
    android:layout_width="48dp"
    android:layout_height="48dp"/>

这里的背景是纯色,因此您不会收到任何视觉触摸反馈。为此,您需要在Android 4上使用<selector>绘图,在Android 5+上使用<ripple>绘图。

drawable / ic_camera_45deg.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:tint="@color/white"
        android:viewportHeight="24.0"
        android:viewportWidth="24.0">

    <group
        android:pivotX="12"
        android:pivotY="12"
        android:rotation="45">
        <!-- Original paths go here. -->
    </group>
</vector>

请注意tint属性。如果您的图标不是24x24,请确保枢轴点位于viewportWidthviewportHeight的中间。