Как определить форму круга в отрисовываемом файле Android xml? - PullRequest
598 голосов
/ 06 июля 2010

У меня проблемы с поиском документации по определениям фигур в XML для Android.Я хотел бы определить простой круг, заполненный сплошным цветом в файле XML, чтобы включить его в мои файлы макетов.

К сожалению, документация на android.com не охватывает атрибуты XML классов Shape.Я думаю, что я должен использовать ArcShape , чтобы нарисовать круг, но нет никакого объяснения того, как установить размер, цвет или угол, необходимый для создания круга из Дуги.

Ответы [ 14 ]

1337 голосов
/ 25 августа 2012

Это простой круг для рисования в 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>
694 голосов
/ 11 января 2016

Установить это как фон для просмотра

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

enter image description here

Для сплошного круга:

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

enter image description here

Твердый с ходом:

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

enter image description here

Примечание : чтобы фигура oval отображалась в виде круга, в этих примерах либо ваше представление о том, что вы используете эту фигуру в качестве фона, должно быть квадратным, либо вы должны установить height и width свойства тега shape равны значению.

90 голосов
/ 25 ноября 2014

код для простого круга

<?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>
46 голосов
/ 11 августа 2011

Посмотрите на образцы Android SDK. В проекте ApiDemos есть несколько примеров:

/ ApiDemos / res / drawable /

  • 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"
            android:angle="270"/>
</shape>

44 голосов
/ 29 июля 2016

Вы можете использовать VectorDrawable , как показано ниже:

<?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>

Приведенный выше xml отображается как:

enter image description here

21 голосов
/ 29 января 2016
<?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:radius="2dp"/>
</shape>
16 голосов
/ 10 июня 2015

Вот простой 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>

Вы можете использовать с атрибутом 'android:background="@drawable/circle_background" в определении макета вашей кнопки

9 голосов
/ 06 февраля 2018

Если вы хотите круг , как это

enter image description here

Попробуйте использовать код ниже:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="2"
android:useLevel="false" >
<solid android:color="@android:color/white" />
<stroke
    android:width="1dp"
    android:color="@android:color/darker_gray" /></shape>
7 голосов
/ 10 апреля 2017
<?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>
2 голосов
/ 07 июня 2018

Вы можете попробовать это -

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadiusRatio="700"
    android:thickness="100dp"
    android:useLevel="false">

    <solid android:color="#CCC" />

</shape>

Кроме того, вы можете настроить радиус круга, настроив android:thickness.

enter image description here

...