android Imageview 随心所欲定制四个圆角

实现效果图如下

一个四个圆角的view 包含一个上面两个圆角的Imageview ,这样的设计比较美观,但是这样在安卓端实现让我思考了一段时间,期间想到了两种实现方案去做,但是效果都不理想。
而后在同事想提醒之下,想到了一个完美的实现方案,

代码实现
需要重写Imageview 就可以实现 , 图片使用Glide 加载

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;import com.blankj.utilcode.util.SizeUtils;/**用来显示不规则图片,* 上面两个是圆角,下面两个是直角* */
public class OvalImageView extends android.support.v7.widget.AppCompatImageView {/*圆角的半径,依次为左上角xy半径,右上角,右下角,左下角*/  //此处可根据自己需要修改大小private float[] rids = {SizeUtils.dp2px(5), SizeUtils.dp2px(5), SizeUtils.dp2px(5), SizeUtils.dp2px(5), 0.0f, 0.0f, 0.0f, 0.0f,};public OvalImageView(Context context) {super(context);}public OvalImageView(Context context, AttributeSet attrs) {super(context, attrs);}public OvalImageView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int width = MeasureSpec.getSize(widthMeasureSpec);setMeasuredDimension(width, width);}/*** 画图** @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);}
}

下面是工具类的实现,将dp 转换成px 适配手机

  /*** dp转px** @param dpValue dp值* @return px值*/public static int dp2px(final float dpValue) {final float scale = Utils.getApp().getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}

此处就可以完美收工

android Imageview 随心所欲定制四个圆角相关推荐

  1. 【和UI斗智斗勇的日子】Android实现一个只有四个圆角有边框的边框

    加一个边框 如下图所示,这是安卓中最基础的一个边框 它的代码是这样实现的 <shape xmlns:android="http://schemas.android.com/apk/re ...

  2. android imageview 加边框,RCImageView 自定义圆角ImageView,带边框效果

    概况 RCImageView 圆型或者圆角图片(带有边框效果),适配了ImageView的ScaleType属性 RoundImageView 定义圆角图片,四个角圆角弧度可各自定义,也可不定义默认角 ...

  3. Android—ImageView—自定义四个圆角角度

    1. 自定义SelectableRoundedImageView类,代码如下: package com.dfhx.project.myview; import android.annotation.S ...

  4. Android ImageView 四个角自定义角度,以及角度的变换

    背景: 在正常开发过程中,我们经常会发现一些图片有各种各样的显示,有圆角.直角.圆形.不规则图形等?比较常见的是圆形,还有圆角.今天我们将讲述圆角.四个角不同度数以及通过圆角巧妙变成圆形 1.如果大家 ...

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

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41967509,本文出自:[张鸿洋的博客] 1.概述 记得初学那会写过一篇博客An ...

  6. Android显示九宫图(自定义圆角,仿微信九宫格图)

    详细解析Android显示九宫图(自定义圆角,仿微信九宫格图) 这是一个自定义九宫格图片框架,里面有设置圆角大小,还有当图片一张的时候控件自定义的大小,图片的间隔,四张图片的时候图片自定义为两行两列等 ...

  7. Android项目实战(四):ViewPager切换动画(3.0版本以上有效果)

    原文:Android项目实战(四):ViewPager切换动画(3.0版本以上有效果) 学习内容来自"慕课网" 一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换 ...

  8. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

  9. Android开发笔记(四十三)点击事件

    按钮点击 常用按钮点击 1.单击事件,主要用于Button和ImageButton控件,布局视图与TextView.ImageView控件用的也比较多.相关类名与方法说明如下: 监听器类名 : Vie ...

最新文章

  1. 全网最具深度的三次握手、四次挥手讲解,深夜思考
  2. 12日疯人认证百度云_百度云智峰会12月17日召开,央视财经对话现场要做一场高端访谈...
  3. jQuery Event.stopPropagation() 函数详解
  4. shell的date
  5. UIButton中的三个UIEdgeInsets属性
  6. DenseNet详述
  7. neo4j数据浏览器_Neo4j:在Neo4j浏览器的帮助下探索新数据集
  8. c语言输出后面空格,新人提问:如何将输出时每行最后一个空格删除
  9. 框架笔记:记录XLua的简单接入
  10. Linux常用命令之:软件安装命令
  11. flash as3+php上传源文件下载
  12. excel选中行变色
  13. 玩游戏计算机配置,电脑玩游戏主要看什么配置 玩大型游戏电脑配置推荐
  14. [字节跳动]2018秋招算法题【持续更新中】
  15. Unirech腾讯云国际站代充-云服务器系统盘使用问题
  16. matlab竖向正负柱状图,echarts竖向正负柱状图【如何用EXCEL做正负柱状图?请高手指点,谢谢】...
  17. spyder pyecharts不显示_逆袭的IGZO-IPS小金刚!微星PAG272QRZ显示器评测:色域、响应速度更优秀...
  18. ZUCC_BB平台-Quiz B-3-5-答案
  19. Matlab_Robotic_Toolbox 机器人工具箱
  20. 基于bytom 智能合约_基于HTTP的合约测试@ Gamesys

热门文章

  1. 《刺客信条》等开发者如何解决无处不在的游戏Bug?
  2. Java基础--24--println和print和printf的区别
  3. 会考计算机成绩查询入口官网,2019会考成绩查询网址入口 高中会考怎么查成绩...
  4. 星起航:猜你喜欢和精选联盟的侧重点不同之处在哪
  5. linux 16.04系统下载,Ubuntu MATE 16.04 LTS 发布下载
  6. 尚硅谷张天禹Vue课程v-for中key的原理动画PPT(免费领取)
  7. 从three.js的字体文件中提取部分字符
  8. 复联中你最喜欢的人是谁?排多少名?
  9. linux系统查看centos版本号
  10. 专升本-计算机公共课考点(2)——Windows 7 操作系统