android material 组件 - ShapeableImageView

2024-08-21 02:32

本文主要是介绍android material 组件 - ShapeableImageView,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ShapeableImageView

com.google.android.material.imageview.ShapeableImageView 官方material 库 1.2.0 版本中新组件,非常棒的圆角切角边框图片控件。

引入库:
implementation 'com.google.android.material:material:1.2.0'

简单演示圆角带边框的ImageView:

在这里插入图片描述

xml代码:

    <com.google.android.material.imageview.ShapeableImageViewandroid:layout_width="80dp"android:layout_height="80dp"android:padding="1dp"android:scaleType="centerCrop"android:src="@mipmap/ic_img"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MaterialComponents.FloatingActionButton"app:strokeColor="#ff0000"app:strokeWidth="2dp" />

app:strokeColorapp:strokeWidth 很好理解,分别是边框颜色和边框宽度
1 app:shapeAppearanceOverlay 这个呢就是圆角或者切角的关键属性了,
演示的代码使用的是material库中自带的style,如下:

<style name="ShapeAppearance.MaterialComponents.LargeComponent"><item name="cornerSize">@dimen/mtrl_shape_corner_size_large_component</item></style><style name="ShapeAppearance.MaterialComponents.MediumComponent"><item name="cornerSize">@dimen/mtrl_shape_corner_size_medium_component</item></style><style name="ShapeAppearance.MaterialComponents.SmallComponent"><item name="cornerSize">@dimen/mtrl_shape_corner_size_small_component</item></style><style name="ShapeAppearance.MaterialComponents.Test" parent=""><item name="cornerFamily">rounded</item><item name="cornerSize">10px</item></style><style name="ShapeAppearance.MaterialComponents.Tooltip" parent=""><item name="cornerFamily">rounded</item><item name="cornerSize">4dp</item></style><style name="ShapeAppearanceOverlay" parent=""/><style name="ShapeAppearanceOverlay.BottomLeftDifferentCornerSize"><item name="cornerSizeBottomLeft">20px</item></style><style name="ShapeAppearanceOverlay.BottomRightCut"><item name="cornerFamilyBottomRight">cut</item></style><style name="ShapeAppearanceOverlay.Cut"><item name="cornerFamily">cut</item></style><style name="ShapeAppearanceOverlay.DifferentCornerSize"><item name="cornerSize">20px</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.BottomSheet" parent=""><item name="cornerSizeBottomRight">0dp</item><item name="cornerSizeBottomLeft">0dp</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.Chip" parent=""><item name="cornerSize">50%</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.ExtendedFloatingActionButton" parent=""><item name="cornerSize">@null</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.FloatingActionButton" parent=""><item name="cornerSize">50%</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.MaterialCalendar.Day" parent=""><item name="cornerSize">@dimen/mtrl_calendar_day_corner</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.MaterialCalendar.Window.Fullscreen" parent=""><item name="cornerSize">0dp</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.MaterialCalendar.Year" parent=""><item name="cornerSize">@dimen/mtrl_calendar_year_corner</item></style><style name="ShapeAppearanceOverlay.MaterialComponents.TextInputLayout.FilledBox" parent=""><item name="cornerSizeBottomLeft">@dimen/mtrl_textinput_box_corner_radius_small</item><item name="cornerSizeBottomRight">@dimen/mtrl_textinput_box_corner_radius_small</item></style><style name="ShapeAppearanceOverlay.TopLeftCut"><item name="cornerFamilyTopLeft">cut</item></style><style name="ShapeAppearanceOverlay.TopRightDifferentCornerSize"><item name="cornerSizeTopRight">20px</item></style>

大家可以按照需求自定义style以达到目的

注意:关于描边宽度需要注意的是,和自定义View一样,描边的宽度是中心点在Layout边界,所以是Layout边界内外均分strokeWidth的,所以描边是可能超出Layout边界的,造成截断的效果,所以可以设置内padding来处理溢出。
也就是说如果需求边框宽度为2dp那么需要设置android:padding="1dp" 以此类推,padding值为stokeWith值得一半

参考文章:shapeableImageView

这篇关于android material 组件 - ShapeableImageView的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091866

相关文章

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目