Android - 在现有的imageView上绘制形状?

时间:2015-05-21 10:02:31

标签: java android bitmap imageview drawing

我想知道是否可以在现有的imageView上绘制圆圈?

我想在我的图片上创建一个圆圈,这是我的代码:

public void drawCircle(ImageView image, int x, int y)
    {
        BitmapDrawable drawable = (BitmapDrawable) image.getDrawable();
        Bitmap bitmap = drawable.getBitmap();
        Canvas canvas = new Canvas(bitmap);

        Paint paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.STROKE);
        float radius = 20;
        canvas.drawCircle(x, y, radius, paint);
        image.setImageBitmap(bitmap);
    }

但不幸的是,我收到了以下错误:

  

java.lang.NullPointerException:尝试调用虚方法   ' android.graphics.Bitmap   android.graphics.drawable.BitmapDrawable.getBitmap()'在null对象上   参考

你能告诉我我的代码有什么问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以为此编写一个XML来设置椭圆形状,就像这样

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <gradient android:startColor="YOUR_COLOR" android:endColor="YOUR_COLOR"
        android:angle="270"/>
</shape>

将其添加到drawable文件夹,然后添加到imageView上 根据您的喜好将其设置为源或背景。 确保在另一个布局顶部使用它,之后设置高度和宽度相同的数量

也可以访问这个以获得更多想法 How to create an imageView with shape circle and have a border?