Android 简单实现圆形ImageView添加双层圆形边框
项目需要,研究了下,欢迎指正。
大体思路: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添加双层圆形边框相关推荐
- android 双层边框,Android 简单实现圆形ImageView添加双层圆形边框
项目需要,研究了下,欢迎指正. 大体思路:1.首先实现圆形ImageView,需要自定义ImageView. 2.利用shap属性实现双层边框 所用素材:左边是头像,右边是背景. 很简单,直接上代码. ...
- Android中快速自定义圆形ImageView图形!
一.问题在哪里? 问题来源于app开发中一个很常见的场景--用户头像要展示成圆的: 二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在 ...
- Android CircleImageView圆形ImageView
Android CircleImageView圆形ImageView CircleImageView是github上一个第三方开源的实现圆形ImageView的项目. 其在github上的项目主 ...
- Android BitmapShader实现圆角、圆形ImageView
项目中,有时候我们会有需要圆角,或者是圆形的ImageView,自身的ImageView不带啊,不像Button可以利用shape来简单的实现圆角啊..啊..不要急,小司机来和大家一起实现你的需求. ...
- android:ImageView 圆形imageview 圆形头像
曾经自己写了个简单的ImageView,展示圆形的头像,将图片画成成圆形,带边框阴影,一目了然,今天贴出来记录一下 直接copy进项目直接使用,方便修改! package com.cleanmaste ...
- Android圆形imageview布局,Android实现圆角矩形和圆形ImageView的方式
Android中实现圆角矩形和圆形有很多种方式,其中最常见的方法有ImageLoader设置Option和自定义View. 1.ImageLoader加载图片 public static Displa ...
- android 自定义圆形pop,Android布局自定义Shap圆形ImageView可以单独设置背景与图片...
一.图片预览: 一.实现功能: 需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView. 二.具体实现: XML中布局中定义ImageView,关健设置两个参数 Android: ...
- Android 圆形 ImageView
公司最近项目需求上,需要添加圆形的ImageView,最开始的思路是用Canvas.clipPath 来实现圆形,基本上能实现,但是却出现了锯齿,用了很多方法(包括在百度搜索很多demo,都是一样)却 ...
- android imageview 锯齿,Android 圆形ImageView 怎样解决边缘锯齿的有关问题
Android 圆形ImageView 怎样解决边缘锯齿的问题 项目里面的用户头像要求是圆形的,所以自己重写了个ImageView控件,但是实际显示效果不是很好,图片边缘锯齿比较明显,网上看了一些抗锯 ...
最新文章
- 01python语言程序设计基础——初识python
- javascript 代码_代码简介:2016年JavaScript的现状
- 一位软件工程师的6年总结(转载)
- c++ main函数调用 类中的枚举_为啥用枚举,枚举有哪些用法?
- TabSpec与TabHost
- 2020年李永乐线性代数强化笔记-向量
- MATLAB从入门到精通-MATLAB2021版类似excel的坐标轴标签自动缩放布局
- ps ico插件_Photoshop 2020特别版 内置多款实用插件
- angularJs动画 --实例
- jvm能识别什么字符集_识别JVM –比预期要难
- 2021湖北高考成绩查询热线,湖北招生考试网:2021年湖北高考成绩查询入口、查分系统...
- C#.NET学习笔记2---C#.第一个C#程序
- 判定浏览器是否支持原生透明
- ecstore 定时任务配置
- RDS经典网络平滑迁移到VPC的混访方案
- EKS使用AWS EFS CSI
- 【踩坑日记 · 前端】为 Excalidraw 添加中文手写字体
- onbeforeunload与onunload用法(转)
- 剧本翻译之SHUFFLE 6月21日
- sql语句 如果为空值显示为0