如何在android xml可绘制文件中定义一个圆形状?

我有一些问题findAndroid的XML的形状定义的文档。 我想在XML文件中定义一个简单的填充了纯色的圆圈,将其包含到我的布局文件中。

可悲的是,android.com上的文档并不包含Shape类的XML属性。 我想我应该使用ArcShape绘制一个圆,但没有解释如何设置圆弧所需的大小,颜色或angular度。

这在Android中是一个简单的圈子。

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#666666"/> <size android:width="120dp" android:height="120dp"/> </shape> 

将其设置为您的视图背景

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <stroke android:width="1dp" android:color="#78d9ff"/> </shape> 

在这里输入图像描述

对于实心圆使用:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#48b3ff"/> </shape> 

在这里输入图像描述

坚实与冲程:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#199fff"/> <stroke android:width="2dp" android:color="#444444"/> </shape> 

在这里输入图像描述

注意 :要使oval形状显示为圆形,在这些示例中,您认为使用这些形状作为其背景的视图应该是正方形,或者必须将形状标记的heightwidth属性设置为相等的值。

代码为简单的圈子

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#9F2200"/> <stroke android:width="2dp" android:color="#fff" /> <size android:width="80dp" android:height="80dp"/> </shape> 

查看Android SDK示例。 ApiDemos项目中有几个例子:

/ ApiDemos / RES /抽拉/

  • black_box.xml
  • shape_5.xml
  • 等等

对于具有渐变填充的圆形,它会看起来像这样:

 <?xml version =“1.0”encoding =“utf-8”?>
 <shape xmlns:android =“http://schemas.android.com/apk/res/android”android:shape =“oval”>
     <gradient android:startColor =“#FFFF0000”android:endColor =“#80FF00FF”
            机器人:angular= “270”/>
 </形状>

用这个

 <?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="200dp" android:height="200dp" android:viewportHeight="64" android:viewportWidth="64"> <path android:fillColor="#ff00ff" android:pathData="M22,32 A10,10 0 1,1 42,32 A10,10 0 1,1 22,32 Z" /> </vector> 

在这里输入图像描述

这里有一个简单的用于前置材质的circle_background.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="oval"> <solid android:color="@color/color_accent_dark" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="@color/color_accent" /> </shape> </item> </selector> 

您可以在button的布局定义中使用属性'android:background="@drawable/circle_background"

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- fill color --> <solid android:color="@color/white" /> <!-- radius --> <stroke android:width="1dp" android:color="@color/white" /> <!-- corners --> <corners android:bottomLeftRadius="2dp" android:bottomRightRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="2dp" /> </shape> 
 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <stroke android:width="10dp" android:color="@color/white"/> <gradient android:startColor="@color/red" android:centerColor="@color/red" android:endColor="@color/red" android:angle="270"/> <size android:width="250dp" android:height="250dp"/> </shape> 

只是使用

 ShapeDrawable circle = new ShapeDrawable( new OvalShape() );