如何为可绘制对象动态添加描边?
How to dynamically add stroke to drawables?
我使用函数 drawCircle() 来 return 一个椭圆形的 ShapeDrawable 对象,并使用 ImageView.setImageDrawable() 来设置它。但是如何为椭圆形可绘制对象添加 2dp 边框?我试过使用GrandientDrawable,不管border thickness的值多大,在模拟器上都看不到border
这是我的函数 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);
如何在 drawable 文件夹下创建一个 oval.xml 文件并使用 dashWidth 和 width 而不是 gradientDrawable?
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:dashWidth="2dp"
android:width ="3dp"
android:color="@color/colorPrimary"/>
</shape>
使用循环 imageview
的最佳方法是使用 this 库,使用起来太容易了,它可以为您提供所需的所有自定义设置
我使用函数 drawCircle() 来 return 一个椭圆形的 ShapeDrawable 对象,并使用 ImageView.setImageDrawable() 来设置它。但是如何为椭圆形可绘制对象添加 2dp 边框?我试过使用GrandientDrawable,不管border thickness的值多大,在模拟器上都看不到border
这是我的函数 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);
如何在 drawable 文件夹下创建一个 oval.xml 文件并使用 dashWidth 和 width 而不是 gradientDrawable?
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:dashWidth="2dp"
android:width ="3dp"
android:color="@color/colorPrimary"/>
</shape>
使用循环 imageview
的最佳方法是使用 this 库,使用起来太容易了,它可以为您提供所需的所有自定义设置