长微博工具非常有用,140字的要求可能阻止你写更多的内容,于是长微博工具应运而生,虽然网上有很多长微博工具,但是我都不是很满意,所以自己想做一个,通过做这个长微博工具,我学习到了很多东西,有两个难点,一个是怎么制作水印,另一个是水印制作成功了,怎么让水印文字多行显示!废话不多说了,先上效果图吧!

生成之后的图片如下:

在这里我就不多解释了,也不多说了,代码中解释非常详细,已经写好了,相信大家肯定能看明白。关键代码如下:

/**
* 将文字添加到图片上
*/
private void makeTxtToImage() {
String content = weiboContentTv.getText().toString();
// 获取到背景图片
Bitmap photo = BitmapFactory.decodeResource(this.getResources(),
R.drawable.weibo_bg); // 获得layoutImage宽度,这里其实就是屏幕的宽度
int totalWidth = layoutImage.getWidth();
// 获得背景图片的高度
int totalHeight = photo.getHeight();
// 得到文本框的宽度
int textWidth = weiboContentTv.getWidth(); // 计算文字的起点
int xWidth = (totalWidth - textWidth) / 2;
// 建立一个空的Bitmap
Bitmap icon = Bitmap.createBitmap(totalWidth, totalHeight,
Bitmap.Config.ARGB_8888);
// 初始化画布绘制的图像到icon上
Canvas canvas = new Canvas(icon); Paint photoPaint = new Paint(); // 建立画笔
// Dither(图像的抖动处理,当每个颜色值以低于8位表示时,对应图像做抖动处理可以实现在可显示颜色总数比较低(比如256色)时还保持较好的显示效果
photoPaint.setDither(true); // 获取更清晰的图像采样
// 过滤
photoPaint.setFilterBitmap(true);// setDither()和setFilterBitmap()的具体含义不是很清楚,但是只要记住:设置上这两个方法,就可以是图像更清晰就行!
// 创建一个指定的新矩形的坐标
Rect src = new Rect(0, 0, totalWidth, totalHeight);
// 创建一个指定的新矩形的坐标
Rect dst = new Rect(0, 0, totalWidth, totalHeight);
// 将photo缩放或扩大到dst使用的填充区photoPaint
canvas.drawBitmap(photo, src, dst, photoPaint);
// 设置文字画笔
TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG
| Paint.DEV_KERN_TEXT_FLAG);
// 字体大小
textPaint.setTextSize(22.0f);
// 采用默认的宽度
textPaint.setTypeface(Typeface.DEFAULT);
// 文字画笔采用的颜色
textPaint.setColor(Color.BLACK);
// 设置阴影,这里不用阴影
// textPaint.setShadowLayer(3f, 1, 1,
// this.getResources().getColor(android.R.color.background_dark));// /**
* StaticLayout中参数的解释:
*
* 1.字符串子资源
*
* 2 .画笔对象
*
* 3.layout的宽度,字符串超出宽度时自动换行。
*
* 4.layout的样式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三种。
*
* 5.相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度。
*
* 6.相对行间距,0表示0个像素。
*
* 实际行间距等于这两者的和。
*
* 7.还不知道是什么意思,参数名是boolean includepad。
*/
StaticLayout layout = new StaticLayout(content, textPaint, textWidth,
Alignment.ALIGN_NORMAL, 1.2F, 0.0F, true);// 这个StaticLayout是让文字在图片中多行显示的关键,android之所以强大就是它已经帮你封装好了,通过对StaticLayout的设置就可以让EditText中的文字多行显示
canvas.translate(xWidth, 0);
layout.draw(canvas);
saveMyBitmap(icon);
} /**
* 保存图片至SD卡中
*
* @param bitmap
*/
public void saveMyBitmap(Bitmap bitmap) {
FileOutputStream fos = null;
try {
File file = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + File.separator + "longweibo");
if (!file.exists()) {
file.mkdirs();
}
fos = new FileOutputStream(new File(file, "longweibo"
+ System.currentTimeMillis() + ".jpg"));
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "长微博生成失败!", Toast.LENGTH_SHORT)
.show();
} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Toast.makeText(MainActivity.this, "长微博生成成功!", Toast.LENGTH_SHORT)
.show();
} }

转载请注明出处:http://blog.csdn.net/loongggdroid/article/details/17591977

通过学习制作长微博工具来了解水印的制作,及EditText中的内容在图片中换行显示的更多相关文章

  1. ArcGIS Engine制作DIY地图工具

    本节将向你介绍,利用ToolStrip制作自定义GIS工具条. 步骤如下: ①向ToolStrip中添加一个Button ②向该Button的lmg属性添加图片素材,并将Button的图片比例(Ima ...

  2. WPF学习11:基于MVVM Light 制作图形编辑工具(2)

    本文是WPF学习10:基于MVVM Light 制作图形编辑工具(1)的后续 这一次的目标是完成 两个任务. 画布 效果: 画布上,选择的方案是:直接以Image作为画布,使用RenderTarget ...

  3. 音频工具kaldi部署及模型制作调研学习

    语音识别简介 语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR).计算机语音识别(英语:Comput ...

  4. WPF学习12:基于MVVM Light 制作图形编辑工具(3)

    本文是WPF学习11:基于MVVM Light 制作图形编辑工具(2)的后续 这一次的目标是完成 两个任务. 本节完成后的效果: 本文分为三个部分: 1.对之前代码不合理的地方重新设计. 2.图形可选 ...

  5. 《零基础学习Python制作ArcGIS自定义工具》课程简介

    Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...

  6. H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权

    代码地址如下:http://www.demodashi.com/demo/14960.html 项目简介 H5DS (HTML5 Design software) 这是一款基于WEB的 H5制作工具. ...

  7. 制作镜像文件工具packer

    openstack镜像制作要在openstack上创建虚拟机,必然要使用到虚拟机镜像. 对于普通用户,可以使用已经创建好的虚拟机镜像.一般是操作系统官方构建并提供的. 某些用户可以有自己独特的需求,需 ...

  8. 阿里UX矢量图标库–最强大的矢量图标库(Icon font制作力荐工具)

    继前面介绍过ICON-FONT的制作后,找了几个ICON库都是国外的今天偶然发现阿里巴巴的图标矢量库,www.iconfont.cn用了之后感觉很强大,丰富的图标库(集合阿里妈妈&淘宝的图标库 ...

  9. 使用python制作时间戳转换工具

    使用python制作时间戳转换工具 python 时间戳转日期 日期转时间戳 前言:作为一个程序员一般情况下,json和时间戳是常用的两个工具,我咨询过很多个朋友,他们一般都是通过在线工具对json进 ...

随机推荐

  1. VS2013配置OpenGL

    创建win32项目而不要创建空项目,否则会出现文件包含问题.

  2. jwt 在.net core 2.0的使用

    jwt个人觉得更适合作共享session的传递格式,本身保密性不好,容易泄露重要信息,他的格式为头.一些用户的自定义声明.前两者的加密(公私对称密钥形式) 需要引用nuget: System.Iden ...

  3. openwrt定制管理

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianguozheng/article/details/24673097 近期这个比較火,可是改了东 ...

  4. 【HHHOJ】ZJOI2019模拟赛(十三)03.10 解题报告

    点此进入比赛 得分: \(97+0+10=107\) 排名: \(Rank\ 3\) \(Rating\):\(+47\) \(T1\):[HHHOJ187]Hashit(点此看题面) 容易想到可以用 ...

  5. ORA-01262,oracle启动报错,及Oracle启动原理

    错误状态: SQL> startup ORA-01261: Parameter db_recovery_file_dest destination string cannot be transl ...

  6. bootstrap suggest搜索建议插件

    近日因工作需要看了下此插件. 首先下载bootstrap js包.添加此插件的引用.注意css样式要引用,不能忘记. 前台页面代码,因为楼主做的是选项卡切换查询不同的结果. <tr> &l ...

  7. Java 类加载体系之 ClassLoader 双亲委托机制

    Java 类加载体系之 ClassLoader 双亲委托机制 java 是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件 ...

  8. CTS、CLS、CLR分别作何解释?

    CTS.CLS.CLR分别作何解释? 答:CTS:通用类型系统.CLS:通用语言规范.CLR:公共语言运行库.

  9. ILSVRC2014检测总结

    ILSVRC 2014结束一段时间了.从下面的表格来看,基本都是RCNN的路子,但是这些牛队都做了改进.自己和人家比差的太远啊,努力. team results Spotlights and impr ...

  10. MVAPICH

    from:https://developer.nvidia.com/mvapich MVAPICH2 is an open source implementation of Message Passi ...