「Android/UIテキスト」の版間の差分
提供: 初心者エンジニアの簡易メモ
細 (Admin がページ「Android/テキスト」を「Android/UIテキスト」に移動しました) |
|||
行47: | 行47: | ||
参考: | 参考: | ||
http://android49.blog.fc2.com/blog-entry-20.html | http://android49.blog.fc2.com/blog-entry-20.html | ||
+ | |||
+ | ==テキスト表示== | ||
+ | Paint paint = new Paint(); | ||
+ | paint.setColor(Color.BLUE); | ||
+ | // アンチエイリアス | ||
+ | paint.setAntiAlias(true); | ||
+ | // 文字の大きさ | ||
+ | paint.setTextSize(40); | ||
+ | // 指定した位置に文字列を描く | ||
+ | canvas.drawText("テキスト表示", 0, 0, paint); | ||
+ | |||
+ | ==テキストを傾ける(回転)== | ||
+ | // Pathに沿って文字を書く | ||
+ | paint.setColor(Color.RED); | ||
+ | Path path = new Path(); | ||
+ | path.moveTo(50, 200); | ||
+ | path.lineTo(450, 500); | ||
+ | canvas.drawTextOnPath("文字列を傾ける", path, 0, 0, paint); | ||
+ | paint.setColor(Color.GREEN); | ||
+ | |||
+ | ==テキストを傾ける(回転)メソッド化== | ||
+ | // テキスト回転描画 | ||
+ | public static void drawTextRota(Canvas canvas, String str, int x, int y, int degrees, int size) { | ||
+ | Paint paint = new Paint(); | ||
+ | // Pathに沿って文字を書く | ||
+ | paint.setColor(Color.RED); | ||
+ | // アンチエイリアス | ||
+ | paint.setAntiAlias(true); | ||
+ | // 文字の大きさ | ||
+ | paint.setTextSize(size); | ||
+ | Path path = new Path(); | ||
+ | // 文字列の幅を取得 | ||
+ | float textWidth = paint.measureText(str); | ||
+ | float rad = (float)(degrees * Math.PI / 180); | ||
+ | int x1 = (int)(- textWidth / 2 * Math.cos(rad) + x); | ||
+ | int y1 = (int)(- textWidth / 2 * Math.sin(rad) + y); | ||
+ | int x2 = (int)(textWidth / 2 * Math.cos(rad) + x); | ||
+ | int y2 = (int)(textWidth / 2 * Math.sin(rad) + y); | ||
+ | path.moveTo(x1, y1); | ||
+ | path.lineTo(x2, y2); | ||
+ | canvas.drawTextOnPath(str, path, 0, 0, paint); | ||
+ | } |
2019年8月22日 (木) 11:19時点における最新版
目次
テキスト書き換え
- xmlレイアウト
<TextView android:id="@+id/textView1" android:text="@string/hello" android:layout_width="match_parent" android:layout_height="wrap_content" />
- java
TextView textView1 = (TextView)findViewById(R.id.textView1); textView1.setText("テスト");
テキストアウトライン設定
- xml
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#ffffffff" android:shadowColor="#ff000000" android:shadowDy="0" android:shadowDx="0" android:shadowRadius="4" android:text="test"/>
改行テキスト
- xml
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="1、\nテストです\n\n2、てすとです" android:singleLine="false" />
¥nでなく\n (macだとoption+nで入力)でなければならない。
中央寄せ
android:gravity="center"
フォントサイズ
android:textSize="18sp"
余白
android:paddingTop="10sp" android:paddingBottom="10sp" android:paddingLeft="10sp" android:paddingRight="10sp"
match_parentとmatch_parent
同じ意味だが、match_parentの方が推奨(android 2.2[API 8]以上)
参考: http://android49.blog.fc2.com/blog-entry-20.html
テキスト表示
Paint paint = new Paint(); paint.setColor(Color.BLUE); // アンチエイリアス paint.setAntiAlias(true); // 文字の大きさ paint.setTextSize(40); // 指定した位置に文字列を描く canvas.drawText("テキスト表示", 0, 0, paint);
テキストを傾ける(回転)
// Pathに沿って文字を書く paint.setColor(Color.RED); Path path = new Path(); path.moveTo(50, 200); path.lineTo(450, 500); canvas.drawTextOnPath("文字列を傾ける", path, 0, 0, paint); paint.setColor(Color.GREEN);
テキストを傾ける(回転)メソッド化
// テキスト回転描画 public static void drawTextRota(Canvas canvas, String str, int x, int y, int degrees, int size) { Paint paint = new Paint(); // Pathに沿って文字を書く paint.setColor(Color.RED); // アンチエイリアス paint.setAntiAlias(true); // 文字の大きさ paint.setTextSize(size); Path path = new Path(); // 文字列の幅を取得 float textWidth = paint.measureText(str); float rad = (float)(degrees * Math.PI / 180); int x1 = (int)(- textWidth / 2 * Math.cos(rad) + x); int y1 = (int)(- textWidth / 2 * Math.sin(rad) + y); int x2 = (int)(textWidth / 2 * Math.cos(rad) + x); int y2 = (int)(textWidth / 2 * Math.sin(rad) + y); path.moveTo(x1, y1); path.lineTo(x2, y2); canvas.drawTextOnPath(str, path, 0, 0, paint); }