圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,下面在Android中实现将普通的矩形图片绘制成圆角矩形。
先来看一下普通矩形图片的显示,代码很简单,从resource中将图片取出来直接拿来用:

点击(此处)折叠或打开

  1. public class PhotoTestActivity extends Activity {
  2. /** Called when the activity is first created. */
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. ImageView image = (ImageView)findViewById(R.id.image);
  8. Bitmap photo = BitmapFactory.decodeResource(getResources(), R.drawable.test);
  9. image.setImageBitmap(photo);
  10. }
  11. }
显示结果如下图:

四个角是直角的图片是不是看起来不那么舒服呢?下面将直角转换为圆角:

点击(此处)折叠或打开

  1. public class PhotoTestActivity extends Activity {
  2. /** Called when the activity is first created. */
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. ImageView image = (ImageView)findViewById(R.id.image);
  8. Bitmap photo = BitmapFactory.decodeResource(getResources(), R.drawable.test);
  9. image.setImageBitmap(createFramedPhoto(500,400,photo,50));
  10. }

  11. /**
  12. *
  13. * @param x 图像的宽度
  14. * @param y 图像的高度
  15. * @param image 源图片
  16. * @param outerRadiusRat 圆角的大小
  17. * @return 圆角图片
  18. */
  19. Bitmap createFramedPhoto(int x, int y, Bitmap image, float outerRadiusRat) {
  20. //根据源文件新建一个darwable对象
  21. Drawable imageDrawable = new BitmapDrawable(image);

  22. // 新建一个新的输出图片
  23. Bitmap output = Bitmap.createBitmap(x, y, Bitmap.Config.ARGB_8888);
  24. Canvas canvas = new Canvas(output);

  25. // 新建一个矩形
  26. RectF outerRect = new RectF(0, 0, x, y);

  27. // 产生一个红色的圆角矩形
  28. Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  29. paint.setColor(Color.RED);
  30. canvas.drawRoundRect(outerRect, outerRadiusRat, outerRadiusRat, paint);

  31. // 将源图片绘制到这个圆角矩形上
  32. paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
  33. imageDrawable.setBounds(0, 0, x, y);
  34. canvas.saveLayer(outerRect, paint, Canvas.ALL_SAVE_FLAG);
  35. imageDrawable.draw(canvas);
  36. canvas.restore();

  37. return output;
  38. }
  39. }

方法的原理就是先创建出一个圆角矩形的图片,然后将我们原来的图片作为上面的一层覆盖在这个圆角矩形上,并且使用该圆角图片的形状。ok,看看结果吧,是不是看起来好多了?

更多相关文章

  1. android学习轨迹之三:图片浏览+拨号程序总结
  2. Android图片与内存优化
  3. Android中ImageView使用网络图片资源的方法
  4. Android系统中读写和显示图片
  5. 鸿洋博客精选
  6. Android(安卓)内存优化总结&实践
  7. Android中使用WebView加载大图
  8. gallery3d源码学习总结(二)
  9. OpenGL ES for Android(安卓)绘制矩形和正方形

随机推荐

  1. Android修行之路——Android程序设计基础
  2. 【漫漫安卓路之承】android tips
  3. Android开发小记之一
  4. android(EditText)属性详解
  5. android shape总结 和控制的风格定制
  6. Android设备硬件序列号(SN、串号)分析
  7. Android(安卓)NDK开发:SeetaFace2实现人脸
  8. Android(安卓)Service :利用Binder实现通
  9. Android(安卓)NDK开发之旅35--FFmpeg+Aud
  10. MPAndroidChart项目实战(二)——双平滑曲线