Android实现截图和分享功能的代码
时间:2022-07-28
本文章向大家介绍Android实现截图和分享功能的代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
先给大家展示下效果图吧
直接上代码:
xml的布局:
<Button
android:id="@+id/btn_jp"
android:layout_marginTop="10dip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="截屏"
android:textColor="#ff999999" /
<Button
android:id="@+id/btn_share"
android:layout_marginTop="10dip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="分享"
android:textColor="#ff999999" /
activity的方法:
private String imagePath;
//截屏
btnJp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// image = ScreenShot.shoot(AddressSelecterActivity.this);
screenshot();
// Bitmap bitmap = getBitmapByView(scrollView);
// savePic(bitmap);
}
});
//分享
btnShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (imagePath != null){
Intent intent = new Intent(Intent.ACTION_SEND); // 启动分享发送的属性
File file = new File(imagePath);
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));// 分享的内容
intent.setType("image/*");// 分享发送的数据类型
Intent chooser = Intent.createChooser(intent, "Share screen shot");
if(intent.resolveActivity(getPackageManager()) != null){
startActivity(chooser);
}
} else {
Toast.makeText(AddressSelecterActivity.this, "先截屏,再分享", Toast.LENGTH_SHORT).show();
}
}
});
截取工具:
//截取屏幕的方法
private void screenshot() {
// 获取屏幕
View dView = getWindow().getDecorView();
dView.setDrawingCacheEnabled(true);
dView.buildDrawingCache();
Bitmap bmp = dView.getDrawingCache();
if (bmp != null)
{
try {
// 获取内置SD卡路径
String sdCardPath = Environment.getExternalStorageDirectory().getPath();
// 图片文件路径
imagePath = sdCardPath + File.separator + "screenshot.png";
File file = new File(imagePath);
FileOutputStream os = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 100, os);
os.flush();
os.close();
} catch (Exception e) {
}
}
}
总结
以上所述是小编给大家介绍的Android实现截图和分享功能的代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!
- Leetcode 290. Word Pattern
- 【深度学习】使用tensorflow实现VGG19网络
- Leetcode 289. Game of Life
- Leetcode 287. Find the Duplicate Number
- Leetcode 284. Peeking Iterator
- Leetcode 283. Move Zeroes
- Leetcode 282. Expression Add Operators
- Leetcode 279. Perfect Squares
- Leetcode 278. First Bad Version
- Leetcode 275. H-Index II
- Leetcode 274. H-Index
- 值得 .NET 开发者了解的15个特性
- Angular和Vue.js 深度对比
- 前端开发者常用的9个JavaScript图表库
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- MySQL 最佳实践:程序端连接池配置
- Java获取CPU序列号
- 第018课 ADC和触摸屏硬件原理详解及裸机编程
- Mysql优化概述及其压力测试工具
- 第019课 I2C协议详解及裸机程序分析
- Redis适配采坑记
- 笔记 GWAS 操作流程6-2:手动计算GWAS分析中的GLM和Logistic模型
- 记录一次生产环境中Redis内存增长异常排查全流程!
- 移植tslib库出现selected device is not a touchscreen I understand的解决方法
- 【PHP】使用dirname(__FILE__)把目录定在需要引用的文件目录下
- php导出大量数据到excel使用轻量级的PHP_XLSXWriter比用phpexcel效率更高,2020年9月10日实测!
- 【前端JQ】使用js或jquery使button按钮变为不可用状态,并改变button上的值。
- 彻底看懂RocketMQ事务实现原理
- Tomcat NIO(10)-IO线程-关键类
- 一文揭开操作系统的神秘面纱