2011.10.19(2)——— android 圆角与倒影

我只是把代码下了,忘了在呢看到了,对不住作者了

主要包含了 放大缩小 圆角图片 和 倒影

package com.lp.imageUI;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PixelFormat;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.Bitmap.Config;import android.graphics.PorterDuff.Mode;import android.graphics.Shader.TileMode;import android.graphics.drawable.Drawable;public class ImageUtil {//放大缩小图片public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){int width = bitmap.getWidth();int height = bitmap.getHeight();Matrix matrix = new Matrix();float scaleWidht = ((float)w / width);    float scaleHeight = ((float)h / height);    matrix.postScale(scaleWidht, scaleHeight);    Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);return newbmp;}//将Drawable转化为Bitmap public static Bitmap drawableToBitmap(Drawable drawable){    int width = drawable.getIntrinsicWidth();    int height = drawable.getIntrinsicHeight();    Bitmap bitmap = Bitmap.createBitmap(width, height,    drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888                        : Bitmap.Config.RGB_565);    Canvas canvas = new Canvas(bitmap);    drawable.setBounds(0,0,width,height);    drawable.draw(canvas);    return bitmap;        }  //获得圆角图片的方法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 paint = new Paint();final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());final RectF rectF = new RectF(rect); paint.setAntiAlias(true);canvas.drawARGB(0, 0, 0, 0);paint.setColor(color);/** * 画一个圆角矩形 * rectF: 矩形 * roundPx 圆角在x轴上或y轴上的半径 */canvas.drawRoundRect(rectF, roundPx, roundPx+10, paint);//设置两张图片相交时的模式//setXfermode前的是 dst 之后的是src//在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。 //如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;//PorterDuffXfermode就可以来解决这个问题//canvas原有的图片 可以理解为背景 就是dst//新画上去的图片 可以理解为前景 就是src//paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));canvas.drawBitmap(bitmap, rect, rect, paint); return output;}//获得带倒影的图片方法public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){// 图片与倒影间隔距离  final int reflectionGap = 4;// 图片的宽度  int width = bitmap.getWidth(); // 图片的高度  int height = bitmap.getHeight();Matrix matrix = new Matrix();// 图片缩放,x轴变为原来的1倍,y轴为-1倍,实现图片的反转matrix.preScale(1, -1);// 创建反转后的图片Bitmap对象,图片高是原图的一半。  Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height/2, width, height/2, matrix, false);// 创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。 可以理解为这张图将会在屏幕上显示 是原图和倒影的合体  Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888); // 构造函数传入Bitmap对象,为了在图片上画图  Canvas canvas = new Canvas(bitmapWithReflection);// 画原始图片  canvas.drawBitmap(bitmap, 0, 0, null);// 画间隔矩形  Paint deafalutPaint = new Paint();canvas.drawRect(0, height,width,height + reflectionGap,deafalutPaint);// 画倒影图片  canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);// 实现倒影渐变效果  Paint paint = new Paint();LinearGradient shader = new LinearGradient(0,bitmap.getHeight(), 0, bitmapWithReflection.getHeight()+ reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);paint.setShader(shader);// Set the Transfer mode to be porter duff and destination in// 覆盖效果  paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));// Draw a rectangle using the paint with our linear gradientcanvas.drawRect(0, height, width, bitmapWithReflection.getHeight()+ reflectionGap, paint); return bitmapWithReflection;}}


圆角和倒影的效果如图:




更多相关文章

  1. Android图片剪裁-调用系统实现,完美适配魅族等机型
  2. Android(安卓)Studio Gradle多渠道打包(动态设定App名称,应用图标
  3. [置顶] 我的Android进阶之旅------>Android(安卓)Widget 桌面数
  4. Android(安卓)添加图片水印(图片+文字)
  5. android小demo笔记
  6. android上传图片到服务器,求服务器那边和android的Activity的完整
  7. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
  8. Android中上传图片到服务端C#接收图
  9. Android(安卓)高斯模糊 RenderScript封装工具类

随机推荐

  1. 网传360大规模裁员 公司否认:这是常规考核
  2. Android开发基本篇(二)
  3. 一条失去条件的动态 SQL,到手的年终奖飞了
  4. 又一家公司倒闭,阿里还是它的二股东
  5. vivo发年终奖了,几十个月,几十万,酸了
  6. 面试的时候,99%都是这7道题
  7. 面试官:我裤子拉链开了你怎么提醒我?
  8. 公司逼走员工的几个套路,你有中招吗?
  9. 欧阳娜娜入职阿里第一周,花式周报曝光
  10. 如何选择更适合你的 Linux 发行版?