Android - 画一个丝带形状
Android - Draw a ribbon shape
我尽量不使用图像视图。这是因为,稍后,我将生成许多形状相同但颜色不同的对象,因此我不需要继续添加图像视图,只需在我的代码中添加颜色即可。
如何在 Android Studio 上创建这些图像?我查看了 Paint、onDraw、Canvas 等,但这对我来说很难。
您可以使用任何矢量程序(如 Adobe Illustrator)创建矢量图像,或使用 vectormagic 等转换工具对其进行转换,或者找到现有的图像,然后将其导入 android studio。
它将作为 xml 文件导入,您可以在其中根据需要更改颜色
如果你想使用 from XML ,试试这个方法就可以了
<?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="#5EB888" />
<corners android:radius="0dp"/>
</shape>
</item>
<item
android:top="-26dp"
android:bottom="31dp"
android:left="-90dp"
android:right="75dp">
<rotate
android:fromDegrees="45">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</rotate>
</item>
</layer-list>
输出
创建一个名为 left_arrow.xml
的可绘制文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<rotate
android:fromDegrees="45"
android:toDegrees="90"
android:pivotX="0%"
android:pivotY="1%" >
<shape android:shape="rectangle" >
<stroke
android:width="10dp"
android:color="#00000000" />
<solid android:color="#ffffff" />
</shape>
</rotate>
</item>
现在,创建一个视图布局来创建这种类型的条纹或图像,下面是代码:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/llMain"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.1"
android:background="@color/black"
android:orientation="horizontal">
<ImageView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.1"
android:background="@drawable/left_arrow"
android:contentDescription="@string/app_name" />
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.9"
android:contentDescription="@string/app_name" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.9" />
上面的布局创建了所需的箭头条纹作为布局。
现在将此布局添加到您不想显示此条纹的所需布局中。例如,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/llMain"
layout="@layout/xtra"/>
</LinearLayout>
现在,您还可以通过 "llMain" 使用 OnClickListener。
希望对你有帮助。
您可以使用已有的白色 png 图像,并在图像视图上使用 setColorFilter 方法 class 将其着色为您想要的任何颜色
我尽量不使用图像视图。这是因为,稍后,我将生成许多形状相同但颜色不同的对象,因此我不需要继续添加图像视图,只需在我的代码中添加颜色即可。
如何在 Android Studio 上创建这些图像?我查看了 Paint、onDraw、Canvas 等,但这对我来说很难。
您可以使用任何矢量程序(如 Adobe Illustrator)创建矢量图像,或使用 vectormagic 等转换工具对其进行转换,或者找到现有的图像,然后将其导入 android studio。
它将作为 xml 文件导入,您可以在其中根据需要更改颜色
如果你想使用 from XML ,试试这个方法就可以了
<?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="#5EB888" />
<corners android:radius="0dp"/>
</shape>
</item>
<item
android:top="-26dp"
android:bottom="31dp"
android:left="-90dp"
android:right="75dp">
<rotate
android:fromDegrees="45">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</rotate>
</item>
</layer-list>
输出
创建一个名为 left_arrow.xml
的可绘制文件<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<rotate
android:fromDegrees="45"
android:toDegrees="90"
android:pivotX="0%"
android:pivotY="1%" >
<shape android:shape="rectangle" >
<stroke
android:width="10dp"
android:color="#00000000" />
<solid android:color="#ffffff" />
</shape>
</rotate>
</item>
现在,创建一个视图布局来创建这种类型的条纹或图像,下面是代码:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/llMain"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.1"
android:background="@color/black"
android:orientation="horizontal">
<ImageView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.1"
android:background="@drawable/left_arrow"
android:contentDescription="@string/app_name" />
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.9"
android:contentDescription="@string/app_name" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.9" />
上面的布局创建了所需的箭头条纹作为布局。
现在将此布局添加到您不想显示此条纹的所需布局中。例如,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/llMain"
layout="@layout/xtra"/>
</LinearLayout>
现在,您还可以通过 "llMain" 使用 OnClickListener。 希望对你有帮助。
您可以使用已有的白色 png 图像,并在图像视图上使用 setColorFilter 方法 class 将其着色为您想要的任何颜色