位置: 编程技术 - 正文

ImageView的圆形图片显示(imageview tint)

编辑:rootadmin

推荐整理分享ImageView的圆形图片显示(imageview tint),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:imagej怎么画圆,圆形图怎么显示数据,image圆角,image圆角,image圆角,imageview tint,imageview设置图片圆角,img 圆形,内容如对您有帮助,希望把文章链接给更多的朋友!

在很多应用中,我们看到,个人主页里面的头像一般都是圆的,设计成圆的会使整个界面布局变的优雅漂亮。那么,怎么使头像变圆呢?有的人说可以在上面加一个中间为透明圆形的png图,用它来遮盖住头像不就行了嘛,但是png四周始终始终是不透明的,怎么做也达不到如下的效果图的。

ImageView的圆形图片显示(imageview tint)

下面我们讲讲怎么做成的吧。

首先创建一个继承ImageView的抽象类MaskedImage。让他重写onDraw方法。代码如下

public abstract class MaskedImage extends ImageView { private static final Xfermode MASK_XFERMODE; private Bitmap mask; private Paint paint; static { PorterDuff.Mode localMode = PorterDuff.Mode.DST_IN; MASK_XFERMODE = new PorterDuffXfermode(localMode); } public MaskedImage(Context paramContext) { super(paramContext); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public abstract Bitmap createMask(); protected void onDraw(Canvas paramCanvas) { Drawable localDrawable = getDrawable(); if (localDrawable == null) return; try { if (this.paint == null) { Paint localPaint1 = new Paint(); this.paint = localPaint1; this.paint.setFilterBitmap(false); Paint localPaint2 = this.paint; Xfermode localXfermode1 = MASK_XFERMODE; @SuppressWarnings("unused") Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1); } float f1 = getWidth(); float f2 = getHeight(); int i = paramCanvas.saveLayer(0.0F, 0.0F, f1, f2, null, ); int j = getWidth(); int k = getHeight(); localDrawable.setBounds(0, 0, j, k); localDrawable.draw(paramCanvas); if ((this.mask == null) || (this.mask.isRecycled())) { Bitmap localBitmap1 = createMask(); this.mask = localBitmap1; } Bitmap localBitmap2 = this.mask; Paint localPaint3 = this.paint; paramCanvas.drawBitmap(localBitmap2, 0.0F, 0.0F, localPaint3); paramCanvas.restoreToCount(i); return; } catch (Exception localException) { StringBuilder localStringBuilder = new StringBuilder() .append("Attempting to draw with recycled bitmap. View ID = "); System.out.println("localStringBuilder=="&#;localStringBuilder); } } } 然后新建一个类CircularImage继承MaskedImage。代码如下:

public class CircularImage extends MaskedImage { public CircularImage(Context paramContext) { super(paramContext); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public Bitmap createMask() { int i = getWidth(); int j = getHeight(); Bitmap.Config localConfig = Bitmap.Config.ARGB_; Bitmap localBitmap = Bitmap.createBitmap(i, j, localConfig); Canvas localCanvas = new Canvas(localBitmap); Paint localPaint = new Paint(1); localPaint.setColor(-); float f1 = getWidth(); float f2 = getHeight(); RectF localRectF = new RectF(0.0F, 0.0F, f1, f2); localCanvas.drawOval(localRectF, localPaint); return localBitmap; } }新建一个MainActivity,代码如下:

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CircularImage cover_user_photo = (CircularImage) findViewById(R.id.cover_user_photo); cover_user_photo.setImageResource(R.drawable.face); } } 其XML布局文件为:

<RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <ImageView android:layout_width=".0dip" android:layout_height=".0dip" android:layout_centerInParent="true" android:contentDescription="@null" android:src="@drawable/me_head_bg" /> <com.doublefi.diary.widget.CircularImage android:id="@&#;id/cover_user_photo" android:layout_width=".0dip" android:layout_height=".0dip" android:layout_centerInParent="true" /> </RelativeLayout> 如此即可

【Android】标签页、计时器、单选按钮、复选按钮 写一个小程序把安卓程序中的几个基础组件的基本用法串联起来。如下图所示:在安卓程序中,一个计时器,一直在不断地计时,每秒弹出一个提示。

[安卓]手机管家(二)splash续 继续之前对比了用户和服务器端版本,当可升级的时候,要做进一步处理,而不仅仅是toast一个有新版本

安卓开发-测试 黑盒测试:以用户角度,从输入的数据与输出数据的对应关系进行测试--(用户角度)白盒测试:又称为结构测试,透明盒测试,逻辑驱动测试或者叫基

标签: imageview tint

本文链接地址:https://www.jiuchutong.com/biancheng/386066.html 转载请保留说明!

上一篇:[安卓]手机管家(一)splash(安卓手机管家怎么关闭)

下一篇:【Android】标签页、计时器、单选按钮、复选按钮(android 标签栏)

  • 法律规定公司账本保存年限
  • 灭火器属于什么经营范围
  • 金税盘续费怎么开票
  • 小微企业免征税怎么做会计分录
  • 工业土地划拨性质有年限吗
  • 个税的滞纳金怎么算
  • 当月支付租金没有发票
  • 搅拌站是自用的账务如何做分录?
  • 过期的增值税发票能用吗
  • 出口退税征税
  • 公司一年未经营怎么赔偿
  • 关于保险机构代收车船税开具增值税发票问题的公告
  • 公休假补贴多少钱
  • 营改增后转让土地使用权怎么计算增值税
  • 报税提示您可能缺少相关组件怎么处理
  • 原材料总分类账怎么写
  • 个税计算方法举例讲解
  • 以土地入股需要开发票吗
  • 销售商品发生的业务招待费计入什么科目
  • 一般户转钱到基本户
  • 联想笔记本e49系列哪款好
  • 联想thinkpad安装win7方法
  • 购买树苗计入会计科目吗
  • 工资薪金所得包括差旅费津贴吗
  • tracert命令的用法
  • Win11怎么打开网络适配器
  • taskhost window
  • 跨年冲减无发票怎么入账
  • laravel模板引擎
  • 扣缴义务人需要办理税务登记吗
  • 企业股权投资收益缴纳什么税
  • 企业预缴增值税附加税率
  • 长期借款的利息计入
  • gpts
  • php时间函数用法代码
  • 税务文书送达回证企业要盖章吗
  • json与对象的区别
  • ntpd命令详解
  • 职工教育经费是否可以抵扣进项税
  • 员工报销车辆费怎么处理
  • 收到专票不认证不抵扣可以吗
  • 征地费用包括
  • 计提工资薪金
  • 马踏棋盘游戏规则
  • 预缴分包抵扣,所有分包都可以抵扣吗
  • SQL SERVER使用的是( )逻辑模型
  • mustn't be allowed
  • Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法
  • MongoDB中MapReduce编程模型使用实例
  • 进项税转出金额怎么算
  • 什么叫查账征收和核定征收
  • 房地产影响投资和消费,事关民生和发展
  • 关联企业费用分摊账务
  • 政府补贴递延收益的摊销时间
  • 金税盘忘记清卡了怎么办
  • 会计各种凭证的填写示例
  • 怎样才能制作出白瓷
  • 商业企业会计分录大全
  • sql server语句查询
  • 重装win8系统后没有声音
  • linux的sh
  • 计算机 win10 桌面
  • /etc/rc.d/rc与/etc/rc.d/init.d的关系介绍
  • win7开机提示重启怎么办
  • linux网卡bound
  • Win7 64位旗舰版设置字体显示比例让字体变大
  • win8.1删除所有内容并重新安装
  • win7怎么连接耳机蓝牙
  • jquery怎么写
  • Extjs优化(一)删除冗余代码提高运行速度
  • 如何使用jquery插件
  • pycharm安装教程2020.2
  • Qualcom QMI系列-基本知识介绍
  • [置顶]星陨计划
  • js异步实现原理
  • android客户端与服务器通信
  • python3 cookie
  • 车辆购置税查询官网四川
  • 怎么打印纳税申报清单
  • 国家管网集团下属企业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设