在手机屏幕上,选择某个区域进行截屏。

  • 1,借用网络上一张图片,说明每个点的位置,主要是左上角和右下角这两个点。中间那块浅蓝色的就是我们的目标区域了
    /*** 将一个view保存成图片* @param view 传入的目标view* @return*/public static Bitmap loadBitmapFromView(View view) {view.setDrawingCacheEnabled(true);view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);view.setDrawingCacheBackgroundColor(Color.WHITE);int w1 = view.getLeft();int h1 = view.getTop();//int w2 = view.getWidth()+view.getLeft();//int h2 = view.getHeight()+view.getTop();//相当于上面的int w2 = view.getRight();int h2 = view.getBottom();//w2-w1, h2-h1这个两个参数要注意一下,要不图片的背景色和图片的大小不一Bitmap bmp = Bitmap.createBitmap(w2-w1, h2-h1,Bitmap.Config.ARGB_8888);Canvas c = new Canvas(bmp);c.drawColor(Color.WHITE);/** 如果不设置canvas画布为白色,则生成透明 */view.layout(w1, h1, w2, h2);view.draw(c);return bmp;}
  • 2,接下来就是保存我们第一步截出来的图片
    /*** 保存图片到本地* */public void saveBitmap(Context context, Bitmap bitmap) {String sdCardDir = Environment.getExternalStorageDirectory() + "/DCIM/";File appDir = new File(sdCardDir, "cache");//文件夹名称if (!appDir.exists()) {appDir.mkdir();}//文件名,这里你是如果要保存到本地,每次保存的图片的名称都得不一样//文件名加一个当前时间就好:System.currentTimeMillis() String fileName = "InvitationCard_" + "chuangqi.jpg";mFile = new File(appDir, fileName);try {FileOutputStream fos = new FileOutputStream(mFile);bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);fos.flush();fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Log.d("Tag-----", appDir+fileName);//这里做一个简单的打印}
  • 3,接下来就是分享图片,这里用的是开放平台上的SDK,只做关键代码的分析。不是友盟和sharesdk的

    • 微信
    /*** 邀请卡的分享* 微信、朋友圈分享* @param flag  0是分享给微信好友,1是分享到朋友圈*/public void shareCard(int flag) {waitDialog.show();if (!wxApi.isWXAppInstalled()) {Toast.makeText(this, "您还未安装微信客户端", Toast.LENGTH_SHORT).show();waitDialog.dismiss();return;}Bitmap thumb = null;/**主要路径尽量主要写,不能直接写死,因为不用手机保持时的路径有所不同,下面两个就是例子*/storage/sdcard0/DCIM/cacheInvitationCard_chuangqi.png*/storage/emulated/0/DCIM/cacheInvitationCard_chuangqi.jpg*/File file = new File(Environment.getExternalStorageDirectory()+"/DCIM/cache/InvitationCard_chuangqi.jpg");if (file.exists()){thumb = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/DCIM/cache/InvitationCard_chuangqi.png");}WXImageObject imageObject = new WXImageObject(thumb);WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = imageObject;msg.title = "标题";msg.description = "描述";SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = buildTransaction("image/*");//请求的唯一标识req.message = msg;req.scene = flag == 0 ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;boolean fla = wxApi.sendReq(req);waitDialog.dismiss();//测试用的,通过下面标记fla判断是否能调起客户端,true就是可以//Toast.makeText(this, "微信客户端"+"fla=" + fla, Toast.LENGTH_SHORT).show();}使用://分享到微信好友shareCard(0);//分享到微信朋友圈shareCard(1);
  • QQ
    /*** 邀请卡的分享* 微信分享在activity中写* 分享到QQ* @param type  1是分享给好友,2是分享到QQ空间*/public void shareQQCard(int type) {if (!SystemUtils.checkMobileQQ(BaseActivity.this)) {Toast.makeText(BaseActivity.this, "您还未安装QQ客户端", Toast.LENGTH_SHORT).show();return;}Bundle params = new Bundle();params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "应用名称");params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, Environment.getExternalStorageDirectory()+"/DCIM/cache/InvitationCard_chuangqi.png");params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);if (type == 1) {params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);}mTencent.shareToQQ(BaseActivity.this, params, new BaseUiListener());//Log.d("Tags-", imagePath);//Toast.makeText(this, "QQ客户端"+"type=" + type, Toast.LENGTH_SHORT).show();}使用://分享到微信好友shareQQCard(1);//分享到微信朋友圈shareQQCard(2);

  • 还有一种相当简单的分享方式,直接调起客户端。下面是微信的,没有安装客户端可能程序会奔溃,所以最好先判断一下是否已经安装了客户端
//直接用微信给我们留的分享界面,注意这个路径,在存储时打印就知道了
Uri imageUri = Uri.fromFile(new File("/storage/sdcard0/DCIM/cache/InvitationCard_chuangqi.png"));
Intent shareIntent = new Intent();
ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");//包名和界面的路径,这个是分享给微信好友的
//ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");//包名和界面的路径,这个是分享给微信朋友圈
shareIntent.setComponent(comp);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "分享图片"));

不过这种简单的方式,不知道如何监听它的回调(分享成功、失败、取消),如果有知道请也告诉我一下,虚心求教!


部分手机分享失败(华为6.0以上的手机),需要动态请求权限,参考下面这个:

  • 动态申请权限:http://blog.csdn.net/qq_32519693/article/details/74936847

直接在屏幕上,选取区域进行截屏分享到QQ、微信相关推荐

  1. 小米手机解决此区域不可截屏

    小米手机解决此区域不可截屏 无意中暂停视频弹出消息,想试试可不可以截屏竟然可以截屏,但是视频一播放就截屏不了了,录屏也是,直接变黑或者是直接提示弹窗,嘻嘻嘻嘻小米bug还是有好处滴

  2. iOS截屏分享功能实现

    产品经理今天提出一个新的需求,需要实现类似于每日优鲜.淘宝等客户端的截屏分享的功能,即home+power截屏后弹出分享页面,同时将截取到的图片放在当前页面中展示,如下效果: 之前没有做过这样的需求, ...

  3. cocoscreator截屏分享

    cocoscreator截屏分享 背景 公司是做电商的,新年将近,运营部预模仿某宝集福卡模式出一款集福卡小游戏,由H5游戏开发人员(也就是本人)完成并提 供游戏入口链接交由运营人员配置.其中不免会涉及 ...

  4. ios android 截屏 分享,iOS 系统自带截屏分享

    分享一篇iOS系统自带截屏分享 使用方案 UIImage *image = [KJTools kj_shareWithHideBlock:^bool{ /// 隐藏不需要截图的区域 return YE ...

  5. iOS 系统自带截屏分享

    分享一篇iOS系统自带截屏分享 使用方案 UIImage *image = [KJTools kj_shareWithHideBlock:^bool{/// 隐藏不需要截图的区域return YES; ...

  6. QQ浏览器如何修改截屏快捷键?QQ浏览器修改截屏快捷键的方法

    qq浏览器是一款非常好用的搜索服务软件,在日常生活中如果碰到有什么不懂的内容,都可以使用这款软件解决,使用非常的方便,随时都可以满足用户的搜索需求,用户在使用这款软件的时候可以使用到非常多的功能,随时 ...

  7. Android截屏分享

    最近项目需要实现Android截屏分享功能,包括Android截屏获取图片.将图片保存到本地.通知系统相册更新.通过微信.QQ.微博分享截屏图片,本篇博客作为总结回顾. 一.Android截屏获取图片 ...

  8. iOS端如何实现带UI截屏分享

    下载资源文件 1.1 需要开发者 点击这里 来下载分享的demo 1.2 需要 点击这里 下载SDK 导入SDK以及相关文件需要导入下载的SDK资源文件以及UI截屏所需要的6个文件,如下图: 注意:在 ...

  9. Java实现了任意位置截屏(仿QQ截图)

    最近刚刚学完java,就做了这个小程序.当然,也是通过百度查找资料,最后做出了这一个小程序. 功能: 点击截屏按钮,就开始截屏,在屏幕上画出一个区域之后,就可以通过双击将图片保存到桌面.如果不想截屏, ...

最新文章

  1. 设计模式 | 工厂方法模式及典型应用
  2. jQuery 效果——显示隐藏/滑动/淡入淡出/自定义动画||事件切换——简洁版滑动下拉菜单
  3. mysql 导入txt数据到数据表【原创】
  4. AndroidStudio-引用jar包及so文件
  5. linux 释放cache 内存
  6. 我如何向团队解释依赖注入
  7. 利用FormData对象实现AJAX文件上传功能及后端实现
  8. 非常实用的安卓第三方库
  9. 浅谈c++中结构体和共用体的区别
  10. DJ 算法的队列优先优化
  11. 计算机组成原理——总线
  12. IP 库的 8020 法则与那些高大上的名词~
  13. 屡用屡爆,大师们讲课都在偷偷使用四个课程结构模型
  14. Ubuntu 中文目录改为英文目录
  15. 【迪文屏】踩坑指南——汉字显示乱码、背景图不显示问题的解决方法
  16. nginx 499 错误的解决
  17. 固态硬盘 Solid State Disk
  18. 实验一:数据结构之顺序表例程 简易电话薄
  19. 键盘win和alt互换了怎么改回
  20. html无插件播放流,浏览器无插件播放网络视频流RTSP/H264/WEB CAM

热门文章

  1. 面试过程:自我介绍-技术面试-项目介绍-职业规划
  2. Java job interview:实习生项目小程序架构研发系统集成技术
  3. 关于数学库Eigen两个常用函数实现(伪逆矩阵和协方差矩阵)
  4. 计算机软考报名流程介绍
  5. win7计算机打开一直在搜索,win7系统开机总会显示搜索框的解决方法
  6. 计算机文档制作教程,计算机实操课:用word制作电子小报教程.doc
  7. python可以处理表格吗_【Python基础】Python可以处理excel表格吗
  8. 了解抖音小程序的评级。为什么我的抖音小程序申请不了某个功能?
  9. 10年软件测试工程师感悟
  10. 3D相册动态桌面制作