关闭

安卓自定义ImageView实现圆形图片效果

标签: 自定义控件
385人阅读 评论(0) 收藏 举报
分类:

核心代码:

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.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundImageView extends ImageView {

    private Bitmap b;

    public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public RoundImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public RoundImageView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onDraw(Canvas canvas) {

        Drawable drawable = getDrawable();

        if (drawable == null) {
            return;
        }

        if (getWidth() == 0 || getHeight() == 0) {
            return;
        }
        if(drawable instanceof BitmapDrawable){         
        b = ((BitmapDrawable)drawable).getBitmap();
        }
//       b = ((BitmapDrawable) drawable).getBitmap();

        if (null == b) {
            return;
        }

        Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);

        int w = getWidth(), h = getHeight();

        Bitmap roundBitmap = getCroppedBitmap(bitmap, w);
        canvas.drawBitmap(roundBitmap, 0, 0, null);

    }

    public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
        Bitmap sbmp;
        if (bmp.getWidth() != radius || bmp.getHeight() != radius)
            sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
        else
            sbmp = bmp;
        Bitmap output = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(),
                Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        final int color = 0xffa19774;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());

        paint.setAntiAlias(true);
        paint.setFilterBitmap(true);
        paint.setDither(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(Color.parseColor("#BAB399"));
        canvas.drawCircle(sbmp.getWidth() / 2 + 0.7f,
                sbmp.getHeight() / 2 + 0.7f, sbmp.getWidth() / 2 + 0.1f, paint);
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(sbmp, rect, rect, paint);

        return output;
    }
}
0
0
查看评论

Android中使用自定义的view实现圆形图片的效果

今天给大家讲的是怎么在xml文件找中通过引用自定义的view实现ImageView的圆形图片效果。首先在你的项目中新建一个类,我给它命名为:CircleImageView;然后在res目录下的values资源目录下面新建一个名为:attrs的资源xml文件。当你把这两步都弄完了后就可以在你的xml布...
  • csdnzouqi
  • csdnzouqi
  • 2016-07-24 16:26
  • 4003

自定义ImageView显示图片为圆形,并可以设置光环

public class ImageViewPlus extends ImageView { private Paint paintBitmap = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint paintBorder = new ...
  • xingwei08246
  • xingwei08246
  • 2016-12-15 10:14
  • 787

Android利用自定义View实现水波纹效果

这个是朋友当时帮我写出来的一个,自定义View实现水波纹的效果   记录下来,以后多看看   温故而知新    效果图就是这样      这是 在自定义View类写的代码 package com.example...
  • better_candy
  • better_candy
  • 2015-08-27 10:25
  • 434

Android自定义圆形图片

Android自定义圆形图片,可设置最多两个的外边框。包括从网络获取图片显示。 解决图片锯齿问题。 解决图片变形问题。 源代码下载
  • alan_biao
  • alan_biao
  • 2013-12-17 17:13
  • 70294

Android 自定义ImageView实现圆角/圆形 附加OnTouchListener详细注释以及Button圆角

转载请注明出处:王亟亟的大牛之路平时要用一些非方方正正的按钮之类的小伙伴们是如何实现的?RadioButton?ImageButton?还是其他? 今天亟亟上的是ImageView来实现的 先上下效果图(目录结构) 分析:shape.xml用于Button的”倒角”(做过机械类的都懂,哈哈) ...
  • ddwhan0123
  • ddwhan0123
  • 2015-08-11 15:57
  • 4008

Android开源项目——自定义圆形图片组件CircularImageView

项目github地址: 控件功能:可以将任意图片裁剪成圆形,控件的大小可以自定义,可以指定图片中心点和半径,也可以添加圆形边框并设置边框的颜色。 使用方法:和使用其他自定义控件没什么区别,这里只需要使用attr.xml中的属性和CircularImageView类文件即可。 下面我列举几种使...
  • u010852801
  • u010852801
  • 2015-04-13 15:03
  • 2839

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

一、问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的:        二、怎么搞? 机智的我,第一想法就是,切一张中间圆形透明、四周与底色相同、尺寸与头像相同的蒙板图片,盖在头像上不就完事了嘛,哈哈哈!...
  • JavaAndroid730
  • JavaAndroid730
  • 2016-11-12 22:36
  • 10314

【Android】自定义圆形ImageView(圆形头像 可指定大小)

最近在仿手Q的UI,这里面经常要用到的就是圆形头像,看到 在android中画圆形图片的几种办法 这篇文章,了解了制作这种头像的原理.不过里面提供的方法还有一个不足的地方就是不能根据实际需求改变图片的大小,也就是说提供的原图是大尺寸的,转换之后的图片也是大尺寸的,这显然不符合我们...
  • u012560612
  • u012560612
  • 2015-08-16 21:45
  • 5977

Android ImageView圆形头像 图片完全解析

转载http://m.oschina.net/blog/321024 Android ImageView圆形头像 图片完全解析  我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ。用户在用QQ更换头像的时候,上传的图片都是矩形的,但显示的时候确是圆形的。 ...
  • feixiangdexin123087
  • feixiangdexin123087
  • 2014-12-22 10:28
  • 19822

自定义imageview 实现圆角 甚至圆形imageview(并不是将图片变圆角)

最近遇到新需求   不论用户上传什么形状的头像  展示的时候都要显示成圆形  且头像背后是有背景图的   。 于是想到了 将控件变圆  这样可以任意适配了 先上效果图 下图为方形头像 而此处展示为圆形 ...
  • wuhongqi0012
  • wuhongqi0012
  • 2013-12-16 12:45
  • 3106
    个人资料
    • 访问:1383次
    • 积分:55
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论