android圆形图像

在网上找了一下,最简单的是利用canvas的setXfermode,来控制图片重合部分的显示策略。

图片混合时,先画的是dst,后画的是src,各种混合的方式如下,其中圆形是dst,正方形是src:

不过网上的一些做法没有考虑到图片为长方形的情况,下面给出我修正后的做法:

这里我们采用srcin模式,先画透明的圆形即dst,再画原图即src,两个重叠的部分就是我们需要的圆形图了(dstin也可以,就是先画原图,再画透明的圆形)。

就是先判断宽和高中最大max、最小min,只创建半径为min的透明圆,然后画原图时移到中心去,只画一部分。

  public static Bitmap toCircleBitmap(Bitmap bitmap) {

        int min = bitmap.getWidth() > bitmap.getHeight() ? bitmap.getHeight() : bitmap.getWidth();
        int max = bitmap.getWidth() > bitmap.getHeight() ? bitmap.getWidth() : bitmap.getHeight();

        Bitmap output = Bitmap.createBitmap(min, min, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
        Paint paint = new Paint();

        RectF rectF = new RectF(0, 0, min, min);
        canvas.drawOval(rectF, paint);

        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

        if (min == bitmap.getWidth()) {
            canvas.drawBitmap(bitmap, 0, (min - max) / 2, paint);
        } else {
            canvas.drawBitmap(bitmap, (min - max) / 2, 0, paint);
        }
        return output;
    }

对于画圆角,可以用drawRoundRect(rectF, 15, 15, paint);  替代drawOval。

时间: 2024-10-06 16:44:41

android圆形图像的相关文章

Android 圆形/圆角图片的方法

Android 圆形/圆角图片的方法 目前网上有很多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家. 预备知识: Xfermode介绍: 下面是Android ApiDemo里的"Xfermodes"实例,效果图. Xfermode有三个子类,结构如下: view sourceprint? 1.public class 2.Xfermod

Android圆形图片--自定义控件

Android圆形图片控件效果图如下: 代码如下: RoundImageView.java package com.dxd.roundimageview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas

android圆形旋转菜单,并支持移动换位功能

LZ最近接手公司一个项目,需要写一个圆形的旋转菜单,并且支持菜单之间的移动换位,本来以为这种demo应该网上是很多的,想不到度娘也是帮不了我,空有旋转功能但是却不能换位置,所以LZ就只能靠自己摸索了. 最终LZ参考了网上的部分代码,重写了一个自定义的view终于实现了这个看似很吊,却没有实际意义的功能.在此贡献出来给广大码农们共享. 话不多说,先上代码: 自定义view类: public class RoundSpinView extends View { private Paint mPain

Android圆形图片--自己定义控件

Android圆形图片控件效果图例如以下: 代码例如以下: RoundImageView.java package com.dxd.roundimageview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Ca

Android圆形图片自定义控件

Android圆形图片控件效果图如下: 代码如下: RoundImageView.java package com.dxd.roundimageview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas

iOS 裁剪圆形图像并显示(类似于微信头像)

本文主要讲解如何从照片库选择一张照片后将其裁剪成圆形头像并显示,类似于微信头像那种模式. 本文的方法也适用于当时拍照获取的图像,方法类似,所以不再赘述. 本文主要是在iOS 10环境下使用,此时如果要使用使用系统照片库.照相机等功能需要授权,授权方法如下: 右键点击工程目录中的"Info.plist文件-->Open As -->Source Code",打开复制以下你在应用中使用的隐私权限设置(描述自己修改): <key>NSVideoSubscriberAc

Android圆形头像图Circle ImageView

<Android圆形头像图Circle ImageView> 需要处理的原始图(pic): 使用CircleImageView处理后的图(作为头像): 现在很多的应用都有设置头像的功能,如QQ.微信.微博等.头像有标准的四方形,也有圆形(如QQ).现在结合他人的代码加以修改,给出一个以原始图形中心为原点,修剪图片为头像的工具类,此类 可以直接在布局文件中加载使用,比如: <RelativeLayout xmlns:android="http://schemas.android.

【Qt】QLabel实现的圆形图像

本篇只描述圆形图像的两种实现方式,动态阴影边框如下: 目前实现的效果如下: 左右两边实现的方式不同: 右边比较简单 min-width: 100px; max-width: 100px; min-height: 100px; max-height: 100px; border-radius: 50px; border-width: 0 0 0 0; border-image: url(H:/Qt Project/UIDesignTest/Heben.jpg) 0 0 0 0 stretch st

[Android] 给图像添加相框、圆形圆角显示图片、图像合成知识

    前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和添加水印,继续我的"随手拍"项目完成给图片添加相框.圆形圆角显示图片和图像合成的功能介绍.希望文章对大家有所帮助. 一. 打开图片和显示assets文件中图片 首先,对XML中activity_main.xml进行布局,通过使用RelativeLayout相对布局完成(XML代码后面附).然后,在Mainctivity.java中public class MainActivity e