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.hqwc.cn/news/91819.html

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

相关文章

uniapp 微信小程序webview 踩坑

uniapp 微信小程序的存在许多功能上的限制和约束,有些情况不得不去使用webview进行开发实现需求,比如 原生无法满足(例如某团队维护SDK 只提供了WEB端jsSDK,且不维护小程序SDK) H5可以同时适用多端(适用范围…

Java当中的object介绍以及相关方法介绍

文章目录 前言 1. object介绍 1.1 简单介绍 1.2 object的相关方法 2. object相关方法的介绍 2.0 JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别 2.1 Object之wait 2.1.1 另外两种wait方法 2.1.2 Object中notify,notify…

python中的文件操作

我们平常对文件的基本操作,大概可以分为三个步骤(简称文件操作三步走): ① 打开文件 ② 读写文件 ③ 关闭文件 【注意事项】 注意:可以只打开和关闭文件,不进行任何读写 文件打开 open函数&#xff…

【Qt专栏】实现单例程序,禁止程序多开的几种方式

目录 一,简要介绍 二,实现示例(Windows) 1.使用系统级别的互斥机制 2.通过共享内存(进程间通信-IPC) 3.使用命名互斥锁(不推荐) 4.使用文件锁 5.通过网络端口检测 一&#xf…

基于RUM高效治理网站用户体验入门-价值篇

用户体验 用户体验基本包含访问网站的性能、可用性和正确性。通俗的讲,就是一把通过用户访问测量【设计者】意图的尺子。 本文目的 网站如何传递出设计者的意图,可能页面加载时间太长、或者页面在用户的浏览器中渲染时间太慢,或者第三方设备…

css3英文文字换行,超过两行...展示

需求:超过两行...展示 开发的过程中发现div内容中文可以换行英文不换行,导致长度会溢出。 是英文全英文的话浏览器会解析成一个单词, 加上这句就好了 word-break:break-all; 一开始不知道是会解析成一个单词,用字符串拼接处理…

PXE网络批量装机(centos7)

目录 前言 一、实验拓扑图 二、PXE的组件 三、配置PXE装机服务器 1、设置防火墙、selinux 2.安装、启动vsftp 3、拷贝系统文件到/var/ftp用于装机 4、配置tftp 5、准备pxelinx.0文件、引导文件、内核文件 6、配置本机IP 7、配置DHCP服务 8、创建default文件 四、配…

【ThingJS | 3D可视化】开发框架,一站式数字孪生

博主:_LJaXi Or 東方幻想郷 专栏: 数字孪生 | 3D可视化框架 开发工具:ThingJS在线开发工具 ThingJs 低代码开发 ThingJs 低代码开发注意点场景效果配置层级层级常用API实例化 Thing,加载场景load 加载函数ThingJs 层级关系图查找层…

基于MQTT协议的物联网关

随着工业领域的不断发展,数字化转型已经成为企业迈向未来的必由之路。在这个数字化浪潮中,HiWoo Box以其强大的功能和创新的设计,在工业物联网领域被越来越多的人所熟知。特别是其基于MQTT协议的物联网关能力,也为企业实现智能化数…

FBX SDK 开发环境配置 visual studio 2022

FBX | Adaptable File Formats for 3D Animation Software | Autodesk. 下载windows的sdk并安装. 创建一个c console 工程 设置include目录 添加预处理宏 FBX_SHARED1 添加fbx sdk lib 目录 添加依赖lib : libfbxsdk-md.lib libxml2-md.lib zlib-md.lib 配置完毕.

OPENCV实现ORB特征检测

# -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/8/31 """ import cv2 import numpy as np# 读图像 img = cv2.imread(F:\\learnOpenCV\\openCVLearning\\pictures\\chess.jpg)

OS 死锁处理

如果P先申请mutex 则mutex从1置零,假设申请到的empty 0则empty变成-1阻塞态 同理C中mutex从0变为-1,那么如果想离开阻塞态,那么就需要执行V(empty)但是如果执行V(empty)就需要P(mu…