Androidアプリケーションで円形のテキストを表示したい.カスタムテキストビューで行われることは知っていますが、仲間から適切なコードを教えてもらえますか.必要な外観の画像も添付しています.
7 に答える
このテスト済みの完全に機能するコードを試すことができます:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GraphicsView(this));
}
static public class GraphicsView extends View {
private static final String QUOTE = "This is a curved text";
private Path circle;
private Paint cPaint;
private Paint tPaint;
public GraphicsView(Context context) {
super(context);
int color = Color.argb(127, 255, 0, 255);
circle = new Path();
circle.addCircle(230, 350, 150, Direction.CW);
cPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
cPaint.setStyle(Paint.Style.STROKE);
cPaint.setColor(Color.LTGRAY);
cPaint.setStrokeWidth(3);
setBackgroundResource(R.drawable.heart);
tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
tPaint.setColor(Color.BLACK);
tPaint.setTextSize(50);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawTextOnPath(QUOTE, circle, 485, 20, tPaint);
}
}
}
出力は次のようになります。
この助けを願っています。
カスタム ビューを作成し、onDraw をオーバーライドします。onDraw でパスを作成し、drawTextOnPath を使用します。このようなもの。textToDraw は、表示するテキストです。ペイントはお好きなペイントで。
@Override onDraw(Canvas canvas){
Path path = new Path();
path.addCircle(x, y, 200, Path.Direction.CW);
canvas.drawTextOnPath(textToDraw, path, textX, textY, paint);
}
http://developer.android.com/training/custom-views/index.html http://developer.android.com/reference/android/graphics/Canvas.html#drawTextOnPath(java.lang.String, android.graphics .Path、float、float、android.graphics.Paint)
このように独自のオブジェクト「ビュー」を作成する必要があります
public class YourView extends View {
private static final String YOUR_TEXT = "something cool";
private Path _arc;
private Paint _paintText;
public YourView(Context context) {
super(context);
_arc = new Path();
RectF oval = new RectF(50,100,200,250);;
_arc.addArc(oval, -180, 200);
_paintText = new Paint(Paint.ANTI_ALIAS_FLAG);
_paintText.setStyle(Paint.Style.FILL_AND_STROKE);
_paintText.setColor(Color.WHITE);
_paintText.setTextSize(20f);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawTextOnPath(YOUR_TEXT, _arc, 0, 20, _paintText);
invalidate();
}
}
そしてそれをあなたのTextViewとして使用してください:)この助けを願っています
Android SDK にバンドルされている APIDemo ソース コードは、SDK ディレクトリにあります。
「Graphics/Text Align」の例 (ファイル TextAlign.java) は、パスに沿ってテキストを表示する方法を示しています。
その後、微調整して画面を作成できます。
onDraw メソッドのようにカスタム ビューを使用して実装しました。
Path path = new Path();
path.addCircle(x, y, radius, Path.Direction.CW);
myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);
次のコードを試してください..
onDraw(Canvas canvas){
Path path = new Path();
path.addArc(oval, startAngle, sweepAngle)
path.addArc(oval, 0, 180)
}
これはうまくいくかもしれません....
カスタム ビューを実行する必要はありません。正しいものを見つけTypeFace
てプロジェクトに入れ、設定しますTextView
または、Microsoft Office ワード アートを使用して、画像をプロジェクトにコピーします。