【问题标题】:Android get a bitmap of a view before drawing?Android在绘制之前获取视图的位图?
【发布时间】:2011-12-07 23:24:37
【问题描述】:

我希望获取视图层次结构并将其转换为位图。使用view.getDrawingCache() 完全符合我的要求,但如果我在绘制视图之前尝试这样做,将无法正常工作。是否有另一个函数会在实际绘制之前做同样的事情?我想创建视图并将其转换为位图以显示和丢弃实际视图。如果有一种方法可以强制绘制视图,它也可能有效。有什么想法吗?

我在之前的帖子中发现了这个:

    public static Bitmap loadBitmapFromView(View v) {
         Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
         Canvas c = new Canvas(b);
         v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
         v.draw(c);
         return b;
    }

这看起来很有希望,但是当我使用它时,我得到的只是一个半透明的黑盒子。

【问题讨论】:

    标签: java android


    【解决方案1】:

    好吧,我想通了。您可以使用此代码,对this post 稍作修改。

        public static Bitmap loadBitmapFromView(View v) {
              Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
              Canvas c = new Canvas(b);
              v.measure(v.getLayoutParams().width, v.getLayoutParams().height); //Change from original post
              v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
              v.draw(c);
              return b;
        }
    

    【讨论】:

    • 用 v.getWidth() 替换 v.getLayoutParams().width 就可以了。
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2017-09-25
    • 2011-02-10
    相关资源
    最近更新 更多