[Android学习笔记二] View转化Bitmap
在View类中的onDraw方法的参数Canvas是View绘制的背景,要将View转换为Bitmap实际上就是让Canvas上的绘制操作绘制到Bitmap上。
View转化为Bitmap也称为截屏,让用户看到的View视图转化为图片的过程。
关于View转化Bitmap涉及到的View类中的方法有:
protectedvoidonDraw(Canvascanvas)publicvoidbuildDrawingCache()publicvoiddestroyDrawingCache()publicBitmapgetDrawingCache()publicvoidsetDrawingCacheEnabled(booleanenabled)
下面是常见的几个View截屏的示例:
1.View转Bitmap
publicfinalBitmapscreenShot(Viewview){if(null==view){thrownewIllegalArgumentException("parametercan'tbenull.");}view.measure(View.MeasureSpec.UNSPECIFIED,View.MeasureSpec.UNSPECIFIED);view.layout(0,0,view.getMeasuredWidth(),view.getMeasuredHeight());view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmapbitmap=view.getDrawingCache();returnbitmap;}
2. Activity转Bitmap,不带状态栏
publicfinalBitmapscreenShot(Activityactivity){if(null==activity){thrownewIllegalArgumentException("parametercan'tbenull.");}Viewview=activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmapb1=view.getDrawingCache();Rectframe=newRect();view.getWindowVisibleDisplayFrame(frame);intstatusBarHeight=frame.top;Pointpoint=newPoint();activity.getWindowManager().getDefaultDisplay().getSize(point);intwidth=point.x;intheight=point.y;Bitmapb2=Bitmap.createBitmap(b1,0,statusBarHeight,width,height-statusBarHeight);view.destroyDrawingCache();returnb2;}
3. ScrollView转长Bitmap(类似锤子便签的截长图)
publicfinalBitmapscreenShot(ScrollViewscrollView){if(null==scrollView){thrownewIllegalArgumentException("parametercan'tbenull.");}intheight=0;Bitmapbitmap;for(inti=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);finalCanvascanvas=newCanvas(bitmap);scrollView.draw(canvas);returnbitmap;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。