Android用StaticLayout实现文字转化为图片效果(类似长微博发送)

Android用StaticLayout实现文字转化为图片效果(类似长微博发送),第1张

概述前言StaticLayout是android中处理文字换行的一个工具类,StaticLayout已经实现了文本绘制换行处理,下面是如何使用StaticLayout的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

前言

StaticLayout是androID中处理文字换行的一个工具类,StaticLayout已经实现了文本绘制换行处理,下面是如何使用StaticLayout的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

效果图如下:

实例代码

public class MainActivity extends AppCompatActivity implements VIEw.OnClickListener {private EditText textVIEw;private ImageVIEw imageVIEw;private @R_403_5554@ btn;private String content;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);textVIEw = (EditText) findVIEwByID(R.ID.input_text);imageVIEw = (ImageVIEw) findVIEwByID(R.ID.input_image);imageVIEw.setVisibility(VIEw.INVISIBLE);btn = (@R_403_5554@) findVIEwByID(R.ID.btn_close);btn.setonClickListener(this);//}public static Bitmap textAsBitmap(String text,float textSize) {TextPaint textPaint = new TextPaint();// textPaint.setARGB(0x31,0x31,0);textPaint.setcolor(color.BLACK);textPaint.setAntiAlias(true);textPaint.setTextSize(textSize);StaticLayout layout = new StaticLayout(text,textPaint,450,Layout.Alignment.AliGN_norMAL,1.3f,0.0f,true);Bitmap bitmap = Bitmap.createBitmap(layout.getWIDth() + 20,layout.getHeight() + 20,Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);canvas.translate(10,10);// canvas.drawcolor(color.GRAY);canvas.drawcolor(color.transparent,PorterDuff.Mode.CLEAR);//绘制透明色layout.draw(canvas);Log.d("textAsBitmap",String.format("1:%d %d",layout.getWIDth(),layout.getHeight()));return bitmap;}@OverrIDepublic voID onClick(VIEw v) {switch (v.getID()) {case R.ID.btn_close:content = textVIEw.getText().toString().trim();if (content != null && content != "") {Bitmap bitmap = textAsBitmap(content,28);imageVIEw.setVisibility(VIEw.VISIBLE);imageVIEw.setBackgroundResource(R.mipmap.liaotian);imageVIEw.setimageBitmap(bitmap);}else{Toast.makeText(MainActivity.this,"输入内容不能为空",Toast.LENGTH_SHORT);}}}}

布局文件

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"androID:ID="@+ID/activity_main"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:paddingBottom="@dimen/activity_vertical_margin"androID:paddingleft="@dimen/activity_horizontal_margin"androID:paddingRight="@dimen/activity_horizontal_margin"androID:paddingtop="@dimen/activity_vertical_margin"androID:orIEntation="vertical"tools:context="com.example.admin.enjoytalk.MainActivity"><TextVIEwandroID:ID="@+ID/tv_text"androID:layout_wIDth="wrap_content"androID:layout_height="wrap_content"androID:text="Hello World!" /><!--<androID.support.v7.Widget.RecyclerVIEw--><!--androID:layout_centerInParent="true"--><!--androID:layout_wIDth="match_parent"--><!--androID:layout_height="wrap_content"--><!--/>--><EditTextandroID:ID="@+ID/input_text"androID:layout_wIDth="match_parent"androID:layout_height="wrap_content" /><@R_403_5554@androID:ID="@+ID/btn_close"androID:layout_wIDth="match_parent"androID:text="输入完成"androID:layout_height="wrap_content" /><ImageVIEwandroID:ID="@+ID/input_image"androID:layout_wIDth="match_parent"androID:layout_height="wrap_content" /></linearLayout>

这跟TextVIEw的效果是一样的,其实TextVIEw也是调用StaticLayout来实现换行的。

StaticLayout的构造函数有三个:

public StaticLayout(CharSequence source,TextPaint paint,int wIDth,Layout.Alignment align,float spacingmult,float spacingadd,boolean includepad)   public StaticLayout(CharSequence source,int bufstart,int bufend,int outerwIDth,boolean includepad,TextUtils.TruncateAt ellipsize,int ellipsizeDWIDth)

androID StaticLayout参数解释

StaticLayout(CharSequence source,Alignment align,int ellipsizeDWIDth)

1.需要分行的字符串

2.需要分行的字符串从第几的位置开始

3.需要分行的字符串到哪里结束

4.画笔对象

5.layout的宽度,字符串超出宽度时自动换行。

6.layout的对其方式,有AliGN_CENTER, AliGN_norMAL, AliGN_OPPOSITE 三种。

7.相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度。

8.在基础行距上添加多少

实际行间距等于这两者的和。

9.参数未知

10.从什么位置开始省略

11.超过多少开始省略

需要指出的是这个layout是默认画在Canvas的(0,0)点的,如果需要调整位置只能在draw之前移Canvas的起始坐标
canvas.translate(x,y);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

总结

以上是内存溢出为你收集整理的Android用StaticLayout实现文字转化为图片效果(类似长微博发送)全部内容,希望文章能够帮你解决Android用StaticLayout实现文字转化为图片效果(类似长微博发送)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1144675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存