布局中间的画布,即 ImageView Android?

Posted

技术标签:

【中文标题】布局中间的画布,即 ImageView Android?【英文标题】:Canvas in the middle of Layout i.e ImageView Android? 【发布时间】:2015-04-02 16:33:03 【问题描述】:

我正在寻找在 xml 布局中间显示画布的任何方式,即在 Imageview 上显示画布。我试过但位图返回null。

Bitmap b = Bitmap.createBitmap(img.getMeasuredWidth(),img.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    c.drawRect(0, 0, 200, 200, paint);

【问题讨论】:

xml 布局中间的画布?你什么意思? 意思是简单的布局,中间有一个图像视图,并在上面放置一个画布 【参考方案1】:

请子类化 ImageView 并在 onDraw() 中绘制您的要求,如下所示。

public class CustomImageView extends ImageView

public CustomImageView (Context context) 
    super(context);


@Override
protected void onDraw(Canvas canvas) 
    super.onDraw(canvas);
    Bitmap Bitmap.createBitmap(img.getMeasuredWidth(),img.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    c.drawRect(0, 0, 200, 200, paint);



【讨论】:

【参考方案2】:

使用此代码创建位图。

 public static Bitmap createScaledBitmap(String path, float scale, boolean filtering)
        Bitmap src = BitmapFactory.decodeFile(path);
        int width = (int)( src.getWidth() * scale + 0.5f);
        int height = (int)( src.getHeight() * scale + 0.5f);
        return Bitmap.createScaledBitmap(src, width, height, filtering);
      

这里的路径是你的图像的路径,然后最后把这个缩放的位图放在你的画布中。

【讨论】:

以上是关于布局中间的画布,即 ImageView Android?的主要内容,如果未能解决你的问题,请参考以下文章

android 如何重写imageview 让图片有圆角效果

ImageView不会在同一父布局中的recyclerView上方显示

Android Studio XML 无法勾勒出 imageview

ImageView 适合高度,自动缩放宽度,保持纵横比

Android 圆角、圆形 ImageView 实现

垂直线性布局内的水平线性布局