国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android用StaticLayout實現(xiàn)文字轉(zhuǎn)化為圖片效果(類似長微博發(fā)送)

2019-12-12 02:09:59
字體:
供稿:網(wǎng)友

前言

StaticLayout是android中處理文字換行的一個工具類,StaticLayout已經(jīng)實現(xiàn)了文本繪制換行處理,下面是如何使用StaticLayout的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹吧。

效果圖如下:

實例代碼

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private EditText textView;private ImageView imageView;private Button 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 = (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;}@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,"輸入內(nèi)容不能為空",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" /><Buttonandroid: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也是調(diào)用StaticLayout來實現(xiàn)換行的。

StaticLayout的構(gòu)造函數(shù)有三個:

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參數(shù)解釋

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.需要分行的字符串到哪里結(jié)束

4.畫筆對象

5.layout的寬度,字符串超出寬度時自動換行。

6.layout的對其方式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三種。

7.相對行間距,相對字體大小,1.5f表示行間距為1.5倍的字體高度。

8.在基礎(chǔ)行距上添加多少

實際行間距等于這兩者的和。

9.參數(shù)未知

10.從什么位置開始省略

11.超過多少開始省略

需要指出的是這個layout是默認畫在Canvas的(0,0)點的,如果需要調(diào)整位置只能在draw之前移Canvas的起始坐標(biāo)
canvas.translate(x,y);

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 闻喜县| 尉犁县| 常州市| 阿鲁科尔沁旗| 渝中区| 夏邑县| 会同县| 榕江县| 吉隆县| 东安县| 棋牌| 万宁市| 葵青区| 邳州市| 英超| 托克逊县| 始兴县| 响水县| 弥勒县| 黔西县| 镇远县| 石城县| 玉山县| 富民县| 海盐县| 江永县| 星子县| 行唐县| 灌南县| 永丰县| 启东市| 张家界市| 玉溪市| 阜南县| 田林县| 和平区| 隆昌县| 彭水| 达拉特旗| 霸州市| 板桥市|