我是靠谱客的博主 虚心哈密瓜,这篇文章主要介绍Android布局生成分享图片代码实例,现在分享给大家,希望可以做个参考。

   

首先, 第一次写博客,也不知道说点什么。写的不好的地方希望大家能理解一下!

然后,说一说自己的艰苦过程!因为没有写过这个功能,而公司又强需此功能,我也只好硬着头皮在网上艰苦的寻找此类功能。找了2天,最后还是找到了一篇类似的文章,经过一些修改终于是实现了此功能!

核心类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package app.makemone.ky.com.testapplication; import android.graphics.Bitmap; import android.graphics.Canvas; import android.os.Environment; import android.util.Log; import android.view.View; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * Created by Administrator on 2018/1/13. */ public class ImageUtils { //然后View和其内部的子View都具有了实际大小,也就是完成了布局,相当与添加到了界面上。接着就可以创建位图并在上面绘制了: public static void layoutView(View v,int width,int height) { // 整个View的大小 参数是左上角 和右下角的坐标 v.layout(0, 0, width, height); int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY); int measuredHeight = View.MeasureSpec.makeMeasureSpec(10000, View.MeasureSpec.AT_MOST); /** 当然,measure完后,并不会实际改变View的尺寸,需要调用View.layout方法去进行布局。 * 按示例调用layout函数后,View的大小将会变成你想要设置成的大小。 */ v.measure(measuredWidth, measuredHeight); v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); } public static String viewSaveToImage(View view,String child) { Log.e("ssh","a"); /** * View组件显示的内容可以通过cache机制保存为bitmap * 我们要获取它的cache先要通过setDrawingCacheEnable方法把cache开启, * 然后再调用getDrawingCache方法就可 以获得view的cache图片了 * 。buildDrawingCache方法可以不用调用,因为调用getDrawingCache方法时, * 若果 cache没有建立,系统会自动调用buildDrawingCache方法生成cache。 * 若果要更新cache, 必须要调用destoryDrawingCache方法把旧的cache销毁,才能建立新的。 */ // view.setDrawingCacheEnabled(true); // view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); //设置绘制缓存背景颜色 // view.setDrawingCacheBackgroundColor(Color.WHITE); // 把一个View转换成图片 Bitmap cachebmp = loadBitmapFromView(view); // aaa.setImageBitmap(cachebmp);//直接展示转化的bitmap //保存在本地 产品还没决定要不要保存在本地 FileOutputStream fos; try { // 判断手机设备是否有SD卡 boolean isHasSDCard = Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED); if (isHasSDCard) { // SD卡根目录 File sdRoot = Environment.getExternalStorageDirectory(); Log.e("ssh",sdRoot.toString()); File file = new File(sdRoot, child+".png"); fos = new FileOutputStream(file); } else throw new Exception("创建文件失败!"); //压缩图片 30 是压缩率,表示压缩70%; 如果不压缩是100,表示压缩率为0 cachebmp.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } view.destroyDrawingCache(); return sharePic(cachebmp,child); } 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; } //保存在本地并一键分享 private static String sharePic(Bitmap cachebmp,String child) { final File qrImage = new File(Environment.getExternalStorageDirectory(), child+".jpg"); if(qrImage.exists()) { qrImage.delete(); } try { qrImage.createNewFile(); } catch (IOException e) { e.printStackTrace(); } FileOutputStream fOut = null; try { fOut = new FileOutputStream(qrImage); } catch (FileNotFoundException e) { e.printStackTrace(); } if(cachebmp == null) { return ""; } cachebmp.compress(Bitmap.CompressFormat.JPEG, 100, fOut); try { fOut.flush(); fOut.close(); } catch (IOException e) { e.printStackTrace(); } // Toast.makeText(this, "保存成功 " + qrImage.getPath().toString(), Toast.LENGTH_SHORT).show(); return qrImage.getPath(); } }

总结:首先,得确认自己需要的功能和实现的思路!其次,就是寻找和编写相关的逻辑代码!最后,想说没有实现不了         的功能就看自己怎么去实现!(代码里面有相关功能实现说明)然后附上源码一份:源码

以上所述是小编给大家介绍的Android布局生成分享图片详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对靠谱客网站的支持!

最后

以上就是虚心哈密瓜最近收集整理的关于Android布局生成分享图片代码实例的全部内容,更多相关Android布局生成分享图片代码实例内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(107)

评论列表共有 0 条评论

立即
投稿
返回
顶部