两种获取view的bitmap的方法

来源:互联网 发布:linux sleep函数头文件 编辑:程序博客网 时间:2024/06/06 02:43

在开发中有时候需要获取到一个view当前的图像信息,这个view可能是一个单一的view,也可能是多个view组成的ViewGroup,所以不能通过简单的getBackground的方法获取到这个图像信息。下面提供两个比较方便方法可以获取这个信息

  • 通过canvas获取
   /**     * 通过canvas复制view的bitmap     */    private void copyByCanvas() {        int width = mOriginImageView.getWidth();        int height = mOriginImageView.getHeight();        Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);        Canvas canvas = new Canvas(bp);        mOriginImageView.draw(canvas);        canvas.save();        mCopyImageView1.setBackground(new BitmapDrawable(bp));    }
  • 通过drawingCache获取
    /**     * 通过drawingCache获取bitmap     */    private void copyByDrawingCache() {        mOriginImageView.setDrawingCacheEnabled(true);        mOriginImageView.buildDrawingCache(true);        final Bitmap bp = mOriginImageView.getDrawingCache();        if(bp != null){            Bitmap finalBp = Bitmap.createBitmap(bp);            mOriginImageView.setDrawingCacheEnabled(false);            mCopyImageView2.setBackground(new BitmapDrawable(finalBp));        }    }
0 0