Gradient Alpha Tranform

Gradient Alpha Tranform

工作中遇到设计给的效果是,图片要从左到右实现一个 alpha 渐变的的效果。当时做的时候花费了蛮长时间的。特此记录一下。

public class GradientAlphaTransform implements Transformation {

    /**
     * A unique key for the transformation, used for caching purposes.
     */
    private static final String KEY = "GradientAlphaTransform";

    @Override
    public Bitmap transform(Bitmap source) {

        // Init shader
        Shader gradientAlphaShader = new LinearGradient(
                0,
                0,
                source.getWidth(),
                0,
                0x99ffffff,
                0x00ffffff,
                Shader.TileMode.CLAMP);

        // Init paint
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
        paint.setShader(gradientAlphaShader);

        // Create and draw circle bitmap
        Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), source.getConfig());
        Canvas canvas = new Canvas(output);
        canvas.drawBitmap(source, 0, 0, null);
        canvas.drawRect(new RectF(0, 0, source.getWidth(), source.getHeight()), paint);

        // Recycle the source bitmap, because we already generate a new one
        source.recycle();
        return output;
    }

    @Override
    public String key() {
        return KEY;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容