Java 在android中绘制圆形并填充颜色,无需使用画布
我正在使用Android Studio 2.1.2创建Android应用程序。在我的应用程序中,我需要在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
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:谢谢你的帮助。让我试试这个。对不起。这是我的错误。经过清洁和建设,其工作良好。谢谢你的快速回复。对不起。这是我的错误。经过清洁和建设,其工作良好。谢谢你的快速回复。谢谢你的回复。谢谢你的回复。是的,你也可以选择按钮和布局。谢谢你花时间回答我的问题。是的,你也可以选择按钮和布局。谢谢你花时间回答我的问题。