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

  1. import android.content.Context;
  2. import android.graphics.Bitmap;
  3. import android.graphics.Bitmap.Config;
  4. import android.graphics.Canvas;
  5. import android.graphics.Color;
  6. import android.graphics.Paint;
  7. import android.graphics.PorterDuff.Mode;
  8. import android.graphics.PorterDuffXfermode;
  9. import android.graphics.Rect;
  10. import android.graphics.drawable.BitmapDrawable;
  11. import android.graphics.drawable.Drawable;
  12. import android.util.AttributeSet;
  13. import android.widget.ImageView;
  14. public class RoundImageView extends ImageView {
  15. public RoundImageView(Context context) {
  16. super(context);
  17. // TODO Auto-generated constructor stub
  18. }
  19. public RoundImageView(Context context, AttributeSet attrs) {
  20. super(context, attrs);
  21. }
  22. public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
  23. super(context, attrs, defStyle);
  24. }
  25. @Override
  26. protected void onDraw(Canvas canvas) {
  27. Drawable drawable = getDrawable();
  28. if (drawable == null) {
  29. return;
  30. }
  31. if (getWidth() == 0 || getHeight() == 0) {
  32. return;
  33. }
  34. Bitmap b =  ((BitmapDrawable)drawable).getBitmap();
  35. if(null == b)
  36. {
  37. return;
  38. }
  39. Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
  40. int w = getWidth(), h = getHeight();
  41. Bitmap roundBitmap =  getCroppedBitmap(bitmap, w);
  42. canvas.drawBitmap(roundBitmap, 0,0, null);
  43. }
  44. public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
  45. Bitmap sbmp;
  46. if(bmp.getWidth() != radius || bmp.getHeight() != radius)
  47. sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
  48. else
  49. sbmp = bmp;
  50. Bitmap output = Bitmap.createBitmap(sbmp.getWidth(),
  51. sbmp.getHeight(), Config.ARGB_8888);
  52. Canvas canvas = new Canvas(output);
  53. final int color = 0xffa19774;
  54. final Paint paint = new Paint();
  55. final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());
  56. paint.setAntiAlias(true);
  57. paint.setFilterBitmap(true);
  58. paint.setDither(true);
  59. canvas.drawARGB(0, 0, 0, 0);
  60. paint.setColor(Color.parseColor("#BAB399"));
  61. canvas.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f,
  62. sbmp.getWidth() / 2+0.1f, paint);
  63. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
  64. canvas.drawBitmap(sbmp, rect, rect, paint);
  65. return output;
  66. }
  67. }

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:background="@drawable/side_right"
  6. android:gravity="center"
  7. android:orientation="vertical" >
  8. <LinearLayout
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:gravity="center"
  12. android:layout_marginTop="35dip"
  13. android:orientation="vertical" >
  14. <<span style="color:#ff0000;">com.founder.reader.view.RoundImageView</span>
  15. android:id="@+id/right_login_head"
  16. android:layout_width="60dip"
  17. android:layout_height="60dip"
  18. android:scaleType="centerInside"
  19. android:src="@drawable/user" />

[转]android 自定义圆形imageview控件的更多相关文章

  1. android 自定义空间 组合控件中 TextView 不支持drawableLeft属性

    android 自定义空间 组合控件中 TextView 不支持drawableLeft属性.会报错Caused by: android.view.InflateException: Binary X ...

  2. (转载)Android自定义标签列表控件LabelsView解析

    Android自定义标签列表控件LabelsView解析 作者 donkingliang 关注 2017.03.15 20:59* 字数 759 阅读 406评论 0喜欢 3 无论是在移动端的App, ...

  3. Android自定义View和控件之一-定制属于自己的UI

    照例,拿来主义.我的学习是基于下面的三篇blog.前两是基本的流程,第三篇里有比较细致的绘制相关的属性.第4篇介绍了如何减少布局层次来提高效率. 1. 教你搞定Android自定义View 2. 教你 ...

  4. Android 自定义View修炼-如何打造Android自定义的下拉列表框控件

    一.概述 Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的 ...

  5. Android自定义控件进阶-打造Android自定义的下拉列表框控件

    技术:Android+java   概述 Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的 ...

  6. Android 如何打造Android自定义的下拉列表框控件

    一.概述 Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的 ...

  7. Android自定义标签列表控件LabelsView解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 无论是在移动端的App,还是在前端的网页,我们经常会看到下面这种标签的列表效果:   标签从左到右摆放,一行显示不下时自动换行.这样的效果用And ...

  8. Android自定义“图片+文字”控件四种实现方法之 二--------个人最推荐的一种

    http://blog.csdn.net/yanzi1225627/article/details/8633872 第二种方法也要新建一个图片+文字的xml布局文件,然后写一个类继承自LinearLa ...

  9. 自定义圆形图片控件CircleImageView的实现

    package com.loaderman.circleimageviewdemo; import android.content.Context; import android.content.re ...

随机推荐

  1. 巅峰极客第二场CTF部分writeup

    word-MISC 微信回答问题+word字体里. sqli-WEB 注册个admin空格即可,长字符截断. 晚上把后续的写出来.现在睡觉

  2. nginx证书制作以及配置https并设置访问http自动跳转https(反向代理转发jboss)

    nginx证书制作以及配置https并设置访问http自动跳转https 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖 ...

  3. Spring是什么+控制反转和依赖注入

    Spring是一个开源框架,是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 原因: (1)通过控制反转(IOC)达到松耦合,IOC也就是把控制权交出去,在使用中直接得到对象 (2)提 ...

  4. 安装sudo apt-get install ros-kinetic-desktop-full,报错mv: 无法获取'/var/lib/ni/licenses.xml.dpkg-old' 的文件状态(stat): 没有。。。。

    安装sudo apt-get install ros-kinetic-desktop-full,报了一堆错误 mv: 无法获取'/var/lib/ni/licenses.xml.dpkg-old' 的 ...

  5. jsonpath for js

    /** * @license * JSONPath 0.8.0 - XPath for JSON * * Copyright (c) 2007 Stefan Goessner (goessner.ne ...

  6. Kaggle:Titanic: Machine Learning from Disaster

    一直想着抓取股票的变化,偶然的机会在看股票数据抓取的博客看到了kaggle,然后看了看里面的题,感觉挺新颖的,就试了试. 题目如图:给了一个train.csv,现在预测test.csv里面的Passa ...

  7. 2018-2019-2 网络对抗技术 20165301 Exp6 信息搜集与漏洞扫描

    2018-2019-2 网络对抗技术 20165301 Exp6 信息搜集与漏洞扫描 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 (2)DNS ...

  8. hexdump related.

    hexdump format strings Tue 13 December 2005 In tips. Ian Wienand More from the "things you'd le ...

  9. [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator

    写在前面 考虑到数据量的问题,特引入bootstrap的分页插件.插件下载地址:https://github.com/lyonlai/bootstrap-paginator 系列文章 [EF]vs15 ...

  10. spring boot 笔记

    1.不能访问非启动类中的@RequestMapping 路径: 启动类注解 1.@Controller @EnableAutoConfiguration @ComponentScan 或 2.@Spr ...