.({
:
})
.({
: ‘图片保存成功,快去分享到朋友圈吧~’,
: ‘’,
: 2000
})
},
() {
.({
: ‘保存失败’,
: ‘’
})
}
})
},
() {
// 如果用户拒绝过或没有授权,则再次打开授权窗口
=
.(‘请设置允许访问相册’)
.({
: ‘请设置允许访问相册’,
: ‘’
})
}
})
} {
// 有则直接保存
=
.({
: ,
() {
.({
:
})
.({
: ‘图片保存成功,快去分享到朋友圈吧~’,
: ‘’,
: 2000
})
},
() {
.({
: ‘保存失败’,
: ‘’
})
}
})
}
},
() {
.()
}
})
}
总结
至此所有的步骤都已实现,在绘制的时候会遇到一些异步请求后台返回的数据,所以我用和和进行了封装,确保导出的图片信息是完整的。在绘制的过程确实遇到一些坑的地方。比如初开始导出的图片比例大小不对,还有用测量文字宽度不对,多次绘制(可能受网络原因)有时导出的图片上的文字颜色会有误差等。如果你也遇到一些比较坑的地方可以一起探讨下做个记录,下面附下完整的<a href="https://www.cyeor.com/tag/%e4%bb%a3%e7%a0%81" target="_blank">代码
‘…/…//.’ // 引入模块
= (),
= (‘…/…//.’);
= , // 创建对象
= , // 保存最终生成的导出的图片地址
= ; // 一个全局变量判断是否授权保存到相册
// 获取微信公众二维码
: () {
( (, ) {
.(‘///’, ‘’).( => {
.(, ‘获取微信公众二维码’)
(. == 200) {
.(., ‘’)
(.)
}
}).( => {
.()
})
})
},
// 生成海报
() {
= ;
// 点击生成海报数据埋点
.({
: ‘点击生成海报’
})
(!) {
= .()
.({
: ‘绘制中…’
})
= ( () {
.({
: ,
: () {
(.)
},
: () {
.()
.({
: ‘网络错误请重试’,
: ‘’
})
}
})
})
= ( () {
.({
: ,
: () {
(.)
},
: () {
.()
.({
: ‘网络错误请重试’,
: ‘’
})
}
})
})
.([, ]).( () {
= .(‘’)
.(, .., ‘’)
= 690 ..,
= 1085 ..,
_ = 60, //绘制的头像宽度
_ = 60, //绘制的头像高度
_ = 28, //绘制的头像在画布上的位置
_ = 36, //绘制的头像在画布上的位置
_ = 80, //绘制的二维码宽度
_ = 80, //绘制的二维码高度
_ = 588, //绘制的二维码在画布上的位置
_ = 984, //绘制的二维码在画布上的位置
= .., // 获取总阅读字数
// = .(..)., // 获取总阅读字数的宽度
// = (( + 375) - 325) 2 + 380;
// = / .. + 325;
= 97 / 6 / .. .(). + 325;
.(, .()., , ‘获取总阅读字数的宽度’)
.(‘///.’, 0, 0, 690, 1085)
.(); // 先保存状态 已便于画完圆再用
.(); //开始绘制
//先画个圆 前两个参数确定了圆心 (,) 坐标 第三个参数是圆的半径 四参数是绘图方向 默认是,即顺时针
.(_ / 2 + _, _ / 2 + _, _ / 2, 0, . 2, );
.(); //画了圆 再剪切 原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内
.([0], _, _, _, _); // 推进去图片
.(); //恢复之前保存的绘图上下文状态 可以继续绘制
.(‘#’); // 文字颜色
.(28); // 文字字
.(..., 103, 78); // 绘制文字
. = ‘ 44 -’;
.(‘#’); // 文字颜色
.(, 325, 153); // 绘制文字
. = ‘ 30 -’;
.(‘#’)
.(‘字’, , 150);
. = ‘ 24 -’;
.(‘#’); // 文字颜色
.(‘打败了全国’, 26, 190); // 绘制文字
. = ‘ 24 -’;
.(‘#15’); // 文字颜色
.(.., 154, 190); // 绘制孩子百分比
. = ‘ 24 -’;
.(‘#’); // 文字颜色
.(‘的小朋友’, 205, 190); // 绘制孩子百分比
. = ‘ 32 -’;
.(‘#3’); // 文字颜色
.(.., 50, 290); // 签到天数
.(.., 280, 290); // 阅读时长
.(.., 508, 290); // 听书时长
// 书籍阅读结构
. = ‘ 28 -’;
.(‘#’); // 文字颜色
.(..[0]., 260, 510);
.(..[1]., 420, 532);
.(..[2]., 520, 594);
.(..[3]., 515, 710);
.(..[4]., 492, 828);
.(..[5]., 348, 858);
.(..[6]., 212, 828);
.(..[7]., 148, 726);
.(..[8]., 158, 600);
. = ‘ 18 -’;
.(‘#’); // 文字颜色
.(..[0]., 232, 530);
.(..[1]., 394, 552);
.(..[2]., 496, 614);
.(..[3]., 490, 730);
.(..[4]., 466, 850);
.(..[5]., 323, 878);
.(..[6]., 184, 850);
.(..[7]., 117, 746);
.(..[8]., 130, 621);
.([1], _, _, _, _); // 绘制头像
.(, () {
// 画布转成图片并返回图片地址
.({
: ‘’,
: () {
= .
.({
:
})
.(., ‘’)
.({
: ‘绘制成功’,
})
},
: () {
.({
: ‘绘制失败’,
})
},
: () {
.()
.()
}
})
})
})
}
},
// 保存到系统相册
: () {
= ;
// 数据埋点点击保存学情海报
.({
: ‘保存学情海报’
})
// 获取用户是否开启用户授权相册
(!) {
.({
: () => {
() {
(.[“.”] === ) {
= ;
.({
: ,
() {
.({
:
})
如果你进阶的路上缺乏方向,可以点击我的加入我们的圈子和安卓者们一起学习交流!
以下全部内容都可以在中获取!
进阶学习全套手册
对标阿里7学习视频
大厂高频面试题
最后,借用我最喜欢的乔布斯语录,作为本文的结尾:
人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。
你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。
最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。
自我介绍一下,小编13年上海交大毕业,曾经在小待过,也去过华为、等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面无偿!(备注)
自己的真实想法,其他一切都是次要。
自我介绍一下,小编13年上海交大毕业,曾经在小待过,也去过华为、等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(-2-16)]
[外链图片转存中…(--16)]
[外链图片转存中…(-1-17)]
[外链图片转存中…(-095-17)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面无偿!(备注)
[外链图片转存中…(-01-17)]