热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

三方分享长图、大图

这是第一次写博文,只是想找个地方积累一下自己觉得有用的,以后再次遇见这些问题的时候就可以更快的解决。描述一下这个问题的背景,一个日志,有文字和很多张图片,以RecyclerView为载体显示

这是第一次写博文,只是想找个地方积累一下自己觉得有用的,以后再次遇见这些问题的时候就可以更快的解决。
描述一下这个问题的背景,一个日志,有文字和很多张图片,以RecyclerView为载体显示,可以上下滑动。分享的时候需要将整个界面都分享出去,包括文字和图片。整个屏幕还可以截图,那超出屏幕的又该怎么去做呢,在网上找了一些代码,整理了一下。先上一张效果图(还不会像其他博友那样做动图,先上静态图)。
分享之前的图:
100, output);
int options2 = 100;
while (output.toByteArray().length > IMAGE_SIZE && options2 != 10) {
output.reset(); //清空baos
bmp.compress(Bitmap.CompressFormat.JPEG, options2, output);//这里压缩options%,把压缩后的数据存放到baos中
options2 -= 10;
}
bmp= BitmapFactory.decodeByteArray(output.toByteArray(), 0, output.toByteArray().length);
image=new UMImage(this,bmp);
}

switch (i) {
case 0:
dialog.shareWeixin(NewsActivity.this, "HelloBaby", mNewsDetail.getContent(), image, umShareListener,false);
break;
case 1:
dialog.shareWeixinCircle(NewsActivity.this, "HelloBaby", mNewsDetail.getContent(), image, umShareListener,true);
break;
case 2:
dialog.shareQQ(NewsActivity.this, "HelloBaby", mNewsDetail.getContent(), image, umShareListener);
break;
case 3:
dialog.shareWeibo(NewsActivity.this, "HelloBaby", mNewsDetail.getContent(), image, umShareListener);
break;
default:
break;
}
}

这里是将ScollView所包含的界面生产一个bitmap,工具类这里也给出。

package com.abings.baby.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Picture;
import android.net.Uri;
import android.os.Environment;
import android.view.View;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
import android.widget.ScrollView;

@SuppressWarnings("deprecation")
public class ContentToPictureUtils {

public static String DCIMCamera_PATH = Environment
.getExternalStorageDirectory() + "/DCIM/Camera/";

/**
* webView
*
* @param context
* @param webView
*/

public static void webviewContent2Png(Context context, WebView webView) {
Bitmap bmp = null;
bmp = captureWebView(webView);
// new Thread(new WorkThread(bmp)).start();
saveBitmapToCamera(context, bmp, null);
}

/**
* mScrollView
*
* @param context
* @param scrollView
*/

public static void scrollviewContent2Png(Context context,
ScrollView scrollView) {
Bitmap bmp = null;
bmp = getBitmapByView(scrollView);
// new Thread(new WorkThread(bmp)).start();
saveBitmapToCamera(context, bmp, null);
}

private static Bitmap captureWebView(WebView webView) {
Picture snapShot = webView.capturePicture();
Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),
snapShot.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
snapShot.draw(canvas);
return bmp;
}

public static Boolean saveBitmapToCamera(Context context, Bitmap bm,
String name) {

File file = null;

if (name == null || name.equals("")) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
Date curDate = new Date(System.currentTimeMillis());
name = formatter.format(curDate) + ".jpg";
}
file= new File(DCIMCamera_PATH);
if (!file.exists()) {
file.mkdirs();
}
file = new File(DCIMCamera_PATH, name);
if (file.exists()) {
file.delete();
}
try {
FileOutputStream out = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;

} catch (IOException e) {

e.printStackTrace();
return false;
}

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(file);
intent.setData(uri);
context.sendBroadcast(intent);

return true;
}

public static Bitmap getBitmapByView(ScrollView scrollView) {
int h = 0;
Bitmap bitmap = null;

for (int i = 0; i h += scrollView.getChildAt(i).getHeight();
scrollView.getChildAt(i).setBackgroundColor(
Color.parseColor("#ffffff"));
}

bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
return bitmap;
}

}

图片生产后,创建UMImage,分享出去。具体分享代码参考友盟配置文档。


推荐阅读
  • 一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ... [详细]
  • 本文探讨了在安卓设备上的微信H5环境中,如何解决长按图片时无法保存或分享Base64编码图片及Blob形式图片的问题,并提供了有效的解决方案。 ... [详细]
  • 转载网址:http:www.open-open.comlibviewopen1326597582452.html参考资料:http:www.cocos2d-ip ... [详细]
  • 本文基于https://major.io/2014/05/13/coreos-vs-project-atomic-a-review/的内容,对CoreOS和Atomic两个操作系统进行了详细的对比,涵盖部署、管理和安全性等多个方面。 ... [详细]
  • Flutter 高德地图插件使用指南
    本文档详细介绍了如何在Flutter项目中集成和使用高德地图插件,包括安装、配置及基本使用方法。 ... [详细]
  • 本文将详细介绍如何使用ViewPager实现多页面滑动切换,并探讨如何去掉其默认的左右切换动画效果。ViewPager是Android开发中常用的组件之一,用于实现屏幕间的内容切换。 ... [详细]
  • Django框架的使用教程mysql数据库[三]
    Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ... [详细]
  • OM 销售订单行项目配置参数管理
    本文探讨了两个关键的配置参数:ONT_RESTRICT_CUST_ITEMS 和 ONT_USE_MVIEW_FOR_ITEMS_LOV,分别用于控制销售订单行中客户项目的限制和项目值列表的物化视图使用。 ... [详细]
  • 统计报表模板及其实现方法
    本文介绍两个实用的统计报表模板,并提供如何将这些静态模板转换为动态JSP页面的方法。同时,文中附上了详细的代码示例。 ... [详细]
  • 本文详细介绍了HTML5中的文件操作API,包括FileList、Blob、File和FileReader等重要JavaScript对象的接口定义及其功能特性。 ... [详细]
  • 使用DataGridViewComboBoxColumn实现数据绑定与操作
    本文详细介绍如何在DataGridView中使用DataGridViewComboBoxColumn来加载、选择和保存数据库中的数据,提供具体的实现步骤和示例代码。 ... [详细]
  • 本文详细解析了Tomcat服务器的核心配置文件server.xml,包括其主要功能、结构组成及各标签的具体作用。 ... [详细]
  • 用友WMS及Oracle EBS R12实施成本解析
    本文探讨了用友WMS的费用构成及其在市场中的应用价值,同时对比分析了Oracle EBS R12的实施成本。作为一家专注于为企业提供数字化转型解决方案的高科技公司,企通数字科技在过去17年间,已成功为上海及周边地区的8000余家企业提供了高效的服务。 ... [详细]
  • 本文将指导您完成SVN客户端的安装过程,并提供一些基本的配置建议。如果您需要安装SVN服务器,请参考其他相关文档。 ... [详细]
  • 对于Java开发者而言,掌握JVM(Java虚拟机)的工作机制不仅能够提升编码效率,还能在遇到复杂问题时提供解决思路。本文旨在全面介绍JVM的基本概念、内部结构及其性能优化技巧。 ... [详细]
author-avatar
江自流
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有