自定义圆形图片控件

import android.content.Context;
import android.graphics.*;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * Created by cg on 2015/2/2.
 * 存圆的
 */
public class RoundImageView extends ImageView {

    private Paint mMaskPaint;
    private Path mMaskPath;

    public RoundImageView(Context context) {
        super(context);
        init();
    }

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

    private void init() {
        mMaskPaint = new Paint();
        mMaskPaint.setAntiAlias(true);
        mMaskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        mMaskPath = new Path();
        setScaleType(ScaleType.CENTER_CROP);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        int width = w - getPaddingLeft() - getPaddingRight();
        int radius = width / 2;
        mMaskPath.reset();
        mMaskPath.addCircle(getPaddingLeft() + radius, getPaddingTop() + radius, radius, Path.Direction.CCW);
        mMaskPath.setFillType(Path.FillType.INVERSE_WINDING);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // 保存当前layer的透明橡树到离屏缓冲区。并新创建一个透明度爲255的新layer
        int saveCount = canvas.saveLayerAlpha(0.0F, 0.0F, canvas.getWidth(), canvas.getHeight(),
                255, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
        super.onDraw(canvas);
        if (mMaskPath != null) {
            canvas.drawPath(mMaskPath, mMaskPaint);
        }
        canvas.restoreToCount(saveCount);
    }
}
时间: 2024-12-14 04:55:47

自定义圆形图片控件的相关文章

安卓自定义圆形图片控件的使用(hdodenhof/CircleImageView)

控件的来源:https://github.com/hdodenhof/CircleImageView 感兴趣的可以去看看,我只说一下怎么使用: 效果图: 在自己的项目中使用的话,需要写一个类class CircleImageView extends ImageView : 具体如下,只是使用的话,复制过来就好,注意改一下包名: 1 package de.hdodenhof.circleimageview; 2 3 import android.content.Context; 4 import

自定义圆角图片控件(Xfermode方式)

苹果都放弃自己的棱角了... 看惯了方方正正的图片,乍一看到圆角图片觉得挺漂亮的.可当满世界都是圆角图片的时候,我又开始怀念那些棱角了~之前仓促的写过一个,今天拿过来又修改了一下,现在贴在这里,以方便以后ctrl+c.ctrl+v~~~~~ 一.目标 自定义一个图片控件,有圆形和圆角两种选择.控件的行为和ImageView一致! 二.思路 扩展ImageView控件,重写其onDraw方法.一开始还想重写onMeasure方法,如果显示圆形图片强制宽高相等,没能行得通(代码中会说明).圆角图片以

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.graphics.Paint; import android.graphics.PorterDu

Android自定义设置圆形图片控件

注:这篇文章是转载alan_biao博主的一篇文章,正好用到,觉得里面代码很精髓,贴出来并给与链接供需要的童鞋下载使用!已贴出核心代码和提供源码地址. Android自定义圆形图片,可设置最多两个的外边框,包括从网络获取图片显示. 1.解决图片锯齿问题. 2.解决图片变形问题. 效果图: 原始图片: 原文地址和源码下载链接:http://blog.csdn.net/alan_biao/article/details/17379925

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

android布局 首先,定义定义圆形Imageview类: [java] view plaincopy 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;

Android 开元圆形图片控件

http://blog.objcc.com/circleimageview/ circleImageview

Android自定义圆形图片

最近研究了一下圆形图片控件,之前一直是用别人写好的类,自己写一下,发现对canvas理解更深入了. 基本思路: 自定义CircleImageView继承自ImageView,在canvas中新建一个图层,先把要显示的头像绘制在上面,再绘制圆形遮罩,设置画笔模式为:当两个图像重叠时,显示交叉部分下面的图像. 源码如下:(直接拿去用就可以了) package com.lt.DrawDemo; import android.content.Context; import android.graphic

Android——自定义镂空遮盖控件

刚学完ViewDragHelper和PorterDuffXferMode的我,突然想做一个这样效果的自定义控件:点击ListView的列表项,通过ViewDragHelper用动画方式上下各弹出一个控件遮盖住ListView,这两个控件在遮盖listView的过程中有一部分是镂空的.先上效果图: 首先是进行页面的布局,让自定义控件PlayLayout继承自Franlayout,在最底层放的就是listView所在的子FramLayout(Id:midContent),然后依次在上面加上下两个看起

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作)

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作) 一.简单说明 使用数据刷新框架: 该框架提供了两种刷新的方法,一个是使用block回调(存在循环引用问题,_ _weak),一个是使用调用. 问题:在进行下拉刷新之前,应该要清空之前的所有数据(在刷新数据这个方法中). 移除正在显示的cell: (1)把字典中的所有的值,都从屏幕上移除 (2)清除字典中的所有元素 (3)清除cell的frame,每个位置的cell的frame都要重新计算 (4)清除可复用的缓存池. 该部分的代码如下: 1