项目需要,研究了下,欢迎指正。

大体思路:1.首先实现圆形ImageView,需要自定义ImageView。

2.利用shap属性实现双层边框

所用素材:左边是头像,右边是背景。

很简单,直接上代码。

自定义圆形ImageView:

package com.example.test;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;public class RoundImageView extends ImageView {private Paint paint;private Bitmap bmp;public RoundImageView(Context context) {super(context);// TODO Auto-generated constructor stubinit();}public RoundImageView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stubinit();}public RoundImageView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public void init() {paint = new Paint();paint.setAntiAlias(true);paint.setDither(true);paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));}@Overrideprotected void onDraw(Canvas canvas) {int w = getWidth();int h = getHeight();Drawable drawable = getDrawable();int i = canvas.saveLayer(0.0F, 0.0F, w, h, null, 31);int j = getWidth();int k = getHeight();drawable.setBounds(0, 0, j, k);drawable.draw(canvas);if (bmp == null){bmp = createMask();}canvas.drawBitmap(bmp, 0.0F, 0.0F, paint);canvas.restoreToCount(i);}public Bitmap createMask() {int i = getWidth();int j = getHeight();Bitmap.Config localConfig = Bitmap.Config.ARGB_8888;Bitmap localBitmap = Bitmap.createBitmap(i, j, localConfig);Canvas localCanvas = new Canvas(localBitmap);Paint localPaint = new Paint(1);localPaint.setColor(-16777216);float f1 = getWidth();float f2 = getHeight();RectF localRectF = new RectF(0.0F, 0.0F, f1, f2);localCanvas.drawOval(localRectF, localPaint);return localBitmap;}}

第一个圆形边框:round_corners_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" ><solid android:color="#7e7d7d" /><corners android:radius="100dp" /></shape>

第二个圆形边框,半透明: round_corners_layout_translucent.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" ><solid android:color="#667e7d7d" />    <corners android:radius="100dp" /></shape>

布局文件:activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:scaleType="fitCenter"android:src="@drawable/kebi_bg" /><Viewandroid:layout_width="110dp"android:layout_height="110dp"android:layout_centerInParent="true"android:background="@drawable/round_corners_layout" /><Viewandroid:layout_width="120dp"android:layout_height="120dp"android:layout_centerInParent="true"android:background="@drawable/round_corners_layout_translucent" /><com.example.test.RoundImageViewandroid:id="@+id/ri_photo_id"android:layout_width="100dp"android:layout_height="100dp"android:scaleType="fitXY"android:src="@drawable/kebi"android:layout_centerInParent="true" /></RelativeLayout>

效果图:

工程源码: http://download.csdn.net/detail/wblyuyang/8430671



Android 简单实现圆形ImageView添加双层圆形边框相关推荐

  1. android 双层边框,Android 简单实现圆形ImageView添加双层圆形边框

    项目需要,研究了下,欢迎指正. 大体思路:1.首先实现圆形ImageView,需要自定义ImageView. 2.利用shap属性实现双层边框 所用素材:左边是头像,右边是背景. 很简单,直接上代码. ...

  2. Android中快速自定义圆形ImageView图形!

    一.问题在哪里? 问题来源于app开发中一个很常见的场景--用户头像要展示成圆的:       二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在 ...

  3. Android CircleImageView圆形ImageView

     Android CircleImageView圆形ImageView CircleImageView是github上一个第三方开源的实现圆形ImageView的项目. 其在github上的项目主 ...

  4. Android BitmapShader实现圆角、圆形ImageView

    项目中,有时候我们会有需要圆角,或者是圆形的ImageView,自身的ImageView不带啊,不像Button可以利用shape来简单的实现圆角啊..啊..不要急,小司机来和大家一起实现你的需求. ...

  5. android:ImageView 圆形imageview 圆形头像

    曾经自己写了个简单的ImageView,展示圆形的头像,将图片画成成圆形,带边框阴影,一目了然,今天贴出来记录一下 直接copy进项目直接使用,方便修改! package com.cleanmaste ...

  6. Android圆形imageview布局,Android实现圆角矩形和圆形ImageView的方式

    Android中实现圆角矩形和圆形有很多种方式,其中最常见的方法有ImageLoader设置Option和自定义View. 1.ImageLoader加载图片 public static Displa ...

  7. android 自定义圆形pop,Android布局自定义Shap圆形ImageView可以单独设置背景与图片...

    一.图片预览: 一.实现功能: 需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView. 二.具体实现: XML中布局中定义ImageView,关健设置两个参数 Android: ...

  8. Android 圆形 ImageView

    公司最近项目需求上,需要添加圆形的ImageView,最开始的思路是用Canvas.clipPath 来实现圆形,基本上能实现,但是却出现了锯齿,用了很多方法(包括在百度搜索很多demo,都是一样)却 ...

  9. android imageview 锯齿,Android 圆形ImageView 怎样解决边缘锯齿的有关问题

    Android 圆形ImageView 怎样解决边缘锯齿的问题 项目里面的用户头像要求是圆形的,所以自己重写了个ImageView控件,但是实际显示效果不是很好,图片边缘锯齿比较明显,网上看了一些抗锯 ...

最新文章

  1. 01python语言程序设计基础——初识python
  2. javascript 代码_代码简介:2016年JavaScript的现状
  3. 一位软件工程师的6年总结(转载)
  4. c++ main函数调用 类中的枚举_为啥用枚举,枚举有哪些用法?
  5. TabSpec与TabHost
  6. 2020年李永乐线性代数强化笔记-向量
  7. MATLAB从入门到精通-MATLAB2021版类似excel的坐标轴标签自动缩放布局
  8. ps ico插件_Photoshop 2020特别版 内置多款实用插件
  9. angularJs动画 --实例
  10. jvm能识别什么字符集_识别JVM –比预期要难
  11. 2021湖北高考成绩查询热线,湖北招生考试网:2021年湖北高考成绩查询入口、查分系统...
  12. C#.NET学习笔记2---C#.第一个C#程序
  13. 判定浏览器是否支持原生透明
  14. ecstore 定时任务配置
  15. RDS经典网络平滑迁移到VPC的混访方案
  16. EKS使用AWS EFS CSI
  17. 【踩坑日记 · 前端】为 Excalidraw 添加中文手写字体
  18. onbeforeunload与onunload用法(转)
  19. 剧本翻译之SHUFFLE 6月21日
  20. sql语句 如果为空值显示为0

热门文章

  1. 表分区的几种类型及操作方法
  2. ‘\t‘和“\t“的区别及作用
  3. 图像测量技术:面积测量
  4. 日本房地产泡沫 Japan Real Estate Bubble
  5. 屏蔽百度搜索结果页的推送广告
  6. qt高亮快捷键_Qt常用快捷键
  7. Unity动态绘制多边形
  8. 全球时间与北京时间、UTC时间关系表
  9. 域控-笔记二(域权限,域组,域管理,Kerberso 协议)
  10. 充电慢、掉电快、续航短?这份电动车过冬指南请查收!