前言

StaticLayout是android中处理文字换行的一个工具类,StaticLayout已经实现了文本绘制换行处理,下面是如何使用StaticLayout的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
效果图如下:
实例代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText textView;
private ImageView imageView;
private Button btn;
private String content;
@Override
protected 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 = (Button) findViewById(R.id.btn_close);
btn.setOnClickListener(this);
//
}
public static Bitmap textAsBitmap(String text, float textSize) {
TextPaint textPaint = new TextPaint();
// textPaint.setARGB(0x31, 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;
}
@Override
public 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"> <TextView android: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"--> <!--/>--> <EditText android:id="@+id/input_text" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_close" android:layout_width="match_parent" android:text="输入完成" android:layout_height="wrap_content" /> <ImageView android: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, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad) public StaticLayout(CharSequence source, int bufstart, int bufend, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)
android StaticLayout参数解释
StaticLayout(CharSequence source, int bufstart, int bufend, TextPaint paint, int outerwidth, Alignment align, float spacingmult, float spacingadd, boolean includepad, TextUtils.TruncateAt ellipsize, 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
# staticlayout详细讲解
# staticlayout参数
# Android中用StaticLayout实现文本绘制自动换行详解
# 行间
# 换行
# 的是
# 相关内容
# 说了
# 不多
# 对其
# 三种
# 这篇文章
# 谢谢大家
# 来实现
# 如何使用
# 为空
# 这跟
# 这两者
# 前移
# 实现了
# 只能在
# 是一样的
# 到哪里
相关文章:
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
建站主机解析:虚拟主机配置与服务器选择指南
佛山网站制作系统,佛山企业变更地址网上办理步骤?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
详解jQuery停止动画——stop()方法的使用
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何快速重置建站主机并恢复默认配置?
如何选择适合PHP云建站的开源框架?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何选择可靠的免备案建站服务器?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
定制建站价位费用解析与套餐推荐全攻略
如何高效完成独享虚拟主机建站?
简单实现Android文件上传
如何使用Golang table-driven基准测试_多组数据测量函数效率
个人网站制作流程图片大全,个人网站如何注销?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
如何快速配置高效服务器建站软件?
建站之星北京办公室:智能建站系统与小程序生成方案解析
深圳网站制作的公司有哪些,dido官方网站?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何在阿里云域名上完成建站全流程?
北京的网站制作公司有哪些,哪个视频网站最好?
电商平台网站制作流程,电商网站如何制作?
网站制作难吗安全吗,做一个网站需要多久时间?
建站主机空间推荐 高性价比配置与快速部署方案解析
如何做静态网页,sublimetext3.0制作静态网页?
家庭建站与云服务器建站,如何选择更优?
如何彻底卸载建站之星软件?
历史网站制作软件,华为如何找回被删除的网站?
C#怎么创建控制台应用 C# Console App项目创建方法
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
C++时间戳转换成日期时间的步骤和示例代码
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何用腾讯建站主机快速创建免费网站?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
建站之星安装步骤有哪些常见问题?
c# 服务器GC和工作站GC的区别和设置
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何打造高效商业网站?建站目的决定转化率
如何选择域名并搭建高效网站?
全景视频制作网站有哪些,全景图怎么做成网页?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
制作销售网站教学视频,销售网站有哪些?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
高性价比服务器租赁——企业级配置与24小时运维服务
*请认真填写需求信息,我们会在24小时内与您取得联系。