Как нарисовать контур круга внутри него, в 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. Я также попытался увеличить размер представления, тогда размер круга увеличивается (но та же проблема).
  2. Я попытался добавить поля для просмотра.
  3. Я также попытался заключить вид в макет и добавить к нему некоторые отступы.

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);
Другие вопросы по тегам