android截长屏实现,android 手机截取长屏实例代码
最近项目遇到一个需求:把当前页面保存到手机相册。想了想 我还不会呢,就百度了下大神的足迹,踏着大神的足迹,一路向前。废话不说,记录下,后期学习。
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(),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)));
好了,截取成功了!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
android截长屏实现,android 手机截取长屏实例代码相关推荐
- android手机可以分屏么,安卓手机怎么分屏操作 安卓手机分屏操作设置教程
相信很多朋友在用手机看视频或者玩游戏聊天以及参加一些应付考试等等的时候,都会想能不能同时打开多个界面,其实是可以的,只是因为很多时候手机的分屏功能没有被大家所重视,分屏操作支持大家同时打开多个界面,与 ...
- python爬虫实例手机_Python爬虫实现爬取京东手机页面的图片(实例代码)
实例如下所示: __author__ = 'Fred Zhao' import requests from bs4 import BeautifulSoup import os from urllib ...
- android 4.4 锁屏密码,安卓手机忘记锁屏密码怎么办?安卓手机绕过锁屏密码的几种解决方法...
在2003年有一部冯小刚执导的电影叫作<手机>相信不少人都看过,那句做人要厚道的经典台词流传至今.电影讲述的是男主角手机中隐藏着的秘密被妻子发现而引发的一系列故事,从此手机又有了一个外号叫 ...
- 怎么设置android投屏 桌面程序,手机怎么投屏到电脑?
手机投屏智能电视,相信大家都会操作,那么手机如何投屏电脑,通过键盘和鼠标操作手机屏幕呢.根据使用者的环境,有不同的投屏方法,下文具体说一说. 1.win10操作系统 如果电脑安装了win10操作系统, ...
- 海信电视power android,海信智能电视投屏之安卓手机miracast投屏教程
最近把手机游戏投屏到几十寸的大屏电视上玩,似乎成了一个趋势,像王者荣耀.吃鸡等游戏,在电视大屏幕上玩,确实比在手机上玩要得劲!于是,我就试着给家里的海信智能电视投屏,我用的是安卓手机,型号是华为荣耀系 ...
- Android中使用Camera类编写手机拍照App的实例教程
Camera是Android摄像头硬件的相机类,位于硬件包"android.hardware.Camera"下.它主要用于摄像头捕获图片.启动/停止预览图片.拍照.获取视频帧等,它 ...
- 安卓自动滑屏脚本_手机自动滑屏软件下载-安卓手机自动滑屏(Auto.js)下载v4.1.1 安卓免root版-西西软件下载...
安卓手机自动滑屏软件一款全新功能强大的手机应用脚本,可以更好的实现上下滑屏幕助手,免root屏幕自动滑动,编写软件.游戏脚本等一站式服务功能,需要的朋友快来下载体验吧! 安卓手机自动滑屏是什么软件 手 ...
- 华为nova3e怎么分屏_华为手机怎么分屏?边看视频边聊微信!不是所有手机都能做到...
阅读本文前,请您先点击上面的蓝色字体"自媒创业",再点击"关注",这样您就可以继续免费收到最新文章了.每天都有分享.完全是免费订阅,请放心关注 为什么很多时候电 ...
- php实现手机投屏到电视机,手机画面投屏到电视机/投影仪,最常用最简单的3种方法!...
手机投屏到大屏电视.投影仪,已经成为现在生活中越来越多人的需求. 毕竟手机这类移动设备携带的便利性要远远高于电脑,不管是日常出门.出差都会随身携带,把手机画面投屏到投影仪上,会议上分享PPT.日常投屏 ...
- 安卓手机投屏软件_手机车载投屏的方法安卓、苹果都支持
昨天有用户咨询说他想手机投屏到他的车载显示屏上,经过一番探讨,最后咨询那哥们终于用MHL线进行手机屏幕和车载屏幕连接成功了.事后小编采集了一些手机投屏到车载显示屏上的方法,希望对大家有用. 解决方案一 ...
最新文章
- python面向对象编程的优点-Python面向对象编程
- Opencv判断是否加载图片的两种方法
- matlab灰色关联代码,灰色关联分析matlab代码
- ext springmvc mysql_基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)...
- 移动web性能优化笔记
- 传智杯Java志愿者传智专修学院总共召集了n位志愿者来负责打扫活动,现在需要你负责帮忙统计每位志愿者的工作情况,用来制作光荣榜,给他们发小花花
- Windows mysql-64位 数据库安装
- C++模板:欧拉函数
- 做餐饮,要会算细账,要少折腾
- RPM 打包指南系列 一
- Node.js:中间件——配置静态资源中间件
- Error building Player: UnityException: Bundle Identifier has not been set up correctly
- 阿里云存储负责人吴结生:我经历的三个重大决策
- 《原则》瑞达利欧_epub+mobi+azw3
- boost | 线程与并发(一)atomic
- 记录安装Ubuntu16.04后必须要做的事,杂篇
- java将小写金额转为大写金额
- USYD悉尼大学INFO1110 Oral Exam口语考试复习资料
- 这五款牛逼的 IDEA 插件,堪称代码质量检查利器!
- 3D和2D游戏开发技术里的坐标系总结