Android ShapeableImageView使用

news2024/11/18 21:41:39

ShapeableImageView使用

使用

导包

implementation 'com.google.android.material:material:1.4.0'

属性

属性描述
shapeAppearance样式
shapeAppearanceOverlay样式,叠加层
strokeWidth描边宽度
strokeColor描边颜色

样式

名称属性值描述
cornerFamilyrounded圆角
cut裁剪
cornerSize10dp10dp圆角大小
cornerSizeTopLeft50%左上圆角
cornerSizeBottomRight50%右下圆角
cornerSizeTopRight50%右上圆角
cornerSizeBottomLeft50%左下圆角

常规样式

在这里插入图片描述

<com.google.android.material.imageview.ShapeableImageView
    android:id="@+id/normal_view"
    android:layout_width="300px"
    android:layout_height="300px"
    android:scaleType="centerCrop"
    android:src="@drawable/shape_able_bg"
    app:layout_constraintStart_toEndOf="@+id/round_view"
    app:layout_constraintTop_toTopOf="parent"
    app:shapeAppearance="@style/NormalStyle" />
<style name="NormalStyle">
    <item name="cornerSize">0dp</item>
</style>

圆角

在这里插入图片描述

<com.google.android.material.imageview.ShapeableImageView
    android:id="@+id/round_view"
    android:layout_width="300px"
    android:layout_height="300px"
    android:scaleType="centerCrop"
    android:src="@drawable/shape_able_bg"
    app:layout_constraintStart_toEndOf="@+id/back_view"
    app:layout_constraintTop_toTopOf="parent"
    app:shapeAppearance="@style/RoundedStyle" />
<style name="RoundedStyle">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">30dp</item>
</style>

在这里插入图片描述

<com.google.android.material.imageview.ShapeableImageView
    android:id="@+id/circle_view"
    android:layout_width="300px"
    android:layout_height="300px"
    android:scaleType="centerCrop"
    android:src="@drawable/shape_able_bg"
    app:layout_constraintStart_toEndOf="@+id/normal_view"
    app:layout_constraintTop_toTopOf="parent"
    app:shapeAppearance="@style/CircleStyle" />
<style name="CircleStyle">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
</style>

菱形and描边

在这里插入图片描述

<com.google.android.material.imageview.ShapeableImageView
    android:id="@+id/border_lozenge_view"
    android:layout_width="300px"
    android:layout_height="300px"
    android:padding="2dp"
    android:scaleType="centerCrop"
    android:src="@drawable/shape_able_bg"
    app:layout_constraintStart_toEndOf="@+id/back_view"
    app:layout_constraintTop_toBottomOf="@id/round_view"
    app:shapeAppearance="@style/BorderLozengeStyle"
    app:strokeColor="@color/teal_700"
    app:strokeWidth="4dp" />
<style name="BorderLozengeStyle">
    <item name="cornerFamily">cut</item>
    <item name="cornerSize">50%</item>
</style>

叶子

在这里插入图片描述

<com.google.android.material.imageview.ShapeableImageView
    android:id="@+id/leaf_view"
    android:layout_width="300px"
    android:layout_height="300px"
    android:scaleType="centerCrop"
    android:src="@drawable/shape_able_bg"
    app:layout_constraintStart_toEndOf="@+id/border_lozenge_view"
    app:layout_constraintTop_toTopOf="@id/border_lozenge_view"
    app:shapeAppearance="@style/LeafStyle" />
<style name="LeafStyle">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSizeTopLeft">50%</item>
    <item name="cornerSizeBottomRight">50%</item>
</style>

六边形

在这里插入图片描述

<com.google.android.material.imageview.ShapeableImageView
    android:id="@+id/irregular_view"
    android:layout_width="300px"
    android:layout_height="150px"
    android:scaleType="centerCrop"
    android:src="@drawable/shape_able_bg"
    app:layout_constraintBottom_toBottomOf="@+id/border_lozenge_view"
    app:layout_constraintStart_toEndOf="@+id/leaf_view"
    app:layout_constraintTop_toTopOf="@id/border_lozenge_view"
    app:shapeAppearance="@style/IrregularStyle" />
<style name="IrregularStyle">
    <item name="cornerFamily">cut</item>
    <item name="cornerSize">50%</item>
</style>

特殊形状

在这里插入图片描述

已有的各种treatment如下:

  • CornerTreatment
    • RoundedCornerTreatment 圆角方案
    • CutCornerTreatment 折角方案
  • EdgeTreatment
    • TriangleEdgeTreatment 三角形
    • MarkerEdgeTreatment 类似于地图的兴趣点
    • OffsetEdgeTreatment 位移
    • BottomAppBarTopEdgeTreatment 应该是中间带有悬浮按钮的效果
<TextView
    android:id="@+id/shape_text"
    android:layout_width="300px"
    android:layout_height="300px"
    android:gravity="center"
    android:text="HELLO"
    android:textSize="30dp"
    app:layout_constraintStart_toEndOf="@id/circle_view"
    app:layout_constraintTop_toTopOf="parent" />
val shapeAppearanceModel = ShapeAppearanceModel.builder().apply {
    setAllCorners(RoundedCornerTreatment())
    setAllCornerSizes(50f)
    setAllEdges(TriangleEdgeTreatment(50f, false))
}.build()
val drawable = MaterialShapeDrawable(shapeAppearanceModel).apply {
    setTint(ContextCompat.getColor(requireContext(), R.color.teal_200))
    paintStyle = Paint.Style.FILL_AND_STROKE
    strokeWidth = 50f
    strokeColor = ContextCompat.getColorStateList(requireContext(), R.color.purple_200)
}
mBinding.shapeText.setTextColor(Color.BLACK)
mBinding.shapeText.background = drawable

  • 默认ShapeableImageView是有圆角的,默认大小为4dp

参考文章

  • (6条消息) Android ShapeableImageView使用详解,告别shape、三方库_yechaoa的博客-CSDN博客_shapeimageview
  • (6条消息) Android MaterialShapeDrawable_xiangxiongfly915的博客-CSDN博客_offsetedgetreatment
  • Android Material MaterialShapeDrawable - 掘金 (juejin.cn)

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

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

相关文章

学习记录-mybatis+vue+elementUi实现品牌查询

和以往不同的是&#xff0c;这一次使用了vue和axios来接收后端传过来的参数&#xff0c;并且新建了impl文件来继承service层的接口。该过程实现一共分为4步骤 步骤一 ①mapper mapper 写mapper接口 其实就是写SQL语句了&#xff0c;第一步就是写SQL。这里使用的是注解开发&…

程序员危机如何化解?

很多人认为程序员一定要干到管理层&#xff0c;才会有继续走下去的希望&#xff0c;而踏实做技术的程序员&#xff0c;只会面临淘汰。事实真是如此吗&#xff1f; △ 截图来源脉脉&#xff0c;如侵删 先不说结论&#xff0c;我们一起先看看网友们的看法&#xff1a; △ 截…

报表控件Stimulsoft v2023.1全新发布 | 附免费下载试用

Stimulsoft Ultimate 宣布发布新版本2023.1&#xff01;在最新版本中添加了对Razor Pages的支持、新的数据监视器可视化工具、为PHP和Blazor平台更新了组件,欢迎下载试用&#xff01; Stimulsoft Ultimate官方正版下载 Razor Pages 在 2023.1.1 版中&#xff0c;我们添加了对…

跨域问题以及解决跨域问题的vue-cli解决方案

跨域问题 写项目前要问后端,接口支持跨域吗? 支持就不会出现问题,不支持就需要解决跨域问题 1.如何判断一个浏览器的请求是否跨域&#xff1f; 在A地址&#xff08;发起请求的页面地址&#xff09;向B地址&#xff08;要请求的目标页面地址&#xff09;发起请求时&#xff…

【JavaEE】多线程(三)线程的状态

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaEE】 ✈️✈️本篇内容:线程的状态&#xff0c;线程安全问题&#xff01; &#x1f680;&#x1f680;代码存放仓库gitee&#xff1a;JavaEE初阶代码存放&a…

抗癌药物之多肽药物偶联物技术(PDC)介绍

长期以来&#xff0c;心血管疾病是全球中年人死亡的主要原因。这种情况最近在高收入国家发生了变化&#xff0c;现在癌症导致的死亡人数是心血管疾病的两倍。2018 年&#xff0c;癌症导致全球 960 万人死亡&#xff0c;1810 万新病例被诊断出来。女性最常发生的癌症是乳腺癌&am…

12Python继承与多态

继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中继承 实现代码的重用&#xff0c;相同的代码不需要重复的编写多态 不同的对象调用相同的方法&#xff0c;产生不同的执行结果&#xff0c;增加代码的灵活度 1继承的概念、语法和特点 继承的概…

奖项快报 | ALVA Systems 上榜 《2022 高成长企业 TOP100》!

近日&#xff0c;《2022 高成长企业 TOP 100》榜单发布&#xff0c;凭借卓越的创新能力与在工业 AR 领域的赋能价值&#xff0c;ALVA Systems 在2022年度高成长企业TOP100大赛活动中脱颖而出&#xff0c;成功入选榜单。 *ALVA Systems 入选榜单 创新驱动&#xff0c;赋能数字经…

【ARM -- stm32 汇编代码点亮LED灯】

ARM -- stm32 汇编代码点亮LED灯实现过程查询开发手册分析RCC章节分析GPIO章节编写代码实现过程 查询开发手册 分析RCC章节 一、确定RCC基地址 二、分析RCC_MP_AHB4ENSETR寄存器 1、RCC_MP_AHB4ENSETR寄存器的功能是使能GPIO组相关控制器&#xff1b; 2、RCC_MP_AHB4ENSET…

07第四章:01_常用注解

常用注解 1、Table 作用&#xff1a;建立实体类和数据库表之间的对应关系。 默认规则&#xff1a;实体类类名首字母小写作为表名&#xff0c;如 Employee -> employee 表 用法&#xff1a;在 Table 注解的 name 属性中指定目标数据库的表名&#xff1b; 案例&#xff1…

WPF依赖属性、附加属性、属性继承、类型转换详解

依赖属性 依赖属性回调方法与参数 具有依赖属性的类必须继承自DependencyObject&#xff0c;定义依赖属性要有2个步骤 //1属性包装器&#xff0c;目的是为了向正常属性一样使用依赖属性 public int Name {get { return (int)GetValue(NameProperty); }set { SetValue(NamePr…

国家“数据安全三认证”图解来了

二十大指引新时代新征程。蓝图已经绘就&#xff0c;号角已经吹响&#xff0c;新征程是充满光荣和梦想的远征。二十大报告深刻阐明了实现中华民族伟大复兴的一系列重大问题&#xff0c;系统擘画了以中国式现代化推进民族复兴的宏伟蓝图&#xff0c;是引领中华民族伟大复兴的政治…

论文导读 | GPU上的动态图数据管理技术浅析

一、背景介绍 随着相关技术的发展&#xff0c;图计算与分析系统在大量场景中得到应用。同时&#xff0c;为了解决图规模巨大等因素导致的性能下降问题&#xff0c;研究人员利用GPU这一新型计算硬件&#xff0c;设计了大量高效的图计算与分析解决方案。GPU提供的高并发计算能力…

我司何晓磊受邀参加东盟与中日韩中小企业人工智能产业论坛并担任评委

我司何晓磊受邀参加东盟与中日韩中小企业人工智能产业论坛并担任评委 一、活动背景 为推动东盟与中日韩&#xff08;103&#xff09;中小企业服务联盟务实合作&#xff0c;帮助中小企业提高生产力和技术创新能力&#xff0c;进一步提高国际化发展水平&#xff0c;促进东亚区域…

C++——哈希练习题

文章目录一、编程题1.在长度 2N 的数组中找出重复 N 次的元素2. 两个数组的交集二、面试题给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。【腾讯】&#xff08;一&#xff09;位图应用1. 给定100亿个整…

C++ :STL:初识

1&#xff1a;STL初识 1.1 STL的诞生 STL 诞生来源 长久依赖&#xff0c;软件界一直希望建立一种可重复利用的东西C 的面向对象和泛型思想&#xff0c;目的就是复用性的提升大多数情况下&#xff0c;数据结构和算法都未能有一套标准&#xff0c;导致被迫从事大量重复的工作为了…

多线程问题(一)

目录 一、为什么引入线程&#xff1f; 二、线程和进程的区别 三、创建线程的五种方式 1、创建类继承Thread类 2、创建类实现Runnable接口 3、构造Thread类的匿名内部类 4、构造Runnable的匿名内部类 5、使用lambda表达式 四、start方法与run方法的区别 五、线程…

Promise对象的使用

一、什么是Promise Promise 是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;回调函数和事件&#xff09;更合理和更强大。从语法上说&#xff0c;Promise 是一个对象&#xff0c;从它可以获取异步操作的消息。Promise 提供统一的 API&#xff0c;各种异步操…

攻略丨在小红书高效种草,品牌要问的7个问题

这个圣诞节&#xff0c;小羊人和冬阴功&#xff08;这个冬天依然阴着的打工人&#xff09;们各怀心事&#xff0c;最有圣诞氛围的地方要数小红书了。打开首页就能看到&#xff0c;宅家自制光影圣诞树&#xff0c;被安利好利来蛋糕&#xff0c;再往下滑一滑&#xff0c;还有圣诞…

[开源工具]2022免费临时邮箱(Temp Free Mail)

2022免费临时邮箱Temp Free Mail1、10分钟邮箱2、45分钟邮箱3、60分钟邮箱4、24小时邮箱5、5日邮箱6、其他临时邮箱7、无时间限制临时邮箱8、临时邮箱常见问题答疑临时邮箱&#xff0c;英文名称 Temp Mail&#xff0c;也被称为一次性邮箱或匿名邮箱&#xff0c;根据它的邮件有效…