android定义圆角layout,Android布局切圆角
一、前言:
通常,要想使布局文件以圆角方式显示,最简便的方式是通过CardView进行包装。但是CardView设置圆角后四个角都是同样的弧度,有时候我们接到的需求是指给其中某些角指定圆角,或者给每个角指定不同的弧度,CardView就无法满足了。
以下代码便可实现该功能,给任意角指定任意弧度:
1、自定义FrameLayout
/**
* corner FrameLayout.you can control radius of every corner.
*
* @author gongshoudao
*/
public class CornerFrameLayout extends FrameLayout {
private final float[] mRadii = new float[8];
private final Path mPath = new Path();
public CornerFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (!mPath.isEmpty()) {
canvas.clipPath(mPath);
}
}
@Override
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) {
super.onSizeChanged(width, height, oldWidth, oldHeight);
mPath.reset();
mPath.addRoundRect(new RectF(0, 0, width, height), mRadii, Path.Direction.CW);
}
/**
* set each corner radius.
*
* @param topLeft top left corner radius.
* @param topRight top right corner radius.
* @param bottomRight bottom right radius.
* @param bottomLeft bottom right radius.
*/
public void setRadius(float topLeft, float topRight, float bottomRight, float bottomLeft) {
mRadii[0] = topLeft;
mRadii[1] = topLeft;
mRadii[2] = topRight;
mRadii[3] = topRight;
mRadii[4] = bottomRight;
mRadii[5] = bottomRight;
mRadii[6] = bottomLeft;
mRadii[7] = bottomLeft;
invalidate();
}
/**
* set each corner radius.
*
* @param topLeftX top left X
* @param topLeftY top left y
* @param topRightX top right x
* @param topRightY top right y
* @param bottomRightX bottom right x
* @param bottomRightY bottom right y
* @param bottomLeftX bottom left x
* @param bottomLeftY bottom left y
*/
public void setRadius(float topLeftX, float topLeftY, float topRightX, float topRightY,float bottomRightX, float bottomRightY, float bottomLeftX, float bottomLeftY) {
mRadii[0] = topLeftX;
mRadii[1] = topLeftY;
mRadii[2] = topRightX;
mRadii[3] = topRightY;
mRadii[4] = bottomRightX;
mRadii[5] = bottomRightY;
mRadii[6] = bottomLeftX;
mRadii[7] = bottomLeftY;
invalidate();
}
}
2、使用:
android:id="@+id/h5_game_corner_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent"
android:clipChildren="true">
android定义圆角layout,Android布局切圆角相关推荐
- android程序日历layout,Android使用GridLayout绘制自定义日历控件
效果图 思路:就是先设置Gridlayout的行列数,然后往里面放置一定数目的自定义日历按钮控件,最后实现日历逻辑就可以了. 步骤: 第一步:自定义日历控件(初步) 第二步:实现自定义单个日期按钮控件 ...
- android 加载layout,Android自定义View加载视图之LoadingLayout
介绍 上一篇博文写了一个通用的加载view,这篇在加载view的基础在包裹一层就是LoadingLayout了,主要的目的是免去每次加载时要隐藏主内容布局,然后加载成功之后显示主内容布局这些繁琐操作. ...
- android 定义集合长度,Android Dex文件结构解析
Java源文件通过Java编译器生成CLASS文件,再通过dx工具转换为classes.dex文件. DEX文件从整体上来看是一个索引的结构,类名.方法名.字段名等信息都存储在常量池中,这样能够充分减 ...
- android 定义固定数组,Android 图片数组定义和读取
位置:packages/apps/Launcher2 1.图片数组定义.资源读取 如果有多张图片,这些图片的使用与顺序无关,可以采取这种方式. drawable-nodpi中有3张图片,wallpap ...
- android定义颜色数组,android – 我如何保存在array.xml中的颜色,并让它回到Color []数组...
定义颜色资源,然后将它们添加到阵列以进行访问. #FF007F #FF0000 #FF7F00 #FFFF00 #7FFF00 #00FF00 #00FF7F #00FFFF #007FFF #000 ...
- android 定义数组常量,android 设置屏幕常亮
类似设置禁止截屏和保持屏幕常亮这种依赖生命周期方法的代码,如果需要应用到多个 Activity 的话,可以将其放在 BaseActivity 基类中,避免编写重复性代码.或者还可以借助这个神奇的 Ac ...
- android创建布局文件,android学习——Android Studio下创建menu布局文件
一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...
- android+底部评论框,Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)...
实现的效果图: 自定义Fragment继承BottomSheetDialogFragment 重写它的三个方法: onCreateDialog() onCreateView() onStart() 他 ...
- android view使用方法,Android View构造方法第三参数使用方法详解
我们都知道,在Android中要使用一个View,一般会有两种方式: 在XML文件中配置: 直接在代码中new一个View的对象. 我们今天讨论的内容就是围绕着View的构造方法的. 1.实例 首先我 ...
- Android scroller控件,Android Scroller完全解析
在Android中,任何一个控件都是可以滚动的,因为在View类当中有scrollTo()和scrollBy()这两个方法,如下图所示: 这两个方法的主要作用是将View/ViewGroup移至指定的 ...
最新文章
- tomcat拒绝访问是为什么_Tomcat中的connectTimeout和慢攻击
- 超炫jQuery测试答题功能
- 论DATASNAP远程方法支持自定义对象作参数
- html5储存类型特点,避免踩雷!你不得不知的 HTML5 “新”特性
- Java——IO基础
- DecimalFormat的使用
- notePad++安装及json,xml格式化插件安装
- 《算法设计与分析基础》第2版
- php 死链查询,网站最新死链查询和处理方法
- 关于让div元素垂直居中的几种方法
- Ubuntu常用命令汇总
- git diff:Linux使用meld做git的diff工具
- 基于芯科Host-NCP解决方案的Zigbee 3.0 Gateway技术研究(-)-Z3GatewayHost应用
- Android 资源管理利器Resources和AssetManager介绍
- 靶机12 PENTESTER LAB: XSS AND MYSQL FILE
- cad在线转换_手绘稿画好后我熬了一个通宵描图,结果组长给我说可以一键生成CAD!...
- Spring读源码系列之AOP--03---aop底层基础类学习
- 关于GR/IR—业务流程篇
- 深度学习入门(三)——神经元激活值的计算方法
- java jdk安装失败 mac_Mac环境下JDK安装方法
热门文章
- 米家扫地机器人尘盒怎么取_米家扫地机器人怎么清理灰尘盒
- 移动硬盘驱动器读到,但不显示盘符
- 超简单的scrapy实现ip动态代理与更换ip
- [转载] 百家讲坛——郦波评说曾国藩家训 上部(一)谁来拯救笨小孩
- 小米4c怎么添加语言怎么设置在哪个文件夹,小米4c怎么插卡 小米4c插卡方法【详细步骤】...
- Flutter Connection to **** was not upgraded to websocket
- python编写密码登录程序_python初学之用户登录的实现过程(实例讲解)
- Centos下查看和修改网卡Mac地址
- RFC 协议下载方法
- Iexplore.exe[XXXX]中发生未处理的win32异常”解决办法