android 自定义圆形imageview控件

Android自定义圆角/圆形控件 开发中我们经常会需要把一张图片进行圆角处理或者显示一个圆形图片,而Android的ImageView显然无法满足我们的需求,这时候我们就需要自定义控件来完成。阅读完本篇博客你可以Get到以下内容: 实现圆角图片的ImageView 实现圆形图片的ImageView 在自定义控件中使用自定义属性 那么我们首先看下效果:1、圆角图片 2、圆形图片 接下来我们开始一步一步去实现:1、我们首先创建一个R 阅读详情

首先,定义定义圆形Imageview类:



import android.content.Context;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundImageView extends ImageView {

public RoundImageView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public RoundImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onDraw(Canvas canvas) {

    Drawable drawable = getDrawable();

    if (drawable == null) {
        return;
    }

    if (getWidth() == 0 || getHeight() == 0) {
        return; 
    }
    
    Bitmap b =  ((BitmapDrawable)drawable).getBitmap();
    
    if(null == b)
    {
    	return;
    }
    
    Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);

    int w = getWidth(), h = getHeight();


    Bitmap roundBitmap =  getCroppedBitmap(bitmap, w);
    canvas.drawBitmap(roundBitmap, 0,0, null);

}

public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
    Bitmap sbmp;
    if(bmp.getWidth() != radius || bmp.getHeight() != radius)
        sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
    else
        sbmp = bmp;
    Bitmap output = Bitmap.createBitmap(sbmp.getWidth(),
            sbmp.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final int color = 0xffa19774;
    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());

    paint.setAntiAlias(true);
    paint.setFilterBitmap(true);
    paint.setDither(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(Color.parseColor("#BAB399"));
    canvas.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f,
            sbmp.getWidth() / 2+0.1f, paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(sbmp, rect, rect, paint);


            return output;
}

}


然后在别的布局文件中使用该控件即可,如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/side_right"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_marginTop="35dip"
        android:orientation="vertical" >

        <<span style="color:#ff0000;">com.founder.reader.view.RoundImageView</span>
            android:id="@+id/right_login_head"
            android:layout_width="60dip"
            android:layout_height="60dip"
            android:scaleType="centerInside"
            android:src="@drawable/user" />


 

cuda安装时出现错误 Unable to locate package cuda-toolkit-12-4 阅读详情

相关推荐

告别玄学调参:手把手教你用20元件模型搞定GaN HEMT高频仿真(附S参数提取避坑指南)

本文详细介绍了如何使用20元件模型优化GaN HEMT高频仿真,解决传统16元件模型在10GHz以上频段的误差问题。通过S参数提取避坑指南和实战案例,帮助工程师精准建模分布式电极效应和寄生反馈路径,提升射频电路设计效率。

weixin_42523693的博客 441

android_基础_圆形imageView的实现

四种自定义圆形ImageView的方法 BitmapShader: 使用着色器 Xfermode:使用图层叠加 ClipPath:通过对画布裁剪的方式 RoundedBitmapDrawable: 系统API圆角类 前面三种是通过继承ImageView重写onDraw()方法实现 最后一种是系统API直接使用。 每一种方式都能实现显示圆形图片, 我们主要从以下几个方面来比较各个方式的不同 实现方式难易 空白的背景 抗锯齿的能力 第1种方式:BitmapShader实现 通过对Pain

写bug的蚊子的博客 2990

CTF命令执行绕过实战:从空格过滤到无回显外带的7种核心姿势

命令执行漏洞是Web安全中的常见高危漏洞,其核心原理在于应用程序未对用户输入进行充分过滤,导致攻击者能够注入并执行系统命令。在真实环境中,安全防护措施(如WAF、输入过滤函数)普遍存在,因此漏洞利用的关键技术在于“绕过”这些过滤机制。理解过滤器的运作逻辑(如黑名单、白名单、转义、长度限制)是成功绕过的前提。通过系统学习**空格绕过**、**命令黑名单绕过**、**编码混淆**等基础技巧,并结合**无回显外带**、**反弹Shell**等高级利用链,安全研究人员能够有效应对复杂防护场景。本文以CTFshow

weixin_29315091的博客 368

Android 实现圆形的 ImageView 的3种方法

方法1: 裁剪Bitmap,设置ImageView src 主要是取缩放/裁剪Bitmap,然后设置给ImageView src或者background 实际使用中发现系统app 的ICON 比较特殊,比如时钟/日历是动态的,把通过PackageManager 拿到的Drawable 转成BitmapDrawable 后显示出来的图片和在桌面看到的不一样的.具体为什么Drawable 转成BitmapDrawable后有这个异常现象暂时没有去研究.后面找时间去研究. public static ...

Happy learning 7760

12V INPUT电源电路设计中的关键保护机制解析【精简】

本文深入解析了12V INPUT电源电路设计中不可或缺的关键保护机制。针对常见的电源反接、过压及浪涌等风险,文章详细拆解了PMOS防反接、TVS过压钳位、OVP芯片关断以及快速断电电路等核心防护方案的设计原理、选型要点与实战优化技巧,旨在帮助工程师构建可靠、经济的电源前端防御体系。

weixin_29158047的博客 228

超级超级细的CLIP官方模型解读及代码逐行讲解

本文详细解析了OpenAI开源的CLIP模型代码架构。文章首先介绍模型概念,包括训练时通过对称损失计算图像-文本相似度,预测时通过余弦相似度匹配最佳文本。随后重点解析各模块代码实现:LayerNorm改进、QuickGELU激活函数、Transformer编码器结构、ViT图像编码器的特征提取过程、文本编码器的掩码机制和特征投影。最后阐述CLIP整体架构如何整合视觉和文本编码器,并详细说明了特征归一化和相似度计算的关键实现。全文通过代码级解读帮助读者深入理解CLIP模型的实现细节。

m0_64595440的博客 2425

Android 圆形 ImageView

公司最近项目,需求上,需要添加圆形的ImageView,最开始的思路是用Canvas.clipPath 来实现圆形,基本上能实现,但是却出现了锯齿,用了很多方法(包括在百度搜索很多demo,都是一样)却始终解决不了切割Canvas出现的锯齿,如果有哪位大神看见这篇文章请指点一下,谢谢! 言归正传,那么如何实现一个锯齿,同时比较圆润的圆形ImageView呢?先看看第一步实现的效果图:

wushu2011的专栏 2508

双Orin PCIe RC&EP模式互通

orin pcie 互通

乐于分享 3877

AndroidStudio imageView变成圆形——需要Glide

【代码】AndroidStudio imageView变成圆形——需要Glide。

m0_73875883的博客 803

零基础学GPU KMD--8. 内存管理:GPU 显存与系统内存的协同​8.1 显存分配策略:GEM / TTM 原理

支持 VRAM、GTT(Graphics Translation Table)、SYSTEM 内存的动态迁移与缓存管理。:若缓冲区在 SYSTEM,TTM 分配 GTT 条目并建立页表映射,使 GPU 可直接访问。:系统内存中预留给 GPU 直接访问的区域,通过 GPU 的 MMU 做地址翻译。你需要我继续展开这一部分吗?​ 为复杂离散 GPU 设计,应对大容量 VRAM、多内存域、显存迁移等问题。:重量级、功能全,适合大容量、多内存域的离散 GPU,强调显存迁移与统一管理。

amy_mhd的博客 185

软考高级-系统架构设计师 论文范文参考(一)

系统架构设计师 论文参考

片言可决讼,半纸能缚龙 4340

超简单的自定义ImageView,支持圆角和直角

1、需求:ImageView显示的图片,上方的两个角是圆角,下方的两个角是直角。 2、这篇文章推荐了三种方式,我选择第三种ClipPath方式,这种方式很精简。 参考:https://www.jianshu.com/p/626dbd93207d 3、先来总结下自定义ImageView需要实现的功能: ①四个角的度数均要支持自定义 ②可以在xml布局当中添加自定义的度数 4、

tinyVampire的博客 4万+

vue2/3 - 详细实现高德地图轨迹回放,vue高德地图车辆历史行驶轨迹播放,在地图上绘制行程轨迹|起点和终端的路程绘制|用户运动轨迹绘制及播放等(支持开始/暂停、进度条拖放、控制播放轨迹的倍速等)

vue2,vue3,nuxt,高德地图,轨迹,vue高德地图轨迹回放,历史轨迹回放,轨迹回放功能支持倍速及进度条拖拽,VUE高德地图轨迹回放、倍速调整、进度条拖拽,vue3高德地图轨迹回放,Vue实现地图路径回放,vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速,多条轨迹陆续播放,巡航轨迹做带进度条和倍速的轨迹回放,Vue高德地图路径回放,历史轨迹回放并能控制播放轨迹的倍速,使用高德地图实现轨迹播放和进度条控制,vue高德地图如何实现轨迹回放,高德地图做轨迹绘制用什么api,高德轨迹API,驾车轨

✅ 精选推荐文章 1万+

Android 自定义控件基本教程之自定义一个圆形ImageView可设置边框和阴影(demo带详细注释)

Android 自定义控件基本教程之自定义一个圆形ImageView可设置边框和阴影(demo带详细注释)前言目标效果图感谢流程第一步、自定义属性第二步、初始化控件第三步、测量控件宽高onMeasure第四步、绘制控件onDraw第五步、提供代码修改属性的方法第六步、使用Github 前言 做Android开发,必定离不开的就是自定义控件。祖传的原生控件肯定不足以完成UI设计的全部要求。当然,很多...

杨迪龙的博客 1869

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android自定义ImageView实现圆形控件显示

1.自定义圆形控件github地址:https://github.com/hdodenhof/CircleImageView 主要的类: [java] view plain copy   package de.hdodenhof.circleimageview;   import edu.njupt.zhb.main.R;   impor

翟浩浩Android专栏 1448

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 自定义ImageView控件实现圆形图片-适用于用户头像

android开发中常常涉及到一种情况,就是将用户上传的图片以圆形样式显示,但是用户上传的图片可以有直角、圆角、正方形等多种不确定样式,这时就用到了自定义ImageView控件,在安卓客户端使接收到的图片全部以圆形样式显示 CircleImageView.java public c...

cijcarjh606134的博客 131

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android自定义圆形imageview,Android自定义控件之圆形、圆角ImageView

一、问题在哪里?问题来源于app开发中一个很常见的场景——用户头像要展示成圆的: 二、怎么搞?机智的我,第一想法就是,切一张中间圆形透明、四周与底色相同、尺寸与头像相同的蒙板图片,盖在头像上不就完事了嘛,哈哈哈!在背景纯色的前提下,这的确能简单解决问题,但是如果背景没有这么简单呢?在这种不规则背景下,有两个问题:1)、背景图常常是适应手机宽度缩放,而头像的尺寸又是固定宽高DP的,所以固定的蒙板图片...

weixin_39834780的博客 626

android自定义圆形imageview,Android — 自定义圆形 ImageView 控件

需求描述越来越多的社交软件通过圆形外框来展现用户头像,因此我们需要将方形源文件以圆形来展示。实现 src 圆形化显示完整代码:public class CircleImageView extends ImageView {private static final String TAG = "CircleImageView";private Shader mShader;private Paint ...

weixin_34326484的博客 375

android自定义圆形控件,android 自定义圆形imageview控件

首先,定义定义圆形Imageview类:import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Color;import android.grap...

weixin_35748508的博客 356

Android自定义控件——圆形ImageView

其实圆形的Imageview网上有很多,我的代码也是来源于网上,只是我稍作修改将代码提出来了。 直接上代码。 public class RoundImageView extends ImageView { private int mBorderThickness = 0; private Context mContext; private int defau

ybw486的博客 1128

android 自定义扇形控件,Android自定义控件之圆形进度条ImageView

From:http://blog.youkuaiyun.com/xiadik/article/details/41648181packagecom.wangran.beautiful_girl_show.view;importcom.wangran.beautiful_girl_show.view.photoview.PhotoView;importandroid.content.Context;import...

weixin_33734921的博客 259

android 自定义circleimageview,Android — 自定义圆形 ImageView 控件

需求描述越来越多的社交软件通过圆形外框来展现用户头像,因此我们需要将方形源文件以圆形来展示。实现 src 圆形化显示完整代码:public class CircleImageView extends ImageView {private static final String TAG = "CircleImageView";private Shader mShader;private Paint ...

weixin_39686230的博客 211

[转]android 自定义圆形imageview控件

android布局 首先,定义定义圆形Imageview类: [java]view plaincopy importandroid.content.Context; importandroid.graphics.Bitmap; importandroid.graphics.Bitmap.Config; im...

weixin_30443747的博客 84

Android — 自定义圆形 ImageView 控件

需求描述 越来越多的社交软件通过圆形外框来展现用户头像,因此我们需要将方形源文件以圆形来展示。 实现 src 圆形化显示 完整代码: public class CircleImageView extends ImageView { private static final String TAG = "CircleImag...

weixin_34341117的博客 90

android开源系列:CircleImageView自定义圆形控件的使用

1.自定义圆形控件github地址:https://github.com/hdodenhof/CircleImageView主要的类:package de.hdodenhof.circleimageview; import edu.njupt.zhb.main.R; import android.content.Context; import android.content.res.TypedAr

郑海波(莫川)的优快云博客 2万+

CircleImageView自定义圆形控件的使用

1.自定义圆形控件github地址:https://github.com/hdodenhof/CircleImageView package de.hdodenhof.circleimagev...

qq_32534441的博客 1142
上一篇: linux 在批处理中,完整路径有空格的处理方式(加引号)
下一篇: http参数中特殊字符处理
hellochenlian
博客等级 码龄17年 629粉丝 295原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellochenlian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值