红色框内的图片是服务器上获取到的,本身是矩形,要怎么做成仅左下方和右下方是圆角的效果呢?

下面提供了一种简单的方式


package com.lurencun.androidsysteminfomation; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Bitmap.Config; import android.graphics.PorterDuff.Mode; /**
* <pre>
* 功能说明: android 指定组件的圆角图片处理
* 日期: 2015年1月7日
* 开发者: 左丶郁
*
* 历史记录
* 修改内容:
* 修改人员:
* 修改日期: 2015年1月7日
* </pre>
*/
public class BitmapFillet { public static final int ALL = 347120 ; public static final int TOP = 547120 ; public static final int LEFT = 647120 ; public static final int RIGHT = 747120 ; public static final int BOTTOM = 847120 ; /** * * 指定图片的切边,对图片进行圆角处理 * @param type 具体参见:{@link BitmapFillet.ALL} , {@link BitmapFillet.TOP} , * {@link BitmapFillet.LEFT} , {@link BitmapFillet.RIGHT} , {@link BitmapFillet.BOTTOM} * @param bitmap 需要被切圆角的图片 * @param roundPx 要切的像素大小 * @return * */ public static Bitmap fillet( int type,Bitmap bitmap, int roundPx) { try { // 其原理就是:先建立一个与图片大小相同的透明的Bitmap画板 // 然后在画板上画出一个想要的形状的区域。 // 最后把源图片帖上。 final int width = bitmap.getWidth(); final int height = bitmap.getHeight(); Bitmap paintingBoard = Bitmap.createBitmap(width,height, Config.ARGB_8888); Canvas canvas = new Canvas(paintingBoard); canvas.drawARGB(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT); final Paint paint = new Paint(); paint.setAntiAlias( true ); paint.setColor(Color.BLACK); if ( TOP == type ){ clipTop(canvas,paint,roundPx,width,height); } else if ( LEFT == type ){ clipLeft(canvas,paint,roundPx,width,height); } else if ( RIGHT == type ){ clipRight(canvas,paint,roundPx,width,height); } else if ( BOTTOM == type ){ clipBottom(canvas,paint,roundPx,width,height); } else { clipAll(canvas,paint,roundPx,width,height); } paint.setXfermode( new PorterDuffXfermode(Mode.SRC_IN)); //帖子图 final Rect src = new Rect( 0 , 0 , width, height); final Rect dst = src; canvas.drawBitmap(bitmap, src, dst, paint); return paintingBoard; } catch (Exception exp) { return bitmap; } } private static void clipLeft( final Canvas canvas, final Paint paint, int offset, int width, int height){ final Rect block = new Rect(offset, 0 ,width,height); canvas.drawRect(block, paint); final RectF rectF = new RectF( 0 , 0 , offset * 2 , height); canvas.drawRoundRect(rectF, offset, offset, paint); } private static void clipRight( final Canvas canvas, final Paint paint, int offset, int width, int height){ final Rect block = new Rect( 0 , 0 , width-offset, height); canvas.drawRect(block, paint); final RectF rectF = new RectF(width - offset * 2 , 0 , width , height); canvas.drawRoundRect(rectF, offset, offset, paint); } private static void clipTop( final Canvas canvas, final Paint paint, int offset, int width, int height){ final Rect block = new Rect( 0 , offset, width, height); canvas.drawRect(block, paint); final RectF rectF = new RectF( 0 , 0 , width , offset * 2 ); canvas.drawRoundRect(rectF, offset, offset, paint); } private static void clipBottom( final Canvas canvas, final Paint paint, int offset, int width, int height){ final Rect block = new Rect( 0 , 0 , width, height - offset); canvas.drawRect(block, paint); final RectF rectF = new RectF( 0 , height - offset * 2 , width , height); canvas.drawRoundRect(rectF, offset, offset, paint); } private static void clipAll( final Canvas canvas, final Paint paint, int offset, int width, int height){ final RectF rectF = new RectF( 0 , 0 , width , height); canvas.drawRoundRect(rectF, offset, offset, paint); } } 效果图如下:

更多相关文章

  1. [init.rc] android开机过程执行shell脚本
  2. android 图片放大缩小 多点缩放
  3. Android(安卓)软引用内存缓存图片
  4. Android(安卓)Studio配置和安装(JAVA环境变量的配置)
  5. Android(安卓)Studio 修改Logcat的颜色
  6. Android4.4.2配置修改记录
  7. Android系统修改汇总(MTK)
  8. Android(安卓)LayerDrawable
  9. android抽屉SlidingDrawer——wrap_content非全屏

随机推荐

  1. ubuntu 10.10下面编译android 4.0 出错
  2. 如何使用APK扩展文件
  3. Android定制--------自定义关机时间
  4. Android(安卓)读取doc文件
  5. FregServer进程,启动Binder线程池,睡眠等待
  6. Android(安卓)8.0 Caused by: java.lang.
  7. android 之绘图
  8. 2011.09.26——— android sample之Notep
  9. 2011.08.26——— android ListView之多
  10. android默认壁纸被拉伸修改