Peut-on appliquer l'effet lumineux à un texte comme indiqué ci-dessous:
Mise à jour: Veuillez aussi me dire quelles sont les choses que j'ai besoin de créer quelque chose comme ceci:
Ai-je besoin d'une police Spéciale pour cela?
Peut-on appliquer l'effet lumineux à un texte comme indiqué ci-dessous:
Mise à jour: Veuillez aussi me dire quelles sont les choses que j'ai besoin de créer quelque chose comme ceci:
Ai-je besoin d'une police Spéciale pour cela?
Pour les effets de texte avancés:
Est-il un moyen d'ajouter de l'intérieur de l'ombre à une TextView Android?
En particulier: MagicTextView
Je l'ai utilisé pour les Widgets HD Led: https://market.android.com/details?id=cloudtv.hdwidgets
Bemmu est droit. C'est la meilleure façon de loin, sans passer par les plein OpenGL route. Vous voulez également vous assurer que les TextView un aquate rembourrage défini sur chaque côté, sinon un grand rayon de l'ombre qui correspond à l'origine de la couleur de texte (ou une légère teinte plus claire) permettra de montrer les dropshadow détourage de chaque côté de la TextView.
Vous pourriez même être en mesure d'obtenir encore plus d'un effet de flou par la création d'un affichage en couches groupe avec l'augmentation/la diminution de dropshadow effets (pas sûr de ce que le rendu de perf serait cependant)
J'ai eu une solution de contournement pour atteindre l'exigence, mais pas encore parfait....
L'exemple de résultat:
https://cloud.githubusercontent.com/assets/5714437/3962552/d5c29fee-276c-11e4-9ea3-d1b31d8c54ac.png
Point clé: * Donner à la Peinture, dessiner huit fois dans l' onDraw()
de TextView *
public class ShadowTextView extends TextView {
private final Paint mStrokePaint = new Paint();
private final Rect mTextBounds = new Rect();
public ShadowTextView(Context context) {
super(context);
setupPaint();
}
public ShadowTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setupPaint();
}
public ShadowTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setupPaint();
}
protected void onDraw(Canvas canvas) {
// Get the text to print
final String text = super.getText().toString();
// Figure out the drawing coordinates
super.getPaint().getTextBounds(text, 0, text.length(), mTextBounds);
float radius = (float) Math.hypot(3, 3);
// draw everything
drawShadow(canvas, text, 0, 3);
drawShadow(canvas, text, 0, -3);
drawShadow(canvas, text, 3, 0);
drawShadow(canvas, text, -3, 0);
drawShadow(canvas, text, radius, radius);
drawShadow(canvas, text, -radius, radius);
drawShadow(canvas, text, radius, -radius);
drawShadow(canvas, text, -radius, radius);
super.onDraw(canvas);
}
private void drawShadow (Canvas canvas, String text, float dx, float dy) {
mStrokePaint.setShadowLayer(3, dx, dy, Color.BLACK);
mStrokePaint.setXfermode(new PorterDuffXfermode(Mode.SRC_ATOP));
canvas.drawText(text,
0.0f + this.getPaddingLeft() * 1.0f , (super.getHeight() + mTextBounds.height()) * 0.5f,
mStrokePaint);
}
private final void setupPaint() {
mStrokePaint.setAntiAlias(true);
mStrokePaint.setStyle(Paint.Style.FILL);
// setup stroke
mStrokePaint.setColor(0x75000000);
mStrokePaint.setStrokeWidth(5);
mStrokePaint.setTextSize(super.getTextSize());
mStrokePaint.setFlags(super.getPaintFlags());
mStrokePaint.setTypeface(super.getTypeface());
mStrokePaint.setStrokeCap(Cap.ROUND);
mStrokePaint.setStrokeJoin(Join.ROUND);
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.