android中图片倒影、圆角效果重绘

编程入门 行业动态 更新时间:2024-10-18 16:54:00

android中图片<a href=https://www.elefans.com/category/jswz/34/1716992.html style=倒影、圆角效果重绘"/>

android中图片倒影、圆角效果重绘

android中图片倒影、圆角效果重绘

迷途d书童 发表于 2012-3-5 15:02 1年前, 0回/358阅

开源中国诚邀您参加 Cloud Foundry 中国群英会!(北京、上海、杭州、成都、深圳)

本文用来记录一些android 操作图片的方法,方便查看。

1.将Drawable转化为Bitmap

源码打印?

  1. public static Bitmap drawableToBitmap(Drawable drawable){   
  2.  int width = drawable.getIntrinsicWidth();   
  3.  int height = drawable.getIntrinsicHeight();   
  4.  Bitmap bitmap = Bitmap.createBitmap(width, height,   
  5.  drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   
  6.  : Bitmap.Config.RGB_565);   
  7.  Canvas canvas = new Canvas(bitmap);   
  8.  drawable.setBounds(0,0,width,height);   
  9.  drawable.draw(canvas);   
  10.  return bitmap;   
  11.  }  


2.获得圆角图片的方法

源码打印?

  1. public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){   
  2.    
  3.  Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap   
  4.  .getHeight(), Config.ARGB_8888);   
  5.  Canvas canvas = new Canvas(output);   
  6.    
  7.  final int color = 0xff424242;   
  8.  final Paint paint = new Paint();   
  9.  final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());   
  10.  final RectF rectF = new RectF(rect);   
  11.    
  12.  paint.setAntiAlias(true);   
  13.  canvas.drawARGB(0, 0, 0, 0);   
  14.  paint.setColor(color);   
  15.  canvas.drawRoundRect(rectF, roundPx, roundPx, paint);   
  16.    
  17.  paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));   
  18.  canvas.drawBitmap(bitmap, rect, rect, paint);   
  19.    
  20.  return output;   
  21.  }  


3.获得带倒影的图片方法

源码打印?

  1. public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){   
  2. final int reflectionGap = 4;   
  3. int width = bitmap.getWidth();   
  4. int height = bitmap.getHeight();   
  5.   
  6. Matrix matrix = new Matrix();   
  7. matrix.preScale(1, -1);   
  8.   
  9. Bitmap reflectionImage = Bitmap.createBitmap(bitmap,   
  10. , height/2, width, height/2, matrix, false);   
  11.   
  12. Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);   
  13.   
  14. Canvas canvas = new Canvas(bitmapWithReflection);   
  15. canvas.drawBitmap(bitmap, 0, 0, null);   
  16. Paint deafalutPaint = new Paint();   
  17. canvas.drawRect(0, height,width,height + reflectionGap,   
  18. deafalutPaint);   
  19.   
  20. canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);   
  21.   
  22. Paint paint = new Paint();   
  23. LinearGradient shader = new LinearGradient(0,   
  24. bitmap.getHeight(), 0, bitmapWithReflection.getHeight()   
  25. + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);   
  26. paint.setShader(shader); //important  
  27. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));   
  28. canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()   
  29. + reflectionGap, paint);   
  30. return bitmapWithReflection;   
  31. }  

更多推荐

android中图片倒影、圆角效果重绘

本文发布于:2024-03-10 08:14:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727443.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:倒影   圆角   效果   图片   android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!