Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中绘制圆形并填充颜色,无需使用画布_Java_Android_Android Studio_Canvas_Android Drawable - Fatal编程技术网

Java 在android中绘制圆形并填充颜色,无需使用画布

Java 在android中绘制圆形并填充颜色,无需使用画布,java,android,android-studio,canvas,android-drawable,Java,Android,Android Studio,Canvas,Android Drawable,我正在使用Android Studio 2.1.2创建Android应用程序。在我的应用程序中,我需要在android视图中创建一个红色圆圈。我用画布试过了,比如 protected void onDraw(Canvas canvas) { super.onDraw(canvas); int x = getWidth(); int y = getHeight(); int radius = x / 2

我正在使用Android Studio 2.1.2创建Android应用程序。在我的应用程序中,我需要在android视图中创建一个红色圆圈。我用画布试过了,比如

protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            int x = getWidth();
            int y = getHeight();
            int radius = x / 2;
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.WHITE);
            paint.setStrokeWidth(2);
            canvas.drawPaint(paint);
            paint.setColor(Color.parseColor("#CD5C5C"));
            canvas.drawCircle(x / 2, y / 2, radius, paint);
        }
onCreate()
中,我添加了

setContentView(new SampleView(this));

其中
SampleView
是一个包含
onDraw()
的类。如果不使用
画布
,是否有其他方法可以执行相同的操作?

您可以创建形状xml并将其指定给线性布局

像这样的东西

   <LinearLayout
            android:background="@drawable/circle_border"
            android:layout_width="100dp"
            android:layout_height="100dp">

   </LinearLayout>



<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="false">
         <shape android:shape="oval">
            <solid android:color="@color/red" />
         </shape>
     </item>
</selector>

这将画一个圆圈


希望这有助于

您可以创建形状xml并将其指定给线性布局

像这样的东西

   <LinearLayout
            android:background="@drawable/circle_border"
            android:layout_width="100dp"
            android:layout_height="100dp">

   </LinearLayout>



<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="false">
         <shape android:shape="oval">
            <solid android:color="@color/red" />
         </shape>
     </item>
</selector>

这将画一个圆圈


希望这有帮助

首先,您需要在
可绘制的
中创建custom_circle.xml

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

    <solid android:color="@color/red" />

</shape>

然后您可以在布局中使用它

<LinearLayout
    android:id="@+id/button1"
    android:layout_width="20sp"
    android:layout_height="20sp"
    android:layout_gravity="center"
    android:background="@drawable/custom_circle"
    android:padding="5dp"
    android:visibility="gone" />

首先,您需要在
可绘制的
中创建custom_circle.xml

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

    <solid android:color="@color/red" />

</shape>

然后您可以在布局中使用它

<LinearLayout
    android:id="@+id/button1"
    android:layout_width="20sp"
    android:layout_height="20sp"
    android:layout_gravity="center"
    android:background="@drawable/custom_circle"
    android:padding="5dp"
    android:visibility="gone" />

从xml创建一个可绘制的文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#FF0000"/>
</shape>

按如下方式从xml创建可绘制文件:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#FF0000"/>
</shape>

不,任何与绘图相关的操作都必须通过
Canvas
调用来完成,但您不必创建自定义的
视图才能工作:创建一个自定义的
Drawable
并通过调用
setBackground
@pskink:调用后,
setContentView(new SampleView(this)),将其设置为任何
视图,我已经在MainActivity中的组件(按钮和文本视图)被隐藏。我可以将MainActivity组件与绘制圆圈的画布一起显示吗?是的,我已经说过:
但您不必创建自定义视图,它就可以工作[…]
,最简单的方法是将
ShapeDrawable
与自定义的
android.graphics.drawable.shapes.Shape一起使用class@pskink:谢谢你的帮助。让我试试这个。不,任何与绘图相关的事情都必须通过
Canvas
调用来完成,但是你不必创建一个自定义的
视图才能工作:创建一个自定义的
可绘图的
,并通过调用
setBackground
@pskink:调用后,
setContentView(new SampleView(this)),将其设置为任何
视图,我已经在MainActivity中的组件(按钮和文本视图)被隐藏。我可以将MainActivity组件与绘制圆圈的画布一起显示吗?是的,我已经说过:
但您不必创建自定义视图,它就可以工作[…]
,最简单的方法是将
ShapeDrawable
与自定义的
android.graphics.drawable.shapes.Shape一起使用class@pskink:谢谢你的帮助。让我试试这个。对不起。这是我的错误。经过清洁和建设,其工作良好。谢谢你的快速回复。对不起。这是我的错误。经过清洁和建设,其工作良好。谢谢你的快速回复。谢谢你的回复。谢谢你的回复。是的,你也可以选择按钮和布局。谢谢你花时间回答我的问题。是的,你也可以选择按钮和布局。谢谢你花时间回答我的问题。