私はキャンバス(ライブ壁紙)にいくつかの文字列を書き込もうとしていますが、長い文字列はそれを行う方法はありますか?
ライブ壁紙なので、キャンバスは私がこれに使用できる唯一のものだと思います。Androidキャンバスに単語wraped tex
答えて
独自の単語の折り返しを行う必要はありません。
何かこのようなandroid.text.Layoutとそのサブクラスandroid.text.StaticLayoutとandroid.text.DynamicLayoutアウト
チェック:
、これはあなたのために動作するかどうStaticLayout layout = new StaticLayout(text, txtpaint, textW,Layout.Alignment.ALIGN_NORMAL, 1.3f, 0, false);
txtcanvas.translate(xoffs, yoffs); //position the text
layout.draw(txtcanvas);
私はこれがうまくいくとは分かりません - ドキュメントから:DynamicLayoutは、テキストが編集されると自動的に更新されるテキストレイアウトです。 ウィジェットがテキストレイアウトを制御するために使用します。独自のウィジェットやカスタム表示オブジェクトを実装している場合や、Canvas.drawText()を直接呼び出す必要がある場合を除き、このクラスを直接使用する必要はありません。 この場合、キャンバスを使用するときにCanvas.drawText()を呼び出す必要があるため、これは機能しません。 – ekatz
これは動作します。独自のカスタムウィジェットを実装することは、まさにこの質問についてです。 layout.drawは、書式設定を行った後、おそらくCanvas.drawTextを呼び出します。描画呼び出しにキャンバスで送信することに注意してください。 –
Olof、私はSOのコメントが+ 1や親指のためではないことを知っていますが、あなたの答えに感謝して、正しいツールを何時間も探してくれました。他のみんなに、そうです、これはうまくいきます。 – andreimarinescu
わからないけどこのような状況では、単にビューを作成してレイアウトし、その「スクリーンショット」をビットマップに書き込むことが本当に好きです。
この関数は、 "just_a_textview"のparams + xmlレイアウトからビットマップを作成します。
private static Bitmap renderTextIntoBitmap(Context context, Bitmap.Config bitmapConfig, String text, int textColor, int maxTextWidth) {
LayoutInflater inflater = LayoutInflater.from(context);
TextView tv = (TextView) inflater.inflate(R.layout.just_a_textview, null);
tv.setText(text);
tv.setMaxWidth(maxTextWidth);
int widthSpec = View.MeasureSpec.makeMeasureSpec(maxTextWidth, View.MeasureSpec.EXACTLY);
int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
tv.measure(widthSpec, heightSpec);
tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight());
tv.setTextColor(textColor);
Bitmap bitmap = Bitmap.createBitmap(tv.getWidth(), tv.getHeight(), bitmapConfig);
Canvas canvas = new Canvas(bitmap);
tv.draw(canvas);
return bitmap;
}
これはすべてのフレームで行いませんが、ビットマップを作成したらキャンバスに描画するのは非常に高速です。これにより、Androidビューのすべての柔軟性が得られます。
テキストが非常に動的な場合はこれが機能しないことがありますが、このようにしてキャンバスマトリックスを使用してスケーリング/回転を行うことができます。 これは、パフォーマンスのためにさらに最適化することができます。レイアウトの膨張を引き出すことによって。
- 1. 単語ファイルをtexファイルに変換する
- 2. Androidスタジオのスタンフォード中国語単語セグメンタ
- 3. Android Appの単語チェッカー
- 4. Android TextViewアニメーション、一度に1単語
- 5. キャンバスにAndroidリスナー?
- 6. HTML5キャンバスでの単語の折り返し
- 7. TeXファイルへ
- 8. キャンバスにキャンバスを描く[Androidスタジオゲーム]
- 9. キャンバスにAndroidのテキスト
- 10. Androidの単語境界正規表現
- 11. TextViewで単語を検索 - android
- 12. は、Androidでキャンバスを反転する簡単な方法がありますAndroidのキャンバス
- 13. Android:キャンバスとonTouchListener
- 14. Emacsでtexcountを使ってLatexやtexファイルの単語数を調べる(オプションのパラメータが必要な場合)
- 15. Android:キャンバス上の単一パスのアルファベットをアニメ化
- 16. キャンバスが単純なAndroidゲームでUI遅れを起こす
- 17. OpenGLのtex-mapping:オブジェクト全体がテクセルの単一の色です
- 18. キャンバスをホームスクリーンウィジェットに描画 - Android
- 19. 単一の単語以外の任意の単語に一致
- 20. FortranまたはTeX to Haskell
- 21. Baminiフォントtexはc#.netを使用して英語フォントに変換します。
- 22. HTML5キャンバスのAndroidピクセル
- 23. Android - アニメーションのキャンバス.DrawLine
- 24. その単語が別の単語
- 25. C#Create単語からの単語
- 26. 単語ゲームの無料単語リスト
- 27. preg_match_all単語のある単語のID
- 28. 単語の折り返しの単語
- 29. 単語のペアから単語
- 30. 単語 - 単語共出現行列
神、それは簡単ではありません、共有する例ですか? –