Android实现自定义曲线截屏,Android实现截屏和截长图功能的各种方法
/**
* 截屏
*
* @param activity
* @return
*/
public static Bitmap activityShot(Activity activity) {
/*获取windows中最顶层的view*/
View view = activity.getWindow().getDecorView();
//允许当前窗口保存缓存信息
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
//获取状态栏高度
Rect rect = new Rect();
view.getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
WindowManager windowManager = activity.getWindowManager();
//获取屏幕宽和高
DisplayMetrics outMetrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(outMetrics);
int width = outMetrics.widthPixels;
int height = outMetrics.heightPixels;
//去掉状态栏
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarHeight, width, height - statusBarHeight);
//销毁缓存信息
view.destroyDrawingCache();
view.setDrawingCacheEnabled(false);
return bitmap;
}
2 截取scrollview
/**
* 截取scrollview的屏幕
* @param scrollView
* @return
*/
public static Bitmap getBitmapByView(ScrollView scrollView) {
int h = 0;
Bitmap bitmap = null;
// 获取listView实际高度
for (int i = 0; i < scrollView.getChildCount(); i++) {
h += scrollView.getChildAt(i).getHeight();
scrollView.getChildAt(i).setBackgroundResource(R.drawable.white_drawable);
}
// 创建对应大小的bitmap
bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
// 测试输出
FileOutputStream out = null;
try {
out = new FileOutputStream("/sdcard/screen_test.png");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
if (null != out) {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
}
} catch (IOException e) {
// TODO: handle exception
}
return bitmap;
}
3 截取ListView的屏幕方法
/**
* 截图listview
* **/
public static Bitmap getbBitmap(ListView listView) {
int h = 0;
Bitmap bitmap = null;
// 获取listView实际高度
for (int i = 0; i < listView.getChildCount(); i++) {
h += listView.getChildAt(i).getHeight();
}
// 创建对应大小的bitmap
bitmap = Bitmap.createBitmap(listView.getWidth(), h,
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
listView.draw(canvas);
// 测试输出
FileOutputStream out = null;
try {
out = new FileOutputStream("/sdcard/screen_test.png");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
if (null != out) {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
}
} catch (IOException e) {
// TODO: handle exception
}
return bitmap;
}
4 截取线性布局或相对布局屏幕的方法
/**
* 截取RelativeLayout
**/
public static Bitmap getRelativeLayoutBitmap(RelativeLayout relativeLayout) {
int h = 0;
Bitmap bitmap;
for (int i = 0; i < relativeLayout.getChildCount(); i++) {
h += relativeLayout.getChildAt(i).getHeight();
}
// 创建对应大小的bitmap
bitmap = Bitmap.createBitmap(relativeLayout.getWidth(), h,
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
relativeLayout.draw(canvas);
return bitmap;
}
/**
* 截取LinearLayout
**/
public static Bitmap getLinearLayoutBitmap(LinearLayout linearLayout) {
int h = 0;
Bitmap bitmap;
for (int i = 0; i < linearLayout.getChildCount(); i++) {
h += linearLayout.getChildAt(i).getHeight();
}
// 创建对应大小的bitmap
bitmap = Bitmap.createBitmap(linearLayout.getWidth(), h,
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
linearLayout.draw(canvas);
return bitmap;
}
5 截取除了导航栏之外的整个屏幕
/**
* 截取除了导航栏之外的整个屏幕
*/
public static Bitmap screenShotWholeScreen(Activity activity) {
View dView = activity.getWindow().getDecorView();
dView.setDrawingCacheEnabled(true);
dView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(dView.getDrawingCache());
return bitmap;
}
Android实现自定义曲线截屏,Android实现截屏和截长图功能的各种方法相关推荐
- Android实现截屏和截长图功能的各种方法
微信好友或者朋友圈的分享,可以是普通的截图分享,也可以是截取长图的分享,甚至还会有需求让你拼上生成的二维码和logo图片,下面我们直接来看看这些方法的使用: 先说一下拼接三张不同的图片后有黑色背景的解 ...
- android 截长图 方法,Android实现截屏与截长图功能
本文实例为大家分享了Android实现截屏与截长图功能展示的具体代码,供大家参考,具体内容如下 Demo在GitHub的地址:ScreenShoot 在Android开发中,有时候会遇到需要截屏分享到 ...
- Android实现截屏和截长图功能的几种方法
一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来. 如果开发中想要调 ...
- Android 实现截屏和截长图功能的几种方法
欢迎大家关注我的公众号:**牛角尖尖上起舞** 一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区 ...
- android中最新webview的功能,Android WebView实现截长图功能
本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下 先看看手机自带的长截屏功能: 机型: vivo x9 plus 大胆推测实现逻辑: 1:需要一个可以滚动的Vie ...
- android webview 图片居中,Android WebView实现截长图功能
本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下 先看看手机自带的长截屏功能: 机型: vivo x9 plus 大胆推测实现逻辑: 1:需要一个可以滚动的Vie ...
- Android StaticLayout实现主流便签内容生成长图功能
便签记事本是用户常用的一类手机软件,目前各大主流手机均自带此类的工具,并且功能逐渐完善,其中有一项功能--一键生成图片分享比较吸引眼球,尤其是有些社交app在分享动态时有字数限制,如果将要发的内容生成 ...
- 追求截图的极致-牛牛截图再添新成员-截长图功能
很久没有写关于截图控件的文章了,借着这次截图控件新功能升级,向大家介绍一下牛牛截图! 大家知道,我们对于截图控件的功能性.易用性以及体验都有着非常高的要求,总结如下: 能力方面 我们支持多显示器.高清 ...
- 【Android】自定义theme解决进入app闪黑屏问题
每次启动app时总会闪一下黑屏,时间很短,一闪而过但是还是可以看的很清楚,虽然不影响运行,但是用户体验性极差,效果如图. 初感觉是app加载的问题,网上查相关资料后,该问题出现还是跟Activity生 ...
最新文章
- Error: Invoke-customs are only supported starting with Android O (--min-api 26)
- Redhat 图形模式与命令行模式的切换
- HBase总结(十一)hbase Java API 介绍及使用示例
- Qt中的QPrintDialog
- 剑指Offer #04 重建二叉树(递归)
- 吴恩达 coursera ML 第十四课总结+作业答案
- c语言股票软件开发,一种使用Objcctivc语言开发的股票软件系统的制作方法
- 信创产业发展应不忘初心牢记使命
- 两数、三数、四数之和相关题目(Leetcode题解-Python语言)
- ExtJs2.0学习系列(3)--Ext.Window
- mysql abc_MySql ABC
- CentOS_6.x安装VNC_Server
- 陈计老师《代数不等式》p15例6的别证
- Hadoop(一) Centos7 下Hdoop 安装及伪分布式集群部署
- 如何免费将XPS转换为PDF格式
- HotKey学习总结
- 史记翻译-汉初三杰-张良-留侯世家第二十五
- 阶段三 JavaScript网页编程---js基础语法
- append()方法
- linux centos7 在线和离线安装字体