2012-10-31 2 views
12

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

enter image description here

+0

Dai uno sguardo a http://stackoverflow.com/questions/10150642/draw-text-in-circular-view –

+0

scusa ma il suo testo completo mostra in un ciclo. – yokees

+3

devi capirlo e cambiarlo secondo le tue necessità. –

risposta

-8

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

enter image description here

+0

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

+0

Vedere i miei aggiornamenti con un'immagine – Yahor10

+0

caro, voglio mostrare questo stile in fase di esecuzione. Potrei anche usare questo stile con le immagini. Ma non lo voglio mai. – yokees

5

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)

+0

Inoltre, per la risoluzione multipla, utilizzare l'altezza del disegnabile sottostante per calcolare il raggio. –

+0

http://www.networketiquette.net/do_not_use_all_caps.htm Ora, per riprendere, cosa significa "non funziona"? – Simon

+0

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

3

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); 
+0

cos'è x, y e path, offset qui? –

1

Prova seguente codice ..

onDraw(Canvas canvas){ 
Path path = new Path(); 
path.addArc(oval, startAngle, sweepAngle) 
path.addArc(oval, 0, 180) 
} 

Questo può funzionare ....

2

È 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

4

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: Screen capture of the path

È quindi possibile modificarlo per costruire il vostro schermo.

+0

Grazie per aver incluso l'immagine degli esempi API. Si risparmia il tempo di dover creare ed eseguire il progetto. – AndroidGuy

+0

https://github.com/appium/android-apidemos/blob/master/src/io/appium/android/apis/graphics/TextAlign.java – azurh

16

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à:

enter image description here

Spero che questo aiuto.