• 注册
当前位置:1313e > 默认分类 >正文

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

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

1.将Drawable转化为Bitmap

[java] view plaincopy
  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.获得圆角图片的方法

[java] view plaincopy
  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.获得带倒影的图片方法

[java] view plaincopy
    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;   

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录