为图像创建drawable

时间:2015-04-13 07:23:21

标签: android

我正在开发一个Android应用程序,我们正试图通过用drawable替换位图图像来减少应用程序的占用空间。

我有以下图片

enter image description here

我想创建此卡的背景。我尝试使用shape drawable但它似乎没有足够的选项来创建背景。

当我使用渐变时,颜色混合在一起。我实际上想要两种颜色之间的明确分离。如何在不使用图像的情况下创建此背景?

2 个答案:

答案 0 :(得分:1)

您可以使用rotatelayer-list在没有任何java代码的情况下完全在xml中获得效果。以下是示例,但为了让它更优雅地显示,您必须重新计算高度,宽度并选择更好的旋转角度。

<强> debit_card.xml

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

<item android:left="10dp">
    <shape>
        <solid android:color="#ffff0000"></solid>
        <size
            android:width="100dp"
            android:height="50dp"></size>
    </shape>
</item>

<item>
    <rotate
        android:fromDegrees="-27"
        android:pivotX="100%"
        android:pivotY="0">

        <shape android:shape="rectangle">
            <size
                android:width="100dp"
                android:height="50dp"></size>
            <solid android:color="#ff00ff00"></solid>
        </shape>
    </rotate>
</item>

</layer-list>

然后您可以在ImageView中使用上面的drawable,布局大小属性必须为wrap_content/wrap_content

<FrameLayout     
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/debit_card" />
</FrameLayout>

最终效果如下图所示。 enter image description here

答案 1 :(得分:0)

如果您真的想要绘制这样的背景,请尝试在API 21中添加VectorDrawable。并使用以下代码绘制背景

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="256dp"
    android:viewportHeight="25"
    android:viewportWidth="25"
    android:width="256dp" >

    <path
        android:fillColor="#ff006666"
        android:pathData="l 25,0
                        l -25,15z" />
    <path
        android:fillColor="#ff009999"
        android:pathData="m 25,0
                        l -25,15,
                        l 25,0z" />

</vector>

这将是你的结果。

enter image description here