Я использую функцию drawCircle (), чтобы вернуть объект ShapeDrawable, который является овалом, и использую ImageView.setImageDrawable (), чтобы установить его.Но как я могу добавить 2dp-рамку к овальному объекту?Я пытался использовать GrandientDrawable, но независимо от того, насколько велико значение толщины границы, граница почти не видна в эмуляторе.
Вот моя функция drawCircle ():
public ShapeDrawable drawCircle (int diameter) {
OvalShape ovalShape = new OvalShape();
ShapeDrawable drawable = new ShapeDrawable(ovalShape);
drawable.getPaint().setColor(getResources().getColor(R.color.textColorHint));
drawable.getPaint().setStyle(Paint.Style.STROKE);
drawable.setIntrinsicHeight(diameter);
drawable.setIntrinsicWidth(diameter);
return drawable;
}
Вот моя функцияsetStroke ():
public void setStroke(ImageView view) {
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setShape(GradientDrawable.OVAL);
gradientDrawable.setStroke(100, Color.WHITE);
view.setBackground(gradientDrawable);
}
Вот как я его использую:
// Calculate diameter
int selector_one_diameter = (int)(selector_diameter * 1/6);
// Get ImageView
ImageView one_img = (ImageView) findViewById(R.id.circle_one_selector_img);
// Set drawable
one_img.setImageDrawable(drawCircle(selector_one_diameter));
// Set stroke
setStroke(one_img);