android 图片处理

来源:互联网 发布:中国最大的unity3d论坛 编辑:程序博客网 时间:2024/06/09 15:02

android圆角处理

 public static Bitmap getRoundedCornerbitmap(Bitmap bitmap,float roundpx)
    {
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(output);
    final int color = 0xff424242;
    final Paint p = new Paint();
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
    final RectF rectf = new RectF(rect);
    p.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    p.setColor(color);
    canvas.drawRoundRect(rectf, roundpx, roundpx, p);
    p.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, p);
    return output;
    }

倒影效果:

 public static Bitmap creatReflection(Bitmap bitmap)
    {
    final int reflectionGap = 4;
    int w = bitmap.getWidth();
    int h = bitmap.getHeight();
    Matrix matrix = new Matrix();
    matrix.preScale(1, -1);
    Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, h/2, w, h/2, matrix, false);
    Bitmap bitreflection = Bitmap.createBitmap(w, h+h/2, Config.ARGB_8888);
    Canvas canvas = new Canvas(bitreflection);
    Paint p = new Paint();
    canvas.drawRect(0, h, w, h+reflectionGap, p);
    canvas.drawBitmap(reflectionImage, 0, h+reflectionGap, null);
    Paint p1 = new Paint();
    LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0, bitreflection.getHeight()+reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
    p1.setShader(shader);
    p1.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.DST_IN));
    canvas.drawRect(0, h, w, bitreflection.getHeight()+reflectionGap, p1);

    return bitreflection;
    }

0 0
原创粉丝点击