一. Android如何禁止Application截屏?
1 | getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); |
如果一遍不行,那就来两遍。FLAG_SECURE.StackOverflow
二. 如何监听截屏
使用ContentObserver进行相册的监听,原链
1 | /** 定义 */ |
1 | /** 使用 */ |
三. 如何截屏
常见截屏方式
1.获取当前Window的DrawingCache的方式,即DecorView的DrawingCache
1 | /** |
- 获取某个View的DrawingCache
1 | public static Bitmap getViewBp(View v) { |
使用三方Library
tarek360.Instacapture,使用Kotlin/Java实现的一个三方库,可以针对常见的View和一般视图实现快速截图。可以截图的包括:
- Google Map
- Dialog,context menus,toasts
- TextureView
- GLSurfaceView
并且可以设置非截图View,无权限要求。
ScrollView截屏
由于ScrollView只有一个直接子View,可以按照如下方式获取,原链:
1 | Bitmap bitmap = getBitmapFromView(scrollview, scrollview.getChildAt(0).getHeight(), scrollview.getChildAt(0).getWidth()); |
ListView
ListView中存在的问题,条目过多,有很多未可见原链。
1 | public static Bitmap getWholeListViewItemsToBitmap() { |
RecyclerView
ListView的替代品RecyclerView,原链
1 | public Bitmap getScreenshotFromRecyclerView(RecyclerView view) { |
WebView
1 | w = new WebView(this); |