Как нарисовать контур круга внутри него, в Android
Я пытаюсь нарисовать контур круга, используя этот код.
private ShapeDrawable getDrawableEmptyCircle(int color){
ShapeDrawable myDrawable = new ShapeDrawable(new OvalShape());
myDrawable.getPaint().setColor(color);
myDrawable.setIntrinsicHeight( 50 );
myDrawable.setIntrinsicWidth( 50);
myDrawable.getPaint().setStyle(Paint.Style.STROKE);
myDrawable.getPaint().setStrokeWidth(3);
// myDrawable.setBounds(x, y, x + width, y + height);
return myDrawable;
}
Эта функция возвращает нарисованный круг, очерченный, но за пределами размера круга. Что вызывает некоторые искажения в моем кругу. Вот так это выглядит
http://picthost.net/image.php?di=YV8B
Как видите, его контур не виден должным образом. вы не могли бы мне помочь?
РЕДАКТИРОВАТЬ: я добавляю это drawable к фону представления.
- Я также попытался увеличить размер представления, тогда размер круга увеличивается (но та же проблема).
- Я попытался добавить поля для просмотра.
- Я также попытался заключить вид в макет и добавить к нему некоторые отступы.
1 ответ
Решение
После долгих поисков и испытаний я нашел решение этой проблемы, надеюсь, это поможет другим
Эта проблема была решена, когда я определил свой круг в XML-файле вместо того, чтобы создавать его с помощью кода.
Добавьте этот файл, скажем empty_circle.xml и напишите
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="40dip"/>
<stroke android:color="@color/solid_green_color" android:width="2dip"/>
<solid android:color="@android:color/transparent"/>
</shape>
И вызвать этот файл из вашей функции, как:
Drawable myDrawable= (Drawable) context.getResources().getDrawable(R.drawable.empty_circle);
myDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);