android 手机截取长屏实例代码
发布时间 - 2026-01-11 02:02:00 点击率:次最近项目遇到一个需求:把当前页面保存到手机相册。想了想 我还不会呢,就百度了下大神的足迹,踏着大神的足迹,一路向前。废话不说,记录下,后期学习。
public class ScreenUtils {
/**
* 截取scrollview的屏幕
* @param scrollView
* @return
*/
public static Bitmap getBitmapByView(ScrollView scrollView) {
int h = 0;
Bitmap bitmap = null;
// 获取scrollview实际高度
for (int i = 0; i < scrollView.getChildCount(); i++) {
h += scrollView.getChildAt(i).getHeight();
scrollView.getChildAt(i).setBackgroundColor(
Color.parseColor("#ffffff"));
}
// 创建对应大小的bitmap
bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
return bitmap;
}
/**
* 截图listview
* **/
public static Bitmap getListViewBitmap(ListView listView,String picpath) {
int h = 0;
Bitmap bitmap;
// 获取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);
return bitmap;
}
/**
* 压缩图片
* @param image
* @return
*/
public static Bitmap compressImage(Bitmap image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
int options = 100;
// 循环判断如果压缩后图片是否大于250K,大于继续压缩
while (baos.toByteArray().length / 1024 > 1024 && options >10) {
// 重置baos
baos.reset();
// 这里压缩options%,把压缩后的数据存放到baos中
image.compress(Bitmap.CompressFormat.JPEG, options, baos);
// 每次都减少10
options -= 10;
}
// 把压缩后的数据baos存放到ByteArrayInputStream中
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
// 把ByteArrayInputStream数据生成图片
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
return bitmap;
}
/**
* 保存到sdcard
* @param b
* @return
*/
public static String savePic(Context context, Bitmap b) {
File outfile = new File("/sdcard/image");
// 如果文件不存在,则创建一个新文件
if (!outfile.isDirectory()) {
try {
outfile.mkdir();
} catch (Exception e) {
e.printStackTrace();
}
}
String fname = outfile + "/" + System.currentTimeMillis() + ".jpg";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(fname);
if (null != fos) {
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
outfile.getAbsolutePath(), fname, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fname)));
return fname;
}
}
以上为百度的工具类。
使用方法:
ScreenUtils
.savePic(XXXActivity.this,ScreenUtils.compressImage(ScreenUtils
.getBitmapByView(XXXScrollView)));
好了,截取成功了!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# 手机截取长屏
# 屏幕截取
# 截取手机屏幕
# Android Bitmap的截取及状态栏的隐藏和显示功能
# Android实现bitmap指定区域滑动截取功能
# 解析Android截取手机屏幕两种实现方案
# Android实现拍照截取和相册图片截取
# Android个人中心的头像上传
# 图片编码及截取实例
# Android 仿QQ头像自定义截取功能
# Android开发获取短信的内容并截取短信
# Android中截取当前屏幕图片的实例代码
# Android截取视频帧并转化为Bitmap示例
# Android截取指定View为图片的实现方法
# 大神
# 好了
# 我还
# 不存在
# 想了
# 每次都
# 创建一个
# 大家多多
# 踏着
# 上为
# 后期
# 新文件
# Canvas
# final
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解jQuery中基本的动画方法
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
怎么用AI帮你为初创公司进行市场定位分析?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel如何处理表单验证?(Requests代码示例)
免费网站制作appp,免费制作app哪个平台好?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
简历没回改:利用AI润色让你的文字更专业
零服务器AI建站解决方案:快速部署与云端平台低成本实践
在线教育网站制作平台,山西立德教育官网?
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
如何在服务器上配置二级域名建站?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
如何快速查询网址的建站时间与历史轨迹?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Laravel Fortify是什么,和Jetstream有什么关系
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Firefox Developer Edition开发者版本入口
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
🚀拖拽式CMS建站能否实现高效与个性化并存?
zabbix利用python脚本发送报警邮件的方法
网站制作免费,什么网站能看正片电影?
如何在云服务器上快速搭建个人网站?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
javascript中闭包概念与用法深入理解
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何在阿里云高效完成企业建站全流程?
Android中AutoCompleteTextView自动提示
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel如何使用Vite进行前端资源打包?(配置示例)
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
JavaScript如何实现倒计时_时间函数如何精确控制
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
5种Android数据存储方式汇总
如何快速搭建高效香港服务器网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码

