美文网首页程序员Android进阶之路Android开发
Android将一个View转为Bitmap的两种方式

Android将一个View转为Bitmap的两种方式

作者: 房嘻 | 来源:发表于2019-12-31 16:37 被阅读0次

    方式一:新建Bitmap,将View中内容绘制到Bitmap上

    public static Bitmap createBitmapFromView(View view) {
          //是ImageView直接获取
            if (view instanceof ImageView) {
                Drawable drawable = ((ImageView) view).getDrawable();
                if (drawable instanceof BitmapDrawable) {
                    return ((BitmapDrawable) drawable).getBitmap();
                }
            }
            view.clearFocus();
            Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
            if (bitmap != null) {
                Canvas canvas = new Canvas(bitmap);
                view.draw(canvas);
                canvas.setBitmap(null);
            }
            return bitmap;
    }
    

    方式二:直接从View缓存cache中取

    /**
       * 该方式原理主要是:View组件显示的内容可以通过cache机制保存为bitmap
         */
        public static Bitmap createBitmapFromView(View view) {
            Bitmap bitmap = null;
            //开启view缓存bitmap
            view.setDrawingCacheEnabled(true);
            //设置view缓存Bitmap质量
            view.setDrawingCacheQuality(DRAWING_CACHE_QUALITY_HIGH);
            //获取缓存的bitmap
            Bitmap cache = view.getDrawingCache();
            if (cache != null && !cache.isRecycled()) {
                bitmap = Bitmap.createBitmap(cache);
            }
            //销毁view缓存bitmap
            view.destroyDrawingCache();
            //关闭view缓存bitmap
            view.setDrawingCacheEnabled(false);
            return bitmap;
        }
    

    相关文章

      网友评论

        本文标题:Android将一个View转为Bitmap的两种方式

        本文链接:https://www.haomeiwen.com/subject/untioctx.html