android分享截屏到微信,Android 微信分享长图 ScrollView 生成长截图 View变bitmap
这个不太难,绘制本页布局为图片 这样的功能
1.截屏
这个对于我这个CV战士来说,一见面我就觉得不可取了,
①.截屏 如果有三方库的话 最好了,没有 只能调 手机自带的,然而自带就意味着权限
②.去除 状态栏,可裁剪
2.图片转换
BlankJ的 AndroidUtilCode 关于 图片的ImageUtils 这个工具类 提供了 view2bitmap 很显然 我们可以将其转换为bitmap.
/**
* View to bitmap.
*
* @param view The view.
* @return bitmap
*/
public static Bitmap view2Bitmap(final View view) {
if (view == null) return null;
Bitmap ret = Bitmap.createBitmap(view.getWidth(),
view.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(ret);
Drawable bgDrawable = view.getBackground();
if (bgDrawable != null) {
bgDrawable.draw(canvas);
} else {
canvas.drawColor(Color.WHITE);
}
view.draw(canvas);
return ret;
}
在提供一个可以将bitmap作为图片 保存到本地相册的方法
public static void saveImageToGallery(Context context, Bitmap bmp) {
// 首先保存图片
File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee");
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
}
这个是需要读写权限的
一般来说如果你要变成的图片的View 已经可见了 没超过屏幕
public Bitmap convertViewToBitmap(View view) {
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
return bitmap;
}
②
private static Bitmap loadBitmapFromView(View v) {
int w = v.getWidth();
int h = v.getHeight();
Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
/** 如果不设置canvas画布为白色,则生成透明 */
// c.drawColor(Color.WHITE);
v.layout(0, 0, w, h);
v.draw(c);
return bmp;
}
如果超出了屏幕 那么需要用ScrollView 包住 情况有很多我这里只写我成功的
/**
* 截取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;
}
这里换成其他View 也可以的
https://www.jianshu.com/p/3d03c66cf169?tdsourcetag=s_pcqq_aiomsg
这里有一个可能 你想直接用bitmap 是不行的 至少大的不行 要先压缩
https://blog.csdn.net/FlyPig_Vip/article/details/88574367
android分享截屏到微信,Android 微信分享长图 ScrollView 生成长截图 View变bitmap相关推荐
- android中截屏功能实现,android代码实现截屏功能
android开发中通过View的getDrawingCache方法可以达到截屏的目的,只是缺少状态栏! 原始界面 截屏得到的图片 代码实现 1. 添加权限(AndroidManifest.xml文件 ...
- Android WebView截屏空白或者一片黑如何解决?使用MediaProjection截图。
直接上代码: 入口方法: startTakeScreenShot() 出口方法:返回的Bitmap对象在onActivityResult() 有todo的注释 注意:该截屏方式 在 build.gr ...
- android 后台截屏代码,Android实现截图和分享功能的代码
先给大家展示下效果图吧 直接上代码: xml的布局: android:id="@+id/btn_jp" android:layout_marginTop="10dip&q ...
- Android实现截屏和截长图功能的几种方法
一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来. 如果开发中想要调 ...
- Android系统截屏的实现(附代码)
1.背景 写博客快两年了,写了100+的文章,最火的文章也是大家最关注的就是如何实现android系统截屏.其实我们google android_screen_shot就会找到很对办法,但那些都是很多 ...
- android 截长图 方法,Android实现截屏与截长图功能
本文实例为大家分享了Android实现截屏与截长图功能展示的具体代码,供大家参考,具体内容如下 Demo在GitHub的地址:ScreenShoot 在Android开发中,有时候会遇到需要截屏分享到 ...
- 索尼android 怎么截屏快捷键,索尼XZ Premium怎么截屏 2种索尼XZ Premium截图方法
截屏作为手机常用功能之一,我们经常在分享朋友圈或微博的时候经常需要用到屏幕截屏.今天本文主要分享一下索尼XZ Premium怎么截屏,作为一款相对冷门的非国产骁龙835旗舰机,在使用中难免出现一些不太 ...
- Android 系统截屏实现
在AndroidManifest.xml文件里面填入以下权限 <!--系统截屏权限--> <uses-permission android:name="android.pe ...
- Android实现截屏方式
本文介绍了Android 实现截屏方式整理,分享给大家.希望对大家有帮助 可能的需求: 截自己的屏 截所有的屏 带导航栏截屏 不带导航栏截屏 截屏并编辑选取一部分 自动截取某个空间或者布局 截取长图 ...
最新文章
- ADAS感知算法观察
- 笔记-软考高项-错题笔记汇总1
- 运行Gazebo出现cmd /opt/ros/melodic/lib/gazebo_ros/gzserver类似错误
- java project 连接hibernate 出错
- jQuery Post
- 复变函数在计算机科学的应用,[2018年最新整理]MATLAB在复变函数与积分变换的应用.doc...
- Kubernetes 外部 IP Service 类型
- 李开复:如何设计你的年度计划
- Markdown语法大全
- DELL灵越笔记本插上耳机后,只有外放耳机无声音的解决方法。
- PL2303在ARM Linux下驱动的问题及解决方法
- 【OpenGL基础】|| OpenGL渲染过程介绍
- @Transactional失效情况
- 正则表达式校验身份证号带出出生日期,年龄,性别
- “联想笔记本电脑的电池显示0%,充不进电” 解决方案
- c# MVC API 获取访问者IP 并加以验证
- Nginx 负载均衡 ip_hash和一致性hash
- group by 用法
- 深度式睡眠潜入虚拟世界_潜入swiftui的惊人世界
- 关于域名备案的注意事项