前言

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实现文本绘制自动换行详解
# 行间
# 换行
# 的是
# 相关内容
# 说了
# 不多
# 对其
# 三种
# 这篇文章
# 谢谢大家
# 来实现
# 如何使用
# 为空
# 这跟
# 这两者
# 前移
# 实现了
# 只能在
# 是一样的
# 到哪里
相关文章:
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
,柠檬视频怎样兑换vip?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
,制作一个手机app网站要多少钱?
c# 在ASP.NET Core中管理和取消后台任务
建站之星如何一键生成手机站?
图册素材网站设计制作软件,图册的导出方式有几种?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何在IIS管理器中快速创建并配置网站?
如何在搬瓦工VPS快速搭建网站?
如何选择高效响应式自助建站源码系统?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何通过商城免费建站系统源码自定义网站主题?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
如何用腾讯建站主机快速创建免费网站?
建站org新手必看:2024最新搭建流程与模板选择技巧
建站之星展会模板:智能建站与自助搭建高效解决方案
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
ppt制作免费网站有哪些,ppt模板免费下载网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站主机解析:虚拟主机配置与服务器选择指南
如何选购建站域名与空间?自助平台全解析
如何快速查询网站的真实建站时间?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何在IIS中新建站点并解决端口绑定冲突?
网站代码制作软件有哪些,如何生成自己网站的代码?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
公众号网站制作网页,微信公众号怎么制作?
智能起名网站制作软件有哪些,制作logo的软件?
开心动漫网站制作软件下载,十分开心动画为何停播?
C#如何使用XPathNavigator高效查询XML
长沙企业网站制作哪家好,长沙水业集团官方网站?
网站制作企业,网站的banner和导航栏是指什么?
济南企业网站制作公司,济南社保单位网上缴费步骤?
如何通过可视化优化提升建站效果?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
网站微信制作软件,如何制作微信链接?
微信h5制作网站有哪些,免费微信H5页面制作工具?
在线制作视频的网站有哪些,电脑如何制作视频短片?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何快速上传自定义模板至建站之星?
,购物网站怎么盈利呢?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
如何快速查询域名建站关键信息?
*服务器网站为何频现安全漏洞?
深圳网站制作案例,网页的相关名词有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。