Android形状有渐变边框和阴影

时间:2016-12-26 10:51:07

标签: android-layout android-xml android-drawable android-shape

我有一个png drawable按钮。但它的图像drawable有渐变,当应用9patch时它看起来很糟糕(渐变& 9patch不兼容)。我想用形状来做这件事。但我不能用android形状绘图,因为我很难理解它。

你能帮我画一个形状的图像吗?

enter image description here

它包含一个边框渐变,内部是橙色矩形,有圆角和阴影120°

3 个答案:

答案 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

在drawable文件夹

中创建my_rectangle.xml文件
<?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>

结果

enter image description here

注释

  1. 我把它做成120 * 120的正方形,改变尺寸使其成为矩形
  2. 我将圆角的半径设为10dp,如果你想要改变它
  3. 我将填充量设为5dp,您也可以将其更改为
  4. 干杯

答案 1 :(得分:0)

虽然接受的答案是正确的,但最好使用 9-patch 。参见Creating & Using 9-patch images in Androidhttps://developer.android.com/studio/write/draw9patchHow 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

  1. 从设计中复制图像(带阴影的边框)。
  2. 将其粘贴到Photoshop,Gimp等图像编辑器中。
  3. 使用矩形,魔术棒工具清除不需要的空间。

enter image description here

  1. 将图像另存为PNG,然后打开Simple nine-patch generator
  2. 将图像粘贴在那里并移动标尺。

enter image description here

  1. 下载ZIP并将其解压缩到项目的res文件夹中。
  2. 现在您可以将这些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>