Cómo esbozar un TextView?

¿Lo que quiero hacer? (El azul será cambiado como blanco) Introduzca aquí la descripción de la imagen

¿Lo que hice?
He encontrado una clase que extiende TextView que capaz de contorno textview muy cerca de lo que quiero. El problema es que no podía cambiar el color del trazo a ningún color, dibuja siempre como negro. ¿Cómo configurar el color del borde como blanco?

¿Cuál es mi salida:
Introduzca aquí la descripción de la imagen

¿Dónde están mis códigos?

public class TypeFaceTextView extends TextView { private static Paint getWhiteBorderPaint(){ Paint p = new Paint(Color.WHITE); return p; } private static final Paint BLACK_BORDER_PAINT = getWhiteBorderPaint(); static { BLACK_BORDER_PAINT.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); } @Override public void setText(CharSequence text, BufferType type) { super.setText(String.format(text.toString()), type); } private static final int BORDER_WIDTH = 1; private Typeface typeface; public TypeFaceTextView(Context context) { super(context); } public TypeFaceTextView(Context context, AttributeSet attrs) { super(context, attrs); setDrawingCacheEnabled(false); setTypeface(attrs); } private void setTypeface(AttributeSet attrs) { final String typefaceFileName = attrs.getAttributeValue(null, "typeface"); if (typefaceFileName != null) { typeface = Typeface.createFromAsset(getContext().getAssets(), typefaceFileName); } setTypeface(typeface); } public TypeFaceTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setTypeface(attrs); } @Override public void draw(Canvas aCanvas) { aCanvas.saveLayer(null, BLACK_BORDER_PAINT, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.MATRIX_SAVE_FLAG); drawBackground(aCanvas, -BORDER_WIDTH, -BORDER_WIDTH); drawBackground(aCanvas, BORDER_WIDTH + BORDER_WIDTH, 0); drawBackground(aCanvas, 0, BORDER_WIDTH + BORDER_WIDTH); drawBackground(aCanvas, -BORDER_WIDTH - BORDER_WIDTH, 0); aCanvas.restore(); super.draw(aCanvas); } private void drawBackground(Canvas aCanvas, int aDX, int aDY) { aCanvas.translate(aDX, aDY); super.draw(aCanvas); } } 

1) crear su objeto textview extiende TextView

 public class YourTextView extends TextView { ......... 

2) Hacer esto en su método de dibujo

 @Override public void draw(Canvas canvas) { for (int i = 0; i < 5; i++) { super.draw(canvas); } } 

3) establece el lado xml de textview como abajo

 android:shadowColor="@color/white" android:shadowRadius="5" 

¿No podría esto esto pero intentar experimentar con: PorterDuff.Mode

http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html

Intente cambiarlo a "ADD" o "CLEAR", espero que esto ayude.

Necesita cambiar el método getWhiteBorderPaint () a lo siguiente:

 private static Paint getWhiteBorderPaint(){ Paint p = new Paint(); p.setColor(Color.WHITE); return p; } 

El constructor Paint sólo toma banderas de bits y no admite parámetros arbitrarios como parámetros.

Investigado en el problema original planteado por esta pregunta. Encontré la solución.

Primero, cambie DST_OUT a DARKEN

 static { BLACK_BORDER_PAINT.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN)); } 

En segundo lugar, guarde el color del texto original y coloque el color del esquema deseado, dibuje el contorno y, a continuación, restaure el color del texto original.

 @Override public void draw(Canvas aCanvas) { int originalColor = this.getCurrentTextColor(); this.setTextColor(0xff000000); //set it to white. aCanvas.saveLayer(null, borderPaint, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.MATRIX_SAVE_FLAG); drawBackground(aCanvas, -BORDER_WIDTH, -BORDER_WIDTH); drawBackground(aCanvas, BORDER_WIDTH + BORDER_WIDTH, 0); drawBackground(aCanvas, 0, BORDER_WIDTH + BORDER_WIDTH); drawBackground(aCanvas, -BORDER_WIDTH - BORDER_WIDTH, 0); this.setTextColor(originalColor); aCanvas.restore(); super.draw(aCanvas); } 
  • Explicación del ejemplo de JetBoy para dev.android.com?
  • Android: buscando un método drawArc () con radio interior y exterior
  • Android: ¿Cómo hacer esta pintura enmarcada?
  • Unwanted Warp efecto de dibujo de texto en la ruta android
  • Android: calidad de las imágenes redimensionadas en tiempo de ejecución
  • Android - Corte de desplazamiento de pantalla en vivo
  • ¿Cómo hacer que cualquier vista dibuje a la lona?
  • Un método más eficiente de dibujar miles de partículas (Java / Android)
  • Android cómo dibujar un rect rectangular y sombra Layout
  • ¿Cómo crear un bucle de actualización / dibujo apropiadamente con opengl android?
  • Centrar el texto en el círculo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.