Как определить форму круга в отрисовываемом файле Android xml?

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

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

Ответ 1

Это простой круг как переносимый в 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>

Ответ 2

Установите это как фон просмотра

<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 тега формы равными значениям.,

Ответ 3

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

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

Ответ 4

Посмотрите образцы 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>

Ответ 5

Вы можете использовать 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

Ответ 6

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

Ответ 7

Вот простой 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" в определении макета кнопки

Ответ 8

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

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>

Ответ 9

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

Ответ 10

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

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

Ответ 11

Я не мог нарисовать круг внутри моего ConstraintLayout по какой-то причине, я просто не мог использовать ни один из ответов выше.

Что отлично сработало, так это простой TextView с текстом, который появляется, когда вы нажимаете "Alt + 7":

 <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#0075bc"
            android:textSize="40dp"
            android:text="•"></TextView>

Ответ 12

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/text_color_green"/>
            <!-- Set the same value for both width and height to get a circular shape -->
            <size android:width="250dp" android:height="250dp"/>
        </shape>
    </item>
</selector>

Ответ 13

Рез /drawble/circle_shape.xml

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

        <shape android:shape="oval">
            <solid android:color="#e42828"/>
            <stroke android:color="#3b91d7" android:width="5dp"/>
            <!-- Set the same value for both width and height to get a circular shape -->
            <size android:width="250dp" android:height="250dp"/>
        </shape>
    </item>
</selector>

enter image description here

Пример в Интернете: https://code-android-example.blogspot.com/2019/07/how-to-circle-shape-in-xml-drawable-android.html

Ответ 14

Просто используйте

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