今天在群里面有人问我怎样实现一张图片上面是圆角下面是直角?

类似于这样的图片:


之前用过RoundImageView,其实就是自定义ImageView。想了一下自己重新画一下图片不就ok了么?再给布局设置一个圆角效果。好了我们来看一下源码:

1.首先我们自定义RoundImageView继承于ImageView

public class RoundedImageView extends ImageView {/*圆角的半径,依次为左上角xy半径,右上角,右下角,左下角*/private float[] rids = {10.0f,10.0f,10.0f,10.0f,0.0f,0.0f,0.0f,0.0f,};public RoundedImageView(Context context) {super(context);}public RoundedImageView(Context context, AttributeSet attrs) {super(context, attrs);}public RoundedImageView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}/** * 画图 * by Hankkin at:2015-08-30 21:15:53 * @param canvas */protected void onDraw(Canvas canvas) {Path path = new Path();int w = this.getWidth();int h = this.getHeight();/*向路径中添加圆角矩形。radii数组定义圆角矩形的四个圆角的x,y半径。radii长度必须为8*/path.addRoundRect(new RectF(0,0,w,h),rids,Path.Direction.CW);canvas.clipPath(path);super.onDraw(canvas);}}
然后我们定义一个圆角的半径数组,依次为左上角x,y半径、右上角、右下角、左下角

接下来我们就自己画一下imageview

我们给路径添加圆角矩形,将我们定义的圆角半径设置进去,给canvas切割一下画布就可以了。imageview就画成了上面是圆角,下面是直角了。如果需要图片的四个角为不同的直角圆角,只需要改一下我们的圆角半径值就可以了。

2.然后我们再给布局设置一下圆角,

我们自定义一个round.xml

<?xml version="1.0" encoding="utf-8"?>    
设置一下上下左右的圆角半径,然后设置一下布局的background就ok了

比较简单,如果想要详细学习自定义圆角图片,推荐大家可以学习一下洪洋的

Android BitmapShader 实战 实现圆形、圆角图片

Android Xfermode 实战 实现圆形、圆角图片

这两篇文章,还是比较不错的

更多相关文章

  1. android自定义控件:可旋转View:可作为ImageView、ImageButton
  2. 转载:Android的设置界面及Preference使用
  3. Android(安卓)UI 控件 和 对应监听器详细总结
  4. Android(安卓)Nine Patch图片及按钮背景
  5. Android开发实践:用PopupWindow实现自定义Dailog
  6. Android(安卓)EditText inputType与numeric属性设置以及输入是只
  7. android中使用线程池和临时缓存优化网络图片加载
  8. Android使用selector自定义按钮
  9. Android横竖屏切换总结

随机推荐

  1. Android 中 画图与动画旋转效果(中级)
  2. Android -- getSystemService
  3. Android(安卓)Fragment+ViewPager禁止Vie
  4. flex 4.5 开发android 的文章
  5. Android 屏幕方向以及UI界面状态的保存
  6. Android多语言与国际化
  7. cocos2dx 3.0 scrollview 在android下面
  8. Android的DDMS使用详细说明(Android DDMS
  9. Android(安卓)移动开发TIPS小结4
  10. 线性布局(LinearLayout)下layout_weight