先看效果图,是三个imageview在一条直线显示,给顶部圆角以及底部圆角,先看未圆角效果的图:

圆角后:

可以看到效果 中间的没有变,只变换了最上面以及最底部....

实现的原理

就是给整个布局的四个角设置一个和背景颜色一样的效果,例如我换成红色的效果:

可以看到四个边角变成了红色  ,也就是说 ,圆角的实现 就是把四个角的颜色调成和背景色一样即可

接下来看代码:

布局代码,angel 就是设置圆角的角度,edgeColor 是设置圆角的颜色:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:rc="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#cccccc"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:scaleType="fitXY"android:src="@mipmap/test" /><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:scaleType="fitXY"android:src="@mipmap/test" /><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:scaleType="fitXY"android:src="@mipmap/test" /></LinearLayout><contacts.com.hotpoint.FilletViewandroid:layout_width="100dp"android:layout_height="300dp"android:layout_centerInParent="true"rc:angle="10dp"rc:edgeColor="#ff0000"></contacts.com.hotpoint.FilletView></RelativeLayout>

里面test就是那张美女的图片  我也传上来吧,

然后在values文件夹下创建 attr.xml文件,编辑自定义的属性,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources><!--自定义圆角效果--><declare-styleable name="FilletView"><attr name="edgeColor" format="color" /><attr name="angle" format="dimension" /></declare-styleable>
</resources>

接下来就是自定义view了,也很简单,代码如下:

public class FilletView extends View {private PorterDuffXfermode mPorterDuffXfermode;private RectF srcRect;private Context mContext;private int angle;private int edgeColor;public FilletView(Context context) {super(context);mContext = context;}public FilletView(Context context, AttributeSet attrs) {super(context, attrs);mPorterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.XOR);mContext = context;TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FilletView);angle = typedArray.getDimensionPixelOffset(R.styleable.FilletView_angle, 0);edgeColor = typedArray.getColor(R.styleable.FilletView_edgeColor, 00000000);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawColor(Color.TRANSPARENT);Paint _paint = new Paint();int saveCount = canvas.saveLayer(srcRect, _paint, Canvas.ALL_SAVE_FLAG);_paint.setColor(edgeColor);canvas.drawRoundRect(srcRect, angle, angle, _paint);_paint.setXfermode(mPorterDuffXfermode);canvas.drawRect(srcRect, _paint);_paint.setXfermode(null);canvas.restoreToCount(saveCount);}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);srcRect = new RectF(0, 0, w, h);}
}

android 设置4个棱角的颜色,整个布局圆角效果,类似图片圆角相关推荐

  1. android surfaceview 背景颜色,android – 设置Surface View的背景颜色

    有一个解决方法来做到这一点. >为surfaceview添加父视图组,将背景颜色设置为此视图组而不是surfaceview; android:layout_width="match_p ...

  2. Android 设置应用程序的主题颜色

    1.首先了解一下Material Design 各个属性在应用程序的定义 2.在color.xml文件中定义以上颜色值 <resources><color name="co ...

  3. Android日志[基础篇]二 Android Studio修改LogCat日志的颜色

    上一篇提到Android日志的5个级别的日志输出,在logcat里面设置自己喜欢或习惯的颜色,本文不只讲Android Sudio修改logcat的日志颜色. 代码和效果 代码 private voi ...

  4. android textview改变部分文字的颜色和string.xml中文字的替换及部分内容设置颜色、字体、超链接、图片...

    一:TextView组件改变部分文字的颜色: 1.TextView textView = (TextView)findViewById(R.id.textview); 2. 3.//方法一: 4.te ...

  5. Android TextView 设置文字背景色或文字颜色,字体阴影,字体样式

          String str="这是设置TextView部分文字背景颜色和前景颜色的demo!";         int bstart=str.indexOf("背 ...

  6. android设置window背景颜色,android – 设置标题背景颜色

    这个 thread将让你开始在xml文件中建立自己的标题栏,并在你的活动中使用它 编辑 这里是上面链接的内容的简要摘要 – 这只是设置文本的颜色和标题栏的背景 – 没有调整大小,没有按钮,只是最简单的 ...

  7. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  8. android 设置Spinner文字标题颜色 字体大小样式

    原文地址为: android 设置Spinner文字标题颜色 字体大小样式 // 在初始化之前改变 Spinner文字标题颜色         mySpinner.xml 样式文件放在main.xml ...

  9. android studio app字体大小设置,Android Studio App设置TextView文字内容大小颜色

    设置TextView文字内容大小颜色 1.第一种方法在activity_main.xml李设置,Java文件不用改: android:text="这里是文字" android:te ...

最新文章

  1. FPGA之道(49)DCM与PLL
  2. css sprite css雪碧图生成工具
  3. Ubuntu16.04LTS Install Intel® RealSense™ ROS from Sources
  4. 查看mysql数据库版本_MySQL数据库之查看MySQL版本的四种方法
  5. 查看这些有用的ECMAScript 2015(ES6)提示和技巧
  6. 函数加正则实现简单计算器
  7. TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]
  8. 成长中不可或缺的是信仰(转载)
  9. 自我监督学习和无监督学习_弱和自我监督的学习-第4部分
  10. 论文必备:深度学习中的网络结构是怎么画的
  11. Intel Hex概述 以及 intel2readmemh 和 Intel HEX to BINARY File Converter Utility
  12. 网络技术大讲堂:什么是IPv6+?
  13. Xposed框架动态调试第三方APP—实战演示
  14. DayDayUp:我是CSDN开发者生态联盟成员“一个处女座的程序猿”:渡己是一种能力,渡人是一种格局
  15. 基础必学,挑灯夜战KVM虚拟化技术
  16. Linux fs清理文件,linux – 在fs崩溃并运行fsck之后,一些文件被恢复但是找不到丢失的文件?...
  17. 获取抖音视频信息api
  18. 基础_Java正则表达式
  19. 利用python对图像进行傅里叶变换_python用opencv 图像傅里叶变换
  20. 新旧Tier 1巨头中国市场“交锋”,华为模式战斗力如何?

热门文章

  1. Sinfor AC在内网使用代理服务器环境下的部署
  2. 什么是冷备,热备,双机热备,异地容灾备份,云备份,NAS,负载均衡?
  3. 基础类型和引用类型的区别
  4. TypeScript 中的非基础类型声明
  5. matlab实例——三维心心图
  6. 妙趣横生的算法学习1
  7. 论文分享目标检测、图像分割、监督学习等
  8. Flowable文档大全
  9. 【023】tomcat 启动失败,提示 Failed to initialize end point associated with ProtocolHandler 的解决方法
  10. O - 神、上帝以及老天爷