如何在 android 中创建可绘制的环形?
How to create ring shape drawable in android?
使用这段代码我只得到一个边框:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="15dp"
android:thickness="2dp"
android:useLevel="false">
<solid android:color="#4d4d4d" />
</shape>
如何制作如下图所示的环形:
I think using a shape in android is better than a shape in photoshop.
正确,创建可绘制对象更好,因为您可以使用代码更改颜色或形状,而不是创建新的图像资源,例如。
用 2 个 Views
和一个 TextView
创建一个 FrameLayout
。第一个视图背景将是您的外环(形状),第二个视图背景将是一个圆圈(形状)。最后 View
(更大的 z-index)你的 TextView
:
<FrameLayout>
<View/><!-- (outer ring)-->
<View/><!-- (filed circle)-->
<TextView/><!-- (text)-->
</FrameLayout>
Ring drawable是元素的并列,使用layer-list
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:right="6dip" android:left="6dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="3"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />
<stroke
android:width="5dp"
android:color="@color/maroon" />
</shape>
</item>
<item android:right="20dip"
android:left="20dip"
android:bottom="0dip"
android:top="34dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:innerRadius="0dp">
<solid android:color="@color/maroon" />
<stroke android:width="1dip" android:color="@android:color/transparent" />
</shape>
</item>
<item android:right="20dip"
android:left="20dip"
android:bottom="34dip"
android:top="0dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:innerRadius="0dp">
<solid android:color="@color/maroon" />
<stroke android:width="1dip" android:color="@android:color/transparent" />
</shape>
</item>
</layer-list>
Xml 可绘制比静态图像更有用,它们可以正确缩放而不需要 .9 库或来自 Gimp、Photoshop 的不同大小的生成集
具有 2dp 间隙的 2dp 外圈:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="4dp"
android:right="4dp"
android:bottom="4dp"
android:left="4dp">
<shape
android:shape="oval">
<solid android:color="#4d4d4d" />
</shape>
</item>
<item>
<shape
android:shape="oval">
<stroke android:width="2dp"
android:color="#4d4d4d"/>
</shape>
</item>
</layer-list>
<item>
<shape
android:innerRadiusRatio="4"
android:shape="ring"
android:thicknessRatio="15"
android:useLevel="false" >
<solid android:color="@color/white_color" />
<size
android:height="48dip"
android:width="48dip" />
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="0dp"
android:thickness="55dp"
android:useLevel="false">
<solid android:color="@color/white_color"/>
<size android:height="200dp"
android:width="200dp"/>
<stroke android:color="@color/green_color" android:width="5dp"/>
</shape>
</item>
<?xml version="1.0" encoding="utf-8"
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:innerRadius="10dp" android:shape="ring" android:thickness="2dp" android:useLevel="false">
<solid android:color="#dfdfdf" />
</shape>
</item>
</selector>
您需要创建一个可绘制对象并将其设置为背景。
shape_primary_ring.xml
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="2.5"
android:shape="ring"
android:thickness="4dp"
android:useLevel="false">
<solid android:color="@color/colorPrimary"/>
</shape>
预览
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="120"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="140">
<item android:id="@android:id/background">
<shape
android:angle="0"
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thicknessRatio="20.0"
android:type="sweep"
android:useLevel="false">
<solid android:color="@color/red" />
</shape>
</item>
</layer-list>
使用这段代码我只得到一个边框:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="15dp"
android:thickness="2dp"
android:useLevel="false">
<solid android:color="#4d4d4d" />
</shape>
如何制作如下图所示的环形:
I think using a shape in android is better than a shape in photoshop.
正确,创建可绘制对象更好,因为您可以使用代码更改颜色或形状,而不是创建新的图像资源,例如。
用 2 个 Views
和一个 TextView
创建一个 FrameLayout
。第一个视图背景将是您的外环(形状),第二个视图背景将是一个圆圈(形状)。最后 View
(更大的 z-index)你的 TextView
:
<FrameLayout>
<View/><!-- (outer ring)-->
<View/><!-- (filed circle)-->
<TextView/><!-- (text)-->
</FrameLayout>
Ring drawable是元素的并列,使用layer-list
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:right="6dip" android:left="6dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="3"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />
<stroke
android:width="5dp"
android:color="@color/maroon" />
</shape>
</item>
<item android:right="20dip"
android:left="20dip"
android:bottom="0dip"
android:top="34dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:innerRadius="0dp">
<solid android:color="@color/maroon" />
<stroke android:width="1dip" android:color="@android:color/transparent" />
</shape>
</item>
<item android:right="20dip"
android:left="20dip"
android:bottom="34dip"
android:top="0dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:innerRadius="0dp">
<solid android:color="@color/maroon" />
<stroke android:width="1dip" android:color="@android:color/transparent" />
</shape>
</item>
</layer-list>
Xml 可绘制比静态图像更有用,它们可以正确缩放而不需要 .9 库或来自 Gimp、Photoshop 的不同大小的生成集
具有 2dp 间隙的 2dp 外圈:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="4dp"
android:right="4dp"
android:bottom="4dp"
android:left="4dp">
<shape
android:shape="oval">
<solid android:color="#4d4d4d" />
</shape>
</item>
<item>
<shape
android:shape="oval">
<stroke android:width="2dp"
android:color="#4d4d4d"/>
</shape>
</item>
</layer-list>
<item>
<shape
android:innerRadiusRatio="4"
android:shape="ring"
android:thicknessRatio="15"
android:useLevel="false" >
<solid android:color="@color/white_color" />
<size
android:height="48dip"
android:width="48dip" />
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="0dp"
android:thickness="55dp"
android:useLevel="false">
<solid android:color="@color/white_color"/>
<size android:height="200dp"
android:width="200dp"/>
<stroke android:color="@color/green_color" android:width="5dp"/>
</shape>
</item>
<?xml version="1.0" encoding="utf-8"
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:innerRadius="10dp" android:shape="ring" android:thickness="2dp" android:useLevel="false">
<solid android:color="#dfdfdf" />
</shape>
</item>
</selector>
您需要创建一个可绘制对象并将其设置为背景。
shape_primary_ring.xml
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="2.5"
android:shape="ring"
android:thickness="4dp"
android:useLevel="false">
<solid android:color="@color/colorPrimary"/>
</shape>
预览
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="120"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="140">
<item android:id="@android:id/background">
<shape
android:angle="0"
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thicknessRatio="20.0"
android:type="sweep"
android:useLevel="false">
<solid android:color="@color/red" />
</shape>
</item>
</layer-list>