Android设置边框圆角
在Android开发中,圆角设计十分常见,那么实现边框圆角有几种形式呢?
文章目录
- 设置圆角边框样式
- 使用ClipToOutline进行裁切
- 最后
设置圆角边框样式
常见的方式是在drawable文件夹下设置一个xml文件的边框样式,比如
<shape android:shape="rectangle"><solid android:color="@color/grid_item_bg_normal" /><corners android:radius="35px" /></shape>
其实这样的操作是改变背景,同时会导致内容穿透的效果。
使用ClipToOutline进行裁切
此方法是Android5.0之后提供,具体操作如下
private final ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {@Overridepublic void getOutline(View view, Outline outline) {Rect selfRect = new Rect(0, 0, view.getWidth(), view.getHeight());outline.setRoundRect(selfRect, 20);}};ivQrCode.setOutlineProvider(viewOutlineProvider);
ivQrCode.setClipToOutline(true);
先声明ViewOutlineProvider此类,自定义实现需要设置的属性,该类是专门用来处理阴影和裁切的,然后在应用裁切即可。
最后
Outline相对于shape来说,是真正的实现边缘裁切的,shape其实只是设置背景而已,它的view的范围还是那个正方形的范围。最明显的表现于,shape如果内容填满布局,会看到内容超出圆角,而Outline不会。当然如果你shape配合padding的话肯定也不会出现这种情况。
参考
Android边框裁切的正确姿势实现示例
相关文章:
Android设置边框圆角
在Android开发中,圆角设计十分常见,那么实现边框圆角有几种形式呢? 文章目录 设置圆角边框样式使用ClipToOutline进行裁切最后 设置圆角边框样式 常见的方式是在drawable文件夹下设置一个xml文件的边框样式,比如 <shape andro…...
SpringBoot项目打成jar包,在其他项目中引用
1、首先新建一个SpringBoot工程 记得要将Gradle换成Maven 2、新建一个要引用的方法 3、打包的时候要注意: ① 不能使用springboot项目自带的打包插件进行打包,下面是自带的: ②要换成传统项目的maven打包,如下图: 依…...
【音频可视化】通过canvas绘制音频波形图
前言 这两天写项目刚好遇到Ai对话相关的需求,需要录音功能,绘制录制波形图,写了一个函数用canvas实现可视化,保留分享一下,有需要的直接粘贴即可,使用时传入一个1024长的,0-255大小的Uint8Arra…...
解决github每次pull push输入密码问题
# 解决git pull/push每次都需要输入密码问题 git bash进入你的项目目录,输入: git config --global credential.helper store然后你会在你本地生成一个文本,上边记录你的账号和密码。配置项写入到 "C:\Users\用户名\ .gitconfig" …...
Java重修笔记 第六十四天 坦克大战(十四)IO 流 - 标准输入输出流、InputStreamReader 和 OutputStreamWriter
标准输入输出流 1. System.in 标准输入流 本质上是一个InputString,对应键盘,表示从键盘输入。 定义:public final static InputStream in null; 所以 Scanner scanner new Scanner(System.in); 会从键盘中获取数据 2. System.out 标准输…...
prctl的函数和pthread_self函数
1.prctl的函数原型如下: #include<sys/prctl.h> prctl(PR_SET_NAME, “process_name”);第一个参数是操作类型,指定PR_SET_NAME(对应数字15),即设置进程名; 第二个参数是进程名字符串,…...
Vim 命令行模式下的常用命令
Vim 命令行模式下的常用命令 文件操作: :w :保存当前文件。:w filename :将当前内容另存为指定的 filename 。:q :退出 Vim,如果文件有修改但未保存,会提示错误。:q! :强制退出 Vim,…...
【动态规划-最长递增子序列(LIS)】力扣2826. 将三个组排序
给你一个整数数组 nums 。nums 的每个元素是 1,2 或 3。在每次操作中,你可以删除 nums 中的一个元素。返回使 nums 成为 非递减 顺序所需操作数的 最小值。 示例 1: 输入:nums [2,1,3,2,1] 输出:3 解释: …...
Elastic Stack--16--ES三种分页策略
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 方式一:from size实现原理使用方式优缺点 方式二:scroll实现原理使用方式优缺点 方式三:search_after实现原理使用方式优缺点 三…...
[LeetCode] 315. 计算右侧小于当前元素的个数
题目描述: 给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 题目链接: . - 力扣(LeetCode) 题目主要思路&a…...
【hot100-java】二叉树展开为链表
二叉树篇。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …...
如何在在 YOLOv3模型中添加Attention机制
在YOLOv3模型中添加Attention机制需要以下几个步骤: 1. 规定格式 当添加新的模块(如Attention机制模块)时,需要像定义[convolutional]、[maxpool]等层在cfg文件中的格式一样,对新模块进行格式规定。例如对于SE模块&a…...
单点登录Apereo CAS 7.1安装配置教程
笔者目前正在做一个单点登录的课题,历时较长总算摸到一些门路,其中的辛酸不易按下不表。截至本文发布,CAS的最新版本为7.1。由于涉及到课题内容,而且内容比较新,整理试验不容易,暂时只对VIP开放,后续课题完成后会完全开放,敬请谅解。 CAS项目区别 在CAS的项目选择上,…...
windows C++-移除界面工作线程(一)
本文档演示了如何使用并发运行时将 Microsoft 基础类 (MFC) 应用程序中由用户界面 (UI) 线程执行的工作移动到工作线程。 本文档还演示了如何提高冗长绘制操作的性能。 通过将阻塞性操作(例如,绘制)卸载到工作线程来从 UI 线程中移除工作&am…...
Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“
Qt小bug —— LINK :fatal error LNK1158:无法运行"rc.exe" 环境 Qt 5.14.2 MSVC 2015 x64 现象 解决 在电脑上找到rc.exe 和rcdll.dll (一般在C:\Program Files(x86)\Windows Kits*\bin\x64下面)拷贝到 C:\Qt\Qt5…...
c++小游戏
目录 狼人杀 走迷宫 炸弹人 贪吃蛇 飞翔的小鸟 跑酷 吃豆人 飞机大战 人生模拟器 坦克大战 修仙模拟器 搜集了一些小游戏,名字下是个人是个人喜欢度,可供参考~ 狼人杀 ❤❤❤❤ #include<bits/stdc.h> #include<cstdio> #incl…...
k8s为什么用Calico
Calico是一种开源的网络和安全解决方案,主要用于容器、虚拟机、宿主机之间的网络连接。 它支持Kubernetes、OpenShift、Docker EE、OpenStack等PaaS或IaaS平台,提供高效的网络通信和安全控制功能12。 Calico的核心组件包括Felix、etcd、BIRD等。F…...
HashMap 和 Hashtable 有什么区别?
HashMap和Hashtable都是Java中常用的存储键值对的集合类,它们都实现了Map接口,但二者之间存在一些显著的区别。以下是对HashMap和Hashtable区别的详细归纳: 一、线程安全性 HashMap:是非线程安全的,即多个线程可以同…...
【机器学习】深度学习、强化学习和深度强化学习?
深度学习、强化学习和深度强化学习是机器学习的三个重要子领域。它们有着各自独特的应用场景和研究目标,虽然都属于机器学习的范畴,但各自的实现方式和侧重点有所不同。 1. 深度学习(Deep Learning) 深度学习是一种基于神经网络的…...
fastadmin 多商户模式下侧边栏跳转路径BUG
记录:仅作自己项目记录,在一个域名下部署多套项目时,若不是多商户模式项目会出现跳转路径问题。 修改 \manystore\library\Auth.php 文件的 getSidebar 方法 // 1 改为: $v[url] isset($v[url]) && $v[url] ? $v[url]…...
鲲鹏面对Agentic沙箱的思考与能力布局
Agent在今年迎来爆发式增长,传统云原生架构在Agent沙箱场景下面临启动慢、弹性差、资源冗余、隔离不足等五大痛点。鲲鹏沙箱以快照快启、共享Rootfs、超节点共享内存三大核心技术破局——将沙箱启动从分钟级压缩至毫秒级,通过写时复制(CoW&am…...
别再踩坑了!Vue2项目里用Swiper5.4.5做轮播,这几个配置项(observer/observeParents)不加真不行
Vue2项目中Swiper5.4.5轮播图动态适配避坑指南 轮播图作为现代Web应用中最常见的交互组件之一,几乎成为每个前端项目的标配。在Vue2生态中,Swiper凭借其丰富的功能和灵活的配置,成为开发者实现轮播效果的首选库。然而,许多初中级开…...
深耕 AI 全域布局,探词科技凭硬核实力领跑 GEO 新赛道
在人工智能全面渗透各行各业的当下,传统线上流量玩法逐渐触顶,依托大模型生态搭建品牌长效传播阵地,已然成为企业数字化转型的核心突破口。作为国内专注 AI 品牌全域布局的专业服务商,探词科技深耕 GEO 智能优化领域,凭…...
Taotoken的API Key分级管理与访问控制功能实测
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的API Key分级管理与访问控制功能实测 1. 功能定位与实际价值 在团队协作或项目集成的场景中,直接使用一个具…...
魔兽争霸3的现代重生:如何让经典游戏在你的电脑上焕发新生
魔兽争霸3的现代重生:如何让经典游戏在你的电脑上焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还记得那个充满激情的年代…...
STK Connectors接口函数全解析:如何用MATLAB脚本自动化你的航天仿真流程
STK Connectors接口函数全解析:如何用MATLAB脚本自动化你的航天仿真流程 航天仿真领域的工作者常常面临一个矛盾:STK提供了强大的轨道计算和场景可视化能力,但手动操作界面进行复杂任务时效率低下;MATLAB擅长处理复杂逻辑和批量计…...
【免费下载】 树莓派4B原理图资源下载
树莓派4B原理图资源下载 【下载地址】树莓派4B原理图资源下载分享 树莓派4B原理图资源下载本仓库提供了一个方便的途径,供大家下载树莓派4B的原理图资源文件 项目地址: https://gitcode.com/open-source-toolkit/ae590 本仓库提供了一个方便的途径࿰…...
别再手动画图了!用Graphviz + Python自动生成流程图,效率提升10倍
用PythonGraphviz实现自动化图表生成:告别低效手绘时代 你是否曾在PPT中反复调整箭头位置,只为让一张流程图看起来更专业?或是花半小时拖拽图形,却发现某个节点的颜色需要全局修改?在技术文档、系统架构设计或算法可视…...
长期使用Taotoken聚合API在服务稳定性方面的体验分享
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken聚合API在服务稳定性方面的体验分享 作为一家长期依赖大模型能力进行产品开发的团队,我们在过去数月里…...
深入理解LZFSE核心技术:Lempel-Ziv与FSE编码的完美结合
深入理解LZFSE核心技术:Lempel-Ziv与FSE编码的完美结合 【免费下载链接】lzfse LZFSE compression library and command line tool 项目地址: https://gitcode.com/gh_mirrors/lz/lzfse LZFSE(Lempel-Ziv Finite State Entropy)是苹果…...
