Android之布局转圆角

Android之布局转圆角


文章目录

  • Android之布局转圆角
  • 说明
  • 一、效果图
  • 二、实现步骤
    • 1.自定义RoundRelativeLayout
    • 2.使用
  • 总结


说明

很多需求比较无语,需要某个布局转圆角,像个显眼包一样,所以为了满足显眼包,必须整呐

提示:以下是本篇文章正文内容,下面案例可供参考

一、效果图

说明:轮播图可以直接转圆角,图片也可以,我这里只是在轮播图外层嵌套了一个RoundRelativeLayout,直接对RoundRelativeLayout进行转角。
在这里插入图片描述

二、实现步骤

1.自定义RoundRelativeLayout

代码如下(示例):

public class RoundRelativeLayout extends RelativeLayout {private final RectF roundRect = new RectF();private final Paint maskPaint = new Paint();private final Paint zonePaint = new Paint();private Context mContext;private float rect_adius = 20;  //圆角大小public RoundRelativeLayout(Context context) {super(context);init(context);}public RoundRelativeLayout(Context context, AttributeSet attrs) {super(context, attrs);init(context);}public RoundRelativeLayout(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init(context);}private void init(Context context) {this.mContext = context;maskPaint.setAntiAlias(true);maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));zonePaint.setAntiAlias(true);zonePaint.setColor(Color.WHITE);}@Overrideprotected void onLayout(boolean changed, int left, int top, int right, int bottom) {super.onLayout(changed, left, top, right, bottom);int w = getWidth();int h = getHeight();roundRectSet(w, h);}@Overridepublic void draw(Canvas canvas) {canvasSetLayer(canvas);super.draw(canvas);canvas.restore();}/*** 从新设置圆角** @param adius*/public void setRectAdius(float adius) {rect_adius = adius;invalidate();}/*** 圆角区域设置** @param width* @param height*/private void roundRectSet(int width, int height) {roundRect.set(0, 0, width, height);}/*** 画布区域裁剪** @param canvas*/private void canvasSetLayer(Canvas canvas) {canvas.saveLayer(roundRect, zonePaint, Canvas.ALL_SAVE_FLAG);canvas.drawRoundRect(roundRect, rect_adius, rect_adius, zonePaint);//canvas.saveLayer(roundRect, maskPaint, Canvas.ALL_SAVE_FLAG);}
}

2.使用

说明:其实xml布局引用自定义这个就已经成功转角了,这里贴一下设置布局背景的代码,跟正常设置背景一样。

relative_back.setBackgroundColor(Color.parseColor("#ffffff"))

总结

其实就是自定义RoundRelativeLayout进行转角,角度可设置,很简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java智慧工地信息化管理平台源码,依托计算机信息、网络通讯、物联网、系统集成及云计算技术建立

Java智慧工地源码 智慧工地APP源码 系统定义: 智慧工地信息化管理平台是依托计算机信息、网络通讯、物联网、系统集成及云计算技术,通过数据采集、信息动态交互、智能分析,建立起来的一套集成的项目建设综合管理系统。实现项目管理信息化、网…

LeetCode 剑指offer 09.用两个栈实现队列

LeetCode 剑指offer 09.用两个栈实现队列 题目描述 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回…

C语言网络编程实现组播(多播)

1、组播IP划分 224.0.0.0~224.0.0.255 为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用; 224.0.1.0~224.0.1.255 是公用组播地址,可以用于Inter…

Scala的特质trait与java的interface接口的区别,以及Scala特质的自身类型和依赖注入

1. Scala的特质trait与java接口的区别 Scala中的特质(trait)和Java中的接口(interface)在概念和使用上有一些区别: 默认实现:在Java中,接口只能定义方法的签名,而没有默认实现。而在…

机器连接和边缘计算

以一种高效、可扩展的方式进行连接和边缘计算的结合,解决了在工业物联网应用中的机器数据集成问题。 一 边缘计算 边缘计算描述了由中央平台管理的数据分散式处理,它对于工业物联网而言非常重要。在许多应用程序中,由于数据量非常大&#xf…

【USRP】集成化仪器系列1 :信号源,基于labview实现

USRP 信号源 1、设备IP地址:默认为192.168.10.2,请勿 修改,运行阶段无法修改。 2、天线输出端口是TX1,请勿修改。 3、通道:0 对应RF A、1 对应 RF B,运行 阶段无法修改。 4、中心频率:当需要…

界面控件DevExpress .NET应用安全 Web API v23.1亮点:支持Swagger模式

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。 DevExpress 今年第一个重要版本v23.1日前已正式发布了,该版本拥有众多新产品和数十…

电子学会 2023年3月 青少年软件编程Python编程等级考试三级真题解析(选择题+判断题+编程题)

青少年编程Python编程等级考试三级真题解析(选择题+判断题+编程题) 2023年3月 一、选择题(共25题,共50分) 十进制数111转换成二进制数是?( ) A. 111 B. 1111011 C. 101111 D. 1101111 答案选:D 考点分析:考察python 进制转换 十进制转二进制,采用除二倒取余数,直到商…

使用 SQL 的方式查询消息队列数据以及踩坑指南

Pulsar-sql.png 背景 为了让业务团队可以更好的跟踪自己消息的生产和消费状态,需要一个类似于表格视图的消息列表,用户可以直观的看到发送的消息;同时点击详情后也能查到消息的整个轨迹。 消息列表 点击详情后查看轨迹 原理介绍 由于 Pulsar …

MyBatis关联关系映射详解

前言 在使用MyBatis进行数据库操作时,关联关系映射是一个非常重要的概念。它允许我们在数据库表之间建立关联,并通过对象之间的关系来进行数据查询和操作。本文将详细介绍MyBatis中的关联关系映射,包括一对一、一对多和多对多关系的处理方法…

Spring MVC:域对象共享数据

Spring MVC 前言域对象共享数据使用 ModelAndView 向 request 域对象中共享数据使用 Map 、Model 或 ModelMap 向 request 域对象中共享数据使用 SesionAttributes 注解向 session 域对象中共享数据使用 Servlet API 向 application 域对象中共享数据 附 前言 在上一章中&…

Linux搭建GitLab私有仓库,并内网穿透实现公网访问

目录 前言 1.下载Gitlab 2.安装Gitlab 3.启动Gitlab 4.安装cpolar 5. 创建隧道配置访问地址 6.固定GitLab访问地址 7. 配置二级子域名 8. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基…

问道管理:什么是大盘?大盘股又是什么?

聊到股市就免不了聊到大盘,有些新进场的投资者对此或许带有疑问,什么是大盘?我们所说的大盘股又是什么?关于这些,问道管理为我们准备了以下参考内容。 什么是大盘? 大盘,主要是指股市的整体行情…

python-数据分析-numpy、pandas、matplotlib的常用方法

一、numpy import numpy as np1.numpy 数组 和 list 的区别 输出方式不同 里面包含的元素类型 2.构造并访问二维数组 使用 索引/切片 访问ndarray元素 切片 左闭右开 np.array(list) 3.快捷构造高维数组 np.arange() np.random.randn() - - - 服从标准正态分布- - - …

CSS 一个好玩的卡片“开卡效果”

文章目录 一、用到的一些CSS技术二、实现效果三、代码 一、用到的一些CSS技术 渐变 conic-gradientbox-shadowclip-path变换、过渡 transform、transition动画 animation keyframes伪类、伪元素 :hover、::before、::after …绝对布局。。。 clip-path 生成网站 https://techb…

Yjs + Quill 实现文档多人协同编辑器开发(基础+实战)

前言 多人协同开发确实是比较难的知识点,在技术实现上有一定挑战,但随着各种技术库的发展,目前已经有了比较成熟的解决方案。今介绍 Yjs 基于CRDT算法,用于构建自动同步的协作应用程序,与Quill富文本编辑器&#xff0c…

从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)

Collection集合及list集合 1.Collection集合1.1数组和集合的区别1.2集合类体系结构1.3Collection 集合概述和使用1.4Collection集合的遍历1.4.1 迭代器遍历1.4.2 增强for1.4.3 lambda表达式 2.List集合2.1List集合的概述和特点2.2List集合的特有方法2.3List集合的五种遍历方式2…

仓库运行状况如何得知?数据挖掘是关键!

库存、订单、出入库记录、物流信息、货物状态等数据,是仓库管理的重要组成部分。 仓库数据的重要性 做好仓库数据管理对企业的重要性不言而喻。通过有效地管理数据,企业可以更好地了解市场需求和库存情况,快速响应市场变化,提高库…

医院小程序如何在线搭建?实战解析

在当今数字化时代,移动应用程序成为我们生活中必不可少的一部分。特别是在医疗领域,移动应用程序的需求更为迫切。为了满足这一需求,开发一个医疗小程序成为了许多医疗机构的优先选择。 在本文中,我们将分享一个实战攻略&#xff…

iOS开发Swift-5-自动布局AutoLayout-摇骰子App

1.在iOS坐标系中,以向左、向下为正方向。图片以左上角为基准点。 2.打开之前的摇骰子App,对它的界面做一些适应所有iPhone机型的效果。 3.先对上方logo做一个y轴约束和一个宽高约束。 宽高约束: 水平居中: 对y轴进行约束。将虚线点…