Voglio mostrare il testo con forma circolare nella mia applicazione Android. So che è fatto con la visualizzazione del testo di custome, ma può qualche amico darmi il codice corretto. Sto anche allegando l'immagine che tipo di guarda che voglioCome mostrare il testo circolare usando TextView in Android
risposta
Non devi fare visualizzazione personalizzata. Trova corretta TypeFace
, messo nel progetto e impostare al vostro TextView
o Microsoft Office Word arte e copiare le immagini sul progetto
scusa, questo non è possibile con il tipo di faccia, perché il tipo di faccia ti dà solo uno stile di testo non di forma ad arco. – yokees
Vedere i miei aggiornamenti con un'immagine – Yahor10
caro, voglio mostrare questo stile in fase di esecuzione. Potrei anche usare questo stile con le immagini. Ma non lo voglio mai. – yokees
Creare una visualizzazione personalizzata e ignorare l'OnDraw. In onDraw, crea un percorso e usa drawTextOnPath. Qualcosa come questo. textToDraw è il testo che desideri visualizzare. La vernice è qualunque sia la vernice che desideri.
@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)
Inoltre, per la risoluzione multipla, utilizzare l'altezza del disegnabile sottostante per calcolare il raggio. –
http://www.networketiquette.net/do_not_use_all_caps.htm Ora, per riprendere, cosa significa "non funziona"? – Simon
Ho inserito questo codice in doDraw() ma non viene mostrato nulla nella schermata canvas.save(); \t \t Percorso percorso = nuovo percorso(); \t path.addCircle (-10, 10, 200, Path.Direction.CW); \t canvas.drawTextOnPath ("Hello", percorso, -10, -10, null); \t super.onDraw (tela); \t canvas.restore(); – yokees
Bisogna implementare utilizzando viste personalizzate come nel metodo OnDraw:
Path path = new Path();
path.addCircle(x, y, radius, Path.Direction.CW);
myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);
cos'è x, y e path, offset qui? –
Prova seguente codice ..
onDraw(Canvas canvas){
Path path = new Path();
path.addArc(oval, startAngle, sweepAngle)
path.addArc(oval, 0, 180)
}
Questo può funzionare ....
È necessario creare il proprio oggetto "View" come questo
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();
}
}
e poi utilizzarlo come TextView :) spero che questo aiuto
Si può dare un'occhiata al codice sorgente APIDemo bundle con l'SDK Android nella tua directory SDK.
L'esempio "Grafica/Testo Allinea" (file TextAlign.java) mostrano come visualizzare un testo lungo un percorso:
È quindi possibile modificarlo per costruire il vostro schermo.
Grazie per aver incluso l'immagine degli esempi API. Si risparmia il tempo di dover creare ed eseguire il progetto. – AndroidGuy
https://github.com/appium/android-apidemos/blob/master/src/io/appium/android/apis/graphics/TextAlign.java – azurh
si può provare questo codice di lavoro collaudato e completo:
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);}
} }
l'uscita sarà:
Spero che questo aiuto.
Dai uno sguardo a http://stackoverflow.com/questions/10150642/draw-text-in-circular-view –
scusa ma il suo testo completo mostra in un ciclo. – yokees
devi capirlo e cambiarlo secondo le tue necessità. –