91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中使用StaticLayout將文字轉化為圖片

發布時間:2021-02-25 15:21:00 來源:億速云 閱讀:231 作者:戴恩恩 欄目:移動開發

這篇文章主要為大家詳細介紹了怎么在Android中使用StaticLayout將文字轉化為圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,發現的小伙伴們可以參考一下:

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

實例代碼

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將文字轉化為圖片,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河西区| 兖州市| 清涧县| 高青县| 定结县| 田东县| 海盐县| 阜南县| 辉南县| 阿拉尔市| 正安县| 寿宁县| 商河县| 海盐县| 九龙坡区| 卢氏县| 金华市| 那坡县| 嘉义市| 阿城市| 大渡口区| 察雅县| 凤台县| 耒阳市| 腾冲县| 吴旗县| 汉源县| 平果县| 聊城市| 大连市| 扎兰屯市| 满洲里市| 准格尔旗| 峨山| 当雄县| 缙云县| 浑源县| 潼关县| 临沭县| 永登县| 枞阳县|