我有一个png drawable按钮。但它的图像drawable有渐变,当应用9patch时它看起来很糟糕(渐变& 9patch不兼容)。我想用形状来做这件事。但我不能用android形状绘图,因为我很难理解它。
你能帮我画一个形状的图像吗?
它包含一个边框渐变,内部是橙色矩形,有圆角和阴影120°
答案 0 :(得分:11)
你去吧
import numpy as np
n, m = 500, 10
x0 = np.ones(m)
Z = np.random.rand(n, n)
Y0 = Z**2
h0 = np.concatenate((np.ones(m), np.zeros(n-m)))
H0 = np.vstack((np.roll(h0, k) for k in range(n+1-m)))
M0 = np.dot(np.dot(H0, Y0), H0.T)
h1 = np.concatenate((-2*x0, np.zeros(n-m)))
H1 = np.vstack((np.roll(h1, k) for k in range(n+1-m)))
M1 = np.dot(np.dot(H1, Z), H0.T)
Y2 = np.dot(x0, x0)
M = (M0 + M1) / m**2 + Y2
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#c8c0c0"
android:orientation="vertical">
<LinearLayout
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_centerInParent="true"
android:background="@drawable/my_rectangle">
</LinearLayout>
</RelativeLayout>
干杯
答案 1 :(得分:0)
虽然接受的答案是正确的,但最好使用 9-patch 。参见Creating & Using 9-patch images in Android,https://developer.android.com/studio/write/draw9patch,How do I put a border around an Android textview?。 SVG图像可能会有所帮助,但我没有成功。同样,在接受的答案中,阴影可以每45度旋转一次,例如,您可以尝试315而不是270。
您可以使用9-patch工具。 “ Draw9patch”工具从sdk/tools
文件夹中消失了,但可能在这里:https://androidstudio.io/downloads/tools/download-the-latest-version-of-draw9patch.jar.html。
res
文件夹中。9.png
图像用作阴影。 9-patch
比带有渐变和CardView
的XML阴影更易于使用。 Android中的阴影太可怕了。
答案 2 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="@color/transperent"
android:startColor="@color/quantum_orange" />
<corners android:radius="5dp" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="5dp" />
<size
android:width="50dp"
android:height="50dp" />
</shape>
</item>