温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

[Android学习笔记二] View转化Bitmap

发布时间:2020-07-10 10:48:19 来源:网络 阅读:2216 作者:secondriver 栏目:移动开发

   在View类中的onDraw方法的参数Canvas是View绘制的背景,要将View转换为Bitmap实际上就是让Canvas上的绘制操作绘制到Bitmap上。


   View转化为Bitmap也称为截屏,让用户看到的View视图转化为图片的过程。


   关于View转化Bitmap涉及到的View类中的方法有:


   protected void onDraw(Canvas canvas)    public void buildDrawingCache()    public void destroyDrawingCache()    public Bitmap getDrawingCache()    public void setDrawingCacheEnabled(boolean enabled)


   下面是常见的几个View截屏的示例:

  

1.View转Bitmap

   

public final Bitmap screenShot(View view) {         if (null == view) {             throw new IllegalArgumentException("parameter can't be null.");         }         view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);         view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());         view.setDrawingCacheEnabled(true);         view.buildDrawingCache();         Bitmap bitmap = view.getDrawingCache();         return bitmap;     }

  

2. Activity转Bitmap,不带状态栏

public final Bitmap screenShot(Activity activity) {         if (null == activity) {             throw new IllegalArgumentException("parameter can't be null.");         }         View view = activity.getWindow().getDecorView();         view.setDrawingCacheEnabled(true);         view.buildDrawingCache();         Bitmap b1 = view.getDrawingCache();         Rect frame = new Rect();         view.getWindowVisibleDisplayFrame(frame);         int statusBarHeight = frame.top;         Point point = new Point();         activity.getWindowManager().getDefaultDisplay().getSize(point);         int width = point.x;         int height = point.y;         Bitmap b2 = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);         view.destroyDrawingCache();         return b2;     }


3. ScrollView转长Bitmap(类似锤子便签的截长图)


 public final Bitmap screenShot(ScrollView scrollView) {         if (null == scrollView) {             throw new IllegalArgumentException("parameter can't be null.");         }         int height = 0;         Bitmap bitmap;         for (int i = 0, s = scrollView.getChildCount(); i < s; i++) {             height += scrollView.getChildAt(i).getHeight();             scrollView.getChildAt(i).setBackgroundResource(android.R.drawable.screen_background_light);         }         bitmap = Bitmap.createBitmap(scrollView.getWidth(), height, Bitmap.Config.ARGB_8888);         final Canvas canvas = new Canvas(bitmap);         scrollView.draw(canvas);         return bitmap;     }


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI