Android中ShapeableImageView使用实例详解(告别shape、三方库)

这里是针对“Android中ShapeableImageView使用实例详解(告别shape、三方库)”这篇文章的详细讲解。

1. ShapeableImageView的介绍

在介绍ShapeableImageView之前,我们先来看看XML中我们通常使用来定义图片形状的几个标签:

1.1 ImageView+Shape

我们可以使用ShapeDrawable来通过在XML中定义图形来创建自定义形状和背景。常见的Shape包括矩形、圆形、椭圆等。例如,下面展示了一个带有圆角的矩形的XML定义:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/red" />
    <corners
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp" />
</shape>

我们通常会在XML中创建一个ImageView,然后将这个ShapeDrawable作为ImageView的背景设置进去。

1.2 使用三方库

除此之外,我们还可以使用第三方库来实现更为复杂的形状。例如,Glide RoundedCorners库可以用来给ImageView设置圆角等复杂形状。

1.2.1 Glide RoundedCorners的使用示例

Glide.with(this)
    .load("image_url")
    .transform(RoundedCorners(30))
    .into(imageView)

但是这样使用第三方库会增加我们应用的体积和复杂度,而且这些库不一定都实现了我们需要的形状类型。

1.3 ShapeableImageView

于是,ShapeableImageView应运而生。它是Android 5.0中一个新的控件,用于替代传统的ImageView+ShapeDrawable方式。它支持用XML定义图形、圆角、边框、阴影等属性,同时也可以支持自定义形状。

2. ShapeableImageView的使用方法

2.1 在XML中定义ShapeableImageView

我们可以在XML中使用<com.google.android.material.imageview.ShapeableImageView>来创建一个ShapeableImageView。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.imageview.ShapeableImageView
        android:id="@+id/shapeableImageView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/your_image"
        app:shapeAppearanceOverlay="@style/radius_8"
        android:background="@drawable/shape_rectangle"
        />

    // ...

</LinearLayout>

如上面示例所示,我们需要定义app:shapeAppearanceOverlay来指定控件的形状,同时也可以设置其他的属性如android:background等。

2.2 在代码中对ShapeableImageView进行操作

ShapeableImageView的使用和其他的ImageView一样。例如,我们可以使用下面的代码来获取并使用ShapeableImageView控件:

findViewById<ShapeableImageView>(R.id.shapeableImageView1).setImageResource(R.drawable.your_image)  

2.3 自定义ShapeableImageView的形状

ShapeableImageView的最大优点是可以自定义控件的形状。为此,我们可以通过指定ShapeAppearanceModel来自定义形状。这里提供一个示例来说明。

val shapeAppearanceModel = ShapeAppearanceModel.builder()
    .setTopRightCorner(CornerFamily.CUT, 50F)
    .setTopLeftCorner(CornerFamily.ROUNDED, 10F)
    .setBottomLeftCorner(CornerFamily.ROUNDED, 10F)
    .setBottomRightCorner(CornerFamily.ROUNDED, 10F)
    .build()
val shapeableImageView:ShapeableImageView = findViewById(R.id.shapeableImageView2)
shapeableImageView.shapeAppearanceModel = shapeAppearanceModel

如上述示例所示,我们可以使用ShapeAppearanceModel来指定各个角落的大小以及形状。

3. ShapeableImageView的两个示例

3.1 圆形头像

下面,我们来看看如何使用ShapeableImageView来实现圆形头像。我们需要先在XML中定义一个形状:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#FFBB22" />
</shape>

然后,在MainActivity中,我们来设置ShapeableImageView的形状:

val radius = resources.getDimension(R.dimen.rounded_image_radius)
val shapeAppearanceModel = ShapeAppearanceModel.builder()
    .setAllCornerSizes(radius)
    .build()
findViewById<ShapeableImageView>(R.id.shapeableImageView1)
    .shapeAppearanceModel = shapeAppearanceModel

最后,我们就可以在Activity中使用ShapeableImageView了。

3.2 带圆角的矩形

下面,我们再来看看如何实现带圆角的矩形。我们需要先在XML中定义一个矩形的形状:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/colorPrimary" />
    <corners android:radius="10dp" />
</shape>

然后,在MainActivity中,我们来设置ShapeableImageView的形状:

val radius = resources.getDimension(R.dimen.rounded_corners_radius)
val shapeAppearanceModel = ShapeAppearanceModel.builder()
    .setAllCornerSizes(radius)
    .build()
findViewById<ShapeableImageView>(R.id.shapeableImageView2)
    .shapeAppearanceModel = shapeAppearanceModel

最后,我们就可以在Activity中使用ShapeableImageView了。

到这里,我们就完成了本次对“Android中ShapeableImageView使用实例详解(告别shape、三方库)”这篇文章的完整讲解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android中ShapeableImageView使用实例详解(告别shape、三方库) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • ios版微信小程序跳一跳辅助

    iOS版微信小程序跳一跳辅助攻略 一、背景介绍 “跳一跳”是微信小程序中一款非常流行的休闲游戏,其简单有趣的玩法吸引了很多用户。不过,由于游戏操作的难度较高,很多用户难以达到高分,于是便催生了一些跳一跳辅助工具。本篇攻略将介绍如何在iOS端使用一款辅助工具,在跳一跳中轻易取得高分。 二、使用方法 首先在App Store中搜索“跳一跳辅助”,下载并安装该应用…

    GitHub 2023年5月16日
    00
  • Go语言基于viper实现apollo多实例快速

    下面是关于“Go语言基于viper实现apollo多实例快速”的完整攻略: 1. 理解Apollo和Viper Apollo是一款开源的分布式配置中心,可以实现应用的配置集中化管理,方便开发人员进行配置的修改和发布。Viper是一款Go语言的配置管理工具,可以方便地读取并管理本地、远程和环境配置。 2. 安装和配置Viper 在Go项目中使用viper,需要…

    GitHub 2023年5月16日
    00
  • python高级搜索实现高效搜索GitHub资源

    下面我将为你详细讲解“Python高级搜索实现高效搜索GitHub资源”的完整攻略,该攻略包含以下步骤: 参考GitHub REST API文档,获得API进行高级搜索。 GitHub提供了REST API以实现高级搜索,我们可以按照文档中的指导使用API进行搜索。具体步骤如下: a. 打开GitHub REST API的文档页面:https://docs.…

    GitHub 2023年5月16日
    00
  • CentOS下git命令行操作(图文教程)

    我将详细讲解“CentOS下git命令行操作(图文教程)”的完整攻略。该攻略主要介绍如何在CentOS系统下使用git命令行进行代码版本管理。攻略分为以下五个部分: 1. 安装Git 在CentOS下使用Git需要先进行安装,使用以下命令进行安装: yum install git 2. 配置Git 安装完成后需要进行Git的配置,包括用户名和邮箱等信息。 g…

    GitHub 2023年5月16日
    00
  • Android单项绑定MVVM项目模板的方法

    下面为你详细讲解“Android单项绑定MVVM项目模板的方法”的完整攻略。 什么是Android单项绑定MVVM项目模板 Android单项绑定MVVM项目模板是一种基于MVVM(Model-View-ViewModel)设计模式的Android应用开发框架。该框架通过单向数据绑定实现了视图(View)与数据模型(Model)之间的解耦,使得UI组件可以更…

    GitHub 2023年5月16日
    00
  • Android Studio 常见问题及解决方法(推荐)

    Android Studio 常见问题及解决方法(推荐) 1. 安装问题 1.1 安装失败 如果 Android Studio 安装过程中失败,通常情况下是由于环境变量或系统权限的问题。为了解决此问题,你可以尝试以下步骤: 确认您的系统符合 Android Studio 的最低要求。 确认你的系统没有被安装其他版本的 JDK(Java Development…

    GitHub 2023年5月16日
    00
  • 如何利用Python模拟GitHub登录详解

    下面我将详细讲解如何利用Python模拟GitHub登录的步骤和注意事项。本攻略包含两个示例,帮助你更好地理解和掌握整个过程。 知识准备 在开始前,需要掌握以下技能: 基础的Python编程能力; 熟悉HTTP协议和相关知识; 熟悉Cookie和Session等概念。 准备工作 在进行模拟登录前,我们首先需要准备以下工作: 安装requests库 reque…

    GitHub 2023年5月16日
    00
  • Git建立本地仓库并上传到Gitee的详细步骤

    下面是Git建立本地仓库并上传到Gitee的详细步骤: 1. 创建Gitee仓库并获取SSH地址 首先登录到Gitee,进入个人中心,在左侧菜单栏中选择“我的仓库”,并点击“创建仓库”按钮,输入仓库名称、描述、选择仓库类型、是否私有等信息,然后点击“创建仓库”按钮,就可以创建一个Gitee仓库了。 创建成功后,在该仓库的页面中找到SSH地址,并记下来,后面需…

    GitHub 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部