主要代码如下: 复制内容到剪贴板
代码:
public static Bitmap createReflectedImage(Bitmap originalImage) {

  final int reflectionGap = 4;

  int width = originalImage.getWidth();

  int height = originalImage.getHeight();

  Matrix matrix = new Matrix();

  matrix.preScale(1, -1);

  Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,

  height / 2, width, height / 2, matrix, false);

  Bitmap bitmapWithReflection = Bitmap.createBitmap(width,

  (height + height / 2), Config.ARGB_8888);

  Canvas canvas = new Canvas(bitmapWithReflection);

  canvas.drawBitmap(originalImage, 0, 0, null);

  Paint defaultPaint = new Paint();

  canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);

  canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);

  Paint paint = new Paint();

  LinearGradient shader = new LinearGradient(0,

  originalImage.getHeight(), 0, bitmapWithReflection.getHeight()

  + reflectionGap, 0×70ffffff, 0×00ffffff,

  TileMode.MIRROR);

  paint.setShader(shader);

  paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

  canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()

  + reflectionGap, paint);

  return bitmapWithReflection;

  }


  解释一下:

  Matrix matrix = new Matrix();

  matrix.preScale(1, -1);


  实现图片的反转,见Android利用Matrix简单处理图片。

  Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,

  height / 2, width, height / 2, matrix, false);


  创建反转后的图片Bitmap对象,图片高是原图的一半。

  Bitmap bitmapWithReflection = Bitmap.createBitmap(width,

  (height + height / 2), Config.ARGB_8888);
创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。
  Canvas canvas = new Canvas(bitmapWithReflection);
  canvas.drawBitmap(originalImage, 0, 0, null);

  创建画布对象,将原图画于画布,起点是原点位置。
  Paint defaultPaint = new Paint();
  canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);
  canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
  
       将反转后的图片画到画布中。
  LinearGradient shader = new LinearGradient(0,
  originalImage.getHeight(), 0, bitmapWithReflection.getHeight()
  + reflectionGap, 0×70ffffff, 0×00ffffff,
  
       创建线性渐变LinearGradient 对象。
  canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
  + reflectionGap, paint);

  画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。

更多相关文章

  1. android 加载图片轻松避免OOM(out of memory) 支持设置缓存大小,
  2. 下载显示网路图片的例子
  3. android 处理图片之--bitmap处理
  4. android Bimtap 各种图片处理方法、图片特效
  5. Android如何实现图片轮播

随机推荐

  1. Edittext禁止输入回车键以及单行显示解决
  2. android Linearlayout gravite 和layout_
  3. android ViewPager TabLayout 动态创建问
  4. android:ellipsize属性的含义
  5. Android-sharedUserId数据权限 android:s
  6. 一个用于Android的Web服务器
  7. [置顶] android通过服务实现消息推送
  8. 【Android Demo】通过WebService获取今日
  9. Android(安卓)ContentProvider
  10. android Activity实现从底部弹出或滑出选