I want to programatically render the edge fading of a TextView
. By which mode I can create a true alpha gradient?
A real edge fading should smoothly reduce the transparency (no overlay gradient hack) from 1.0
to 0.0
so that the top view fade into background view.
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int y = 0;
int height = 300;
int width = getWidth();
LinearGradient shader = new LinearGradient(width / 2, y, width / 2, y + height, 0xff000000, 0x0000000, Shader.TileMode.CLAMP);
Paint p = new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XXX)); // Which mode works?
p.setShader(shader);
canvas.drawRect(0, y, width, y + height, p);
}
I tried all the combinations and none of them worked? Is it impossible to do so?
Here is my solution with an ImageView. I use a GradientDrawable for the alpha.
Activity:
gradient.xml
values.xml
The result (activity background is Red)