Per migliorare il rendering TextView in Instagram, gli ingegneri di Instagram forniscono un trucco in here, usano una vista personalizzata (TextLayoutView) per memorizzare il testo. in questo post, non ci danno una demo o ci dicono come usarlo, quindi se voglio usare questo hack, come potrei fare?Come utilizzare "TextLayoutView" di Instagram per migliorare il rendering TextView su Android
5
A
risposta
2
Questa è la mia semplice implementazione:
TextLayoutView:
public class TextLayoutView extends View {
private Layout mLayout;
public TextLayoutView(Context context) {
this(context, null);
}
public TextLayoutView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public TextLayoutView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
long t1=System.currentTimeMillis();
super.onDraw(canvas);
canvas.save();
if (mLayout != null) {
canvas.translate(getPaddingLeft(), getPaddingTop());
mLayout.draw(canvas);
}
canvas.restore();
long t2=System.currentTimeMillis();
Log.i("TEST", "onDraw::"+(t2-t1));
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
long t1=System.currentTimeMillis();
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mLayout != null) {
setMeasuredDimension(
getPaddingLeft() + getPaddingRight() + mLayout.getWidth(),
getPaddingTop() + getPaddingBottom() + mLayout.getHeight());
}
long t2=System.currentTimeMillis();
Log.i("TEST", "onMeasure::"+(t2-t1));
}
public void setTextLayout(Layout layout) {
mLayout = layout;
requestLayout();
}}
si può usare solo questo:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
......
viewHolder.textView.setTextLayout(getLayout(mList.get(position)));
return convertView;
}
private final Map<String, Layout> mLayoutMap = new ConcurrentHashMap<String, Layout>();
private Layout getLayout(String str) {
Layout layout = mLayoutMap.get(str);
if (layout == null) {
TextPaint textPaint = new TextPaint();
textPaint.setTextSize(20);
layout = new StaticLayout(str, textPaint, width, Alignment.ALIGN_CENTER,
1.0f, 0.0f, true);
mLayoutMap.put(str, layout);
}
return layout;
}
+0
Ho creato GitHub Repo per questo. https://github.com/Kishanjvaghela/TextLabel –
Problemi correlati
- 1. spannable su android per textView
- 2. Migliorare il rendering di un grafico JUNG
- 3. instagram Android accedere senza utilizzare la webview
- 4. Come migliorare il tempo di avvio di un'app per Android?
- 5. Java - Come migliorare il rendering durante la stampa?
- 6. Come aggiornare un TextView durante il ciclo su Android?
- 7. Pizzico Zoom su textview android
- 8. Rendering sottotitoli per flussi HLS su Android
- 9. Android: posso aprire l'app di Instagram su un determinato hashtag?
- 10. Come migliorare le prestazioni di rendering della tela?
- 11. come cambiare il testo in Android TextView
- 12. TextView Android
- 13. Schema URL personalizzato Instagram per Android
- 14. Come colorare parte di TextView in Android?
- 15. Copia testo da TextView su Android
- 16. Imposta colore testo su textview Android principale
- 17. TextView Android measureText per arabo
- 18. personalizzati font e TextView personalizzato su Android
- 19. Formule matematiche su textview in android
- 20. parti intenti per Instagram in Android
- 21. Android imposta il simbolo del grado su Textview
- 22. disegnare la riga in TextView su Android
- 23. Collegamento profondo Android nell'app Instagram
- 24. Textview Gravity non funziona correttamente su Android
- 25. Android BitmapDrawable setTileModeX non funziona su TextView
- 26. Perché non posso impostare il testo su un TextView Android?
- 27. È possibile eseguire il rendering di script Android su GPU?
- 28. all'interno di TextView in Android
- 29. Come eseguire il rendering su GL_TEXTURE_EXTERNAL_OES?
- 30. Come implementare il trimming video su android come instagram o Whatsapp?
ho creato GitHub Repo per esso. https://github.com/Kishanjvaghela/TextLabel –