android自定义圆形imageview,分享一个效果非常好的自定义圆形ImageView(转载自博客)...

本文详述了如何使用和自定义CircleImageView,包括如何在项目中引入,解析源码,理解关键流程,如BitmapShader、Matrix的运用,以及如何实现图片的最小失真和居中显示。此外,还提供了CircleImageView的项目源码链接和使用步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文分为三大部分:

CircleImageView的使用

CircleImageView源码分析

Android自定义View总结

CircleImageView项目源码下载:

https://github.com/hdodenhof/CircleImageView

打开源码会发现主要就是一个继承了ImageView 的类——CircleImageView .Java,代码优雅精致,效果很nice。下面会进行源码分析,让我加深了不少Canvas、BitmapShader、Matrix相关知识。

CircleImageView的使用

我这里一步步展示使用步骤,记录下当时遇到的问题。

按照上面的地址下载,项目文件名CircleImageView-master。目录下的circleimageview为库文件,sample为官方demo,使用fragment比较繁琐。这里我自己新建demo学会使用。

新建一个Android项目CircleImageViewDemo_1,复制上一步circleimageview文件夹里的CircleImageView.java到CircleImageViewDemo_1中。

CircleImageView.java地址:

CircleImageView-master\circleimageview\src\main\java\de\hdodenhof\circleimageview

项目src中:

这里写图片描述

此时会发现CircleImageView.java里报错,出错为没有R.styleable.CircleImageView。这是因为我们缺少自定义View的属性attrs.xml。在CircleImageView-master中找到attrs.xml并复制到项目里的res/values下。错误消失。

attrs.xml地址:

CircleImageView-master\circleimageview\src\main\res\values

4 接下来就要在activity_main.xml里使用CircleImageView了。我仿照官方demo进行layout布局,同时引用官方图片。

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.example.circleimageviewdemo_1.MainActivity" >

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:padding="@dimen/base_padding"

android:background="@color/light">

android:layout_width="160dp"

android:layout_height="160dp"

android:layout_centerInParent="true"

android:class="lazyload" src="https://img-blog.csdnimg.cn/2022010614011939425.png" data-original="@drawable/hugh"

app:border_width="2dp"

app:border_color="@color/dark" />

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:padding="@dimen/base_padding"

android:background="@color/dark">

android:layout_width="160dp"

android:layout_height="160dp"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值