【问题标题】:Unable to get the bitmap of a linearlayout along with its child views无法获取线性布局的位图及其子视图
【发布时间】:2011-11-09 11:28:28
【问题描述】:

我正在使用以下代码从线性布局创建位图

公共静态位图 loadBitmapFromView(View v) {

    //Bitmap b = Bitmap.createBitmap( v.getLayoutParams.width, v.getLayoutParams.height, Bitmap.Config.ARGB_8888);
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams.width, v.getLayoutParams.height, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    v.draw(c);
    return b;
}

但我看不到里面的景色 我只能看到一个灰色的大屏幕

也尝试了这个问题的答案Android Problems Converting ViewGroup with Children into Bitmap,但仍然无法正常工作

我的视图被 xml 夸大了 当我使用上面提到的代码时,我会因为空指针异常而强制关闭 如果我提到像 200 、 200 这样的数字的宽度和高度,那么我只能看到灰色背景,而不是其中的视图。

【问题讨论】:

    标签: android view bitmap


    【解决方案1】:

    你需要在布局之前测量视图

    v.measure(
          MeasureSpec.makeMeasureSpec(v.getLayoutParams().width,MeasureSpec.EXACTLY),
          MeasureSpec.makeMeasureSpec(v.getLayoutParams().height, MeasureSpec.EXACTLY));
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight()
            ,Bitmap.Config.RGB_565);
    Canvas c = new Canvas(b);
    v.draw(c);
    

    【讨论】:

    • m 在 MeasureSpec.makeMeasureSpec(v.getLayoutParams().width,MeasureSpec.EXACTLY) 上得到一个空指针异常
    • 那么您需要找出哪个变量是公牛。 'v' 很可能为空。
    • 问题是我没有提到 java 中线性布局的宽度和高度,但现在在 xml 中它正在工作,非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多