Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案

这篇具有很好参考价值的文章主要介绍了Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

最近一直忙于音视频SDK的开发,遇到很多问题,简单来说,就是怎么让别人接入SDK时越简单越好。相信大多数Android开发都会遇到一个场景,给TextView或Button添加背景颜色,修改圆角,描边等需求。一看到这样的实现效果,自然就是创建drawble文件,设置相关属性shap,color,radius等。然后将drawble文件设置给对应的view即可实现想要的效果。但是作为一个SDK,如果不同的app都需要修改自己独特的颜色,圆角等需求,如何以最小的改动来满足不同app的需求呢?

效果

本文介绍一种使用代码的形式来替代drawble文件实现view的背景色,圆角等效果。话不多说,先看效果。

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案,移动开发,Android,Framework,android,移动开发,framework,APP架构,性能优化

代码实现

代码实现这些效果主要用到 ShapeDrawable,GradientDrawable,以及 Shape 的实现类。下面介绍常用的6种效果:

  1. 圆形

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案,移动开发,Android,Framework,android,移动开发,framework,APP架构,性能优化

//实心圆
val drawable = ShapeDrawable(OvalShape())
drawable.paint.color = Color.RED
mBinding.tvOval.background = drawable
  1. 左上角部分圆角矩形

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案,移动开发,Android,Framework,android,移动开发,framework,APP架构,性能优化

 //上半边圆角矩形
        val externalRound = floatArrayOf(10f,10f,0f,0f,0f,0f,0f,0f)
        val shapeDrawable = ShapeDrawable(RoundRectShape(externalRound, RectF(0f,0f,0f,0f), floatArrayOf(0f,0f,0f,0f,0f,0f,0f,0f)))
        shapeDrawable.paint.color = Color.BLUE
        mBinding.tvOval2.background = shapeDrawable
  1. 带描边的圆角空心矩形

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案,移动开发,Android,Framework,android,移动开发,framework,APP架构,性能优化

        val roundIn = dp2px(this, 30)
        val externalRounds = floatArrayOf(roundIn, roundIn, roundIn, roundIn, roundIn, roundIn, roundIn, roundIn)
        val outlineRound = floatArrayOf(roundIn, roundIn, roundIn, roundIn, roundIn, roundIn, roundIn, roundIn)
        val rectF = RectF(dp2px(this, 2), dp2px(this, 2), dp2px(this, 2), dp2px(this, 2))
        val drawable1 = ShapeDrawable(RoundRectShape(externalRounds, rectF, outlineRound))
        drawable1.paint.color = Color.RED
        mBinding.tvOval3.background = drawable1
  1. 带描边的矩形

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案,移动开发,Android,Framework,android,移动开发,framework,APP架构,性能优化

 val gradientDrawable = GradientDrawable()
        gradientDrawable.setStroke(dp2px(this, 2).toInt(), Color.RED)
        gradientDrawable.setColor(Color.YELLOW)
        gradientDrawable.shape = GradientDrawable.RECTANGLE
        mBinding.tvOval4.background = gradientDrawable
  1. 带描边圆角的矩形

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案,移动开发,Android,Framework,android,移动开发,framework,APP架构,性能优化

        val gradientDrawable1 = GradientDrawable()
        gradientDrawable1.setStroke(dp2px(this, 2).toInt(), Color.RED)
        gradientDrawable1.setColor(Color.BLUE)
        gradientDrawable1.shape = GradientDrawable.RECTANGLE
        gradientDrawable1.cornerRadius = roundIn
        mBinding.tvOval5.background = gradientDrawable1
  1. 带描边的圆形

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案,移动开发,Android,Framework,android,移动开发,framework,APP架构,性能优化

        val gradientDrawable2 = GradientDrawable()
        gradientDrawable2.setStroke(dp2px(this, 2).toInt(), Color.RED)
        gradientDrawable2.setColor(Color.GREEN)
        gradientDrawable2.shape = GradientDrawable.OVAL
        mBinding.tvOval6.background = gradientDrawable2

以上是实现的6种效果,基本上drawble能实现的效果,通过代码也可以达到同样的效果。更多效果需要读者自己动手实现。

Android 学习笔录

Android 性能优化篇:https://qr18.cn/FVlo89
Android Framework底层原理篇:https://qr18.cn/AQpN4J
Android 车载篇:https://qr18.cn/F05ZCM
Android 逆向安全学习笔记:https://qr18.cn/CQ5TcL
Android 音视频篇:https://qr18.cn/Ei3VPD
Jetpack全家桶篇(内含Compose):https://qr18.cn/A0gajp
OkHttp 源码解析笔记:https://qr18.cn/Cw0pBD
Kotlin 篇:https://qr18.cn/CdjtAF
Gradle 篇:https://qr18.cn/DzrmMB
Flutter 篇:https://qr18.cn/DIvKma
Android 八大知识体:https://qr18.cn/CyxarU
Android 核心笔记:https://qr21.cn/CaZQLo
Android 往年面试题锦:https://qr18.cn/CKV8OZ
2023年最新Android 面试题集:https://qr18.cn/CgxrRy
Android 车载开发岗位面试习题:https://qr18.cn/FTlyCJ
音视频面试题锦:https://qr18.cn/AcV6Ap
文章来源地址https://www.toymoban.com/news/detail-726504.html

到了这里,关于Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 企业级信息系统开发学习1.3——利用注解配置取代Spring配置文件

    一、利用注解配置类取代Spring配置文件 (一)打开项目 Maven项目 - SpringDemo (二)创建新包 在net.huawei.spring包创建day03子包 (三)拷贝类与接口 将day02子包的类与接口拷贝到day03子包 (四)创建注解配置类 在day03子包里创建SpringConfig类,取代Spring配置文件 package net.huawei.spri

    2024年02月09日
    浏览(35)
  • 塞拉斯大招笔记

    塞拉斯是个非常好玩的角色,最主要的就是他的大招。相当于选1个角色,就可以体验各种大招。 根据实战价值,可以将大招分下类,便于做出较好的选择。 一般来说有两类大招比较好用。团控或团伤(高ap加成),肉盾型大招。 简单来说,就是神级大招。 甚至比本人使用还要

    2024年02月07日
    浏览(20)
  • Android 插桩之美,全面掌握

    链接: https://www.yuque.com/docs/share/b49a3274-17d9-4c87-815a-4a13ab72e4e0 1 插桩 插桩是什么?你在开发中有用过插桩的技术吗? 所谓的插桩就是在代码编译期间修改已有的代码或者生成新代码。 插桩具体在编译的哪个流程介入呢? 2 插桩的作用与场景 代码生成 代码监控 代码修改 代码

    2023年04月11日
    浏览(33)
  • Android GreenDao 使用全面讲解,Android组件化入门

    5. 在多个线程中使用QueryBuilder 如果在多个线程中使用查询,则必须调用 forCurrentThread ()以获取当前线程的Query实例。Query的对象实例绑定到构建查询的拥有线程。 这使您可以安全地在Query对象上设置参数,而其他线程不会干扰。如果其他线程尝试在查询上设置参数或执行绑

    2024年04月27日
    浏览(42)
  • AIGC市场群雄逐鹿,阿里云发出了什么大招?

    如果要评选当下IT圈最火爆的话题,相信就算生成式AI(Artificial Intelligence Generated Content,简称AIGC)甘认第二,也没有人敢认第一。 于是我们看到,在ChatGPT快速升级迭代的同时,百度、360、商汤科技、阿里云、腾讯、科大讯飞……无论是老牌互联网巨头还是人工智能新秀,都

    2024年02月10日
    浏览(31)
  • 微软联合OpenAI发大招了,上线Windows Copilot,速来围观~

    目录 前言 Windows Copilot 问世 Bing Chat 插件功能上线 Edge 与 365 Copilot 结合 搭建你的第一个AI应用(Azure AI Studio) 总结 写到最后 大家好,我是大侠,AI领域的专业博主 ChatGPT如今已成为炙手可热的话题,微软作为其最大股东,也开始全力了。 直接将 AI 技术整合到旗下各个平台中

    2024年02月09日
    浏览(57)
  • QMUI框架解析:一个介绍Android的全面框架

    随着移动应用的快速发展,开发者需要面对不断增长的需求和复杂的技术挑战。为了提高开发效率并保持应用的稳定性和一致性,许多开发者转向使用框架来构建和管理他们的Android应用程序。在这篇文章中,我们将介绍QMUI框架,它是一个功能强大的Android框架,旨在简化UI开

    2024年02月03日
    浏览(25)
  • Android Studio实现文件管理器

    本次带来的文件管理器,能够对SD卡的目录进行管理。主要功能包括新建文件(夹)、查看文件(夹)、搜索文件(夹)、删除文件(夹)、回到根目录。涉及知识点包括动态申请权限、自定义Dialog、自定义菜单、文件系统操作、适配器等。 开发环境依旧是在Android Studio4.2.

    2024年02月11日
    浏览(41)
  • 音视频开发系列(6)——全面了解Android MediaFormat

    MediaFormat 是 Android 平台中用于描述音视频格式的类,它提供了许多 API 用于设置和获取音视频的格式信息。以下是 MediaFormat 类的主要 API: 用于创建音频和视频格式的 MediaFormat 对象。需要指定媒体类型(例如 audio/mp4a-latm 或 video/avc)、媒体的采样率、通道数、码率、帧率等信

    2024年02月01日
    浏览(29)
  • 小米路由器与QQ联手出大招 我们的福利又来啦

    昨天晚些时候,小米路由器官方微博发出公告,今天中午12点要宣布一件事情。 从配图上看,似乎是在暗示小米路由器与QQ在一起了,其还特别备注了一句话“手机QQ的新朋友”。 之前小米路由器官方微博表示目前确切的销量已经突破了百万大关,为了庆祝, 其中原价999元的

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包