如何动态添加笔画到drawables?

问题描述 投票:0回答:2

我使用函数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);
android android-drawable
2个回答
0
投票

使用圆形qazxsw poi的最佳方法是使用qazxsw poi库,它太容易使用了,它为您提供了所需的所有自定义设置


0
投票

如何在drawable文件夹下创建一个oval.xml文件并使用dashWidth和width而不是gradientDrawable?

imageview
© www.soinside.com 2019 - 2024. All rights reserved.