圆形头像

WPF圆形头像显示 不知何时开始,大多数软件的头像采用了圆形头像,使用WPF进行圆形头像显示比较简单,并不是将图像裁剪成圆形头像后显示. 思路是裁剪出一个正方形的头像,然后在显示的时候,只显示正方形中的内切圆部分即可.WPF中的Image类中有一个Clip属性,只需要设置好该属性即可.生成后的效果如下所示: 阅读详情

1、MainActivity

public class MainActivity extends AppCompatActivity {
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

2、布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="com.example.administrator.circleview.MainActivity">

    <widget.CircleView
        android:layout_width="wrap_content"
        android:layout_height="240dp"
        android:layout_gravity="center"
        app:is_round="true" />
</LinearLayout>

3、CircleImageVIew
package widget;


import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;

import com.example.administrator.circleview.R;

/**
 * Created by Administrator on 2016/12/27.
 */

public class CircleView extends View {
    private boolean isRound;
    Paint paint;

    public CircleView(Context context) {
       this(context,null);

    }

    public CircleView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public CircleView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        paint = new Paint();
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundImageView);
        isRound = typedArray.getBoolean(R.styleable.RoundImageView_is_round, true);
    }


    @Override

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

    /**
     * 绘制圆形图片
     *
     * @author
     */
    @Override
    protected void onDraw(Canvas canvas) {
        Bitmap newBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.bg);
        Drawable drawable = new BitmapDrawable(newBitmap);
        // Drawable drawable = getDrawable();
        if (null != drawable) {
            Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
            Bitmap b = getCircleBitmap(bitmap, 14);
            final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());
            final Rect rectDest = new Rect(0, 0, getWidth(), getHeight());
            paint.reset();
            canvas.drawBitmap(b, rectSrc, rectDest, paint);

        } else {
            super.onDraw(canvas);
        }
    }

    /**
     * 获取圆形图片方法
     *
     * @param bitmap
     * @param pixels
     * @return Bitmap
     * @author
     */
    private Bitmap getCircleBitmap(Bitmap bitmap, int pixels) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        final int color = 0xff424242;

        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        int x = bitmap.getWidth();
        int r = bitmap.getWidth() < bitmap.getHeight() ? bitmap.getWidth() /2: bitmap.getHeight()/2;
        canvas.drawCircle(x / 2, bitmap.getHeight() / 2, r/2 , paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
        return output;

    }

}
效果图:
          
总结:
1.获取图片
2.将图片裁剪
3.在OnDraw()中显示

android:ImageView 圆形imageview 圆形头像 曾经自己写了个简单的ImageView,展示圆形的头像,将图片画成成圆形,带边框阴影,一目了然,今天贴出来记录一下 直接copy进项目直接使用,方便修改! package com.cleanmaster.bitmapcache; import android.content.Context; import android.graphics.Bitmap; import android.... 阅读详情

相关推荐

uwp圆形头像以及选取本地图片当作头像

如题所示,实现了选取本地图片,裁剪图片为圆形,当作用户头像的几个功能思路来自于https://blog.youkuaiyun.com/lindexi_gd/article/details/49757187https://blog.youkuaiyun.com/github_36704374/article/details/60334156这两位大大的文章,十分感谢指导简单说一下吧,界面就是一个头像,一个选择图片的按钮&l...

c1518589418的博客 1476

Unity UGUI实现圆形Image

项目要实现圆形头像,用继承Image组件重写部分方法实现圆形头像 并且实现精准点击 实现原理: ①:Image如何绘制到屏幕上 cpu准备顶点数据–>GPU渲染显示,所以显示图片,需要顶点和三角形数据,由顶点组成三角形 三角形组成图形 ②:如何实现 重写 OnPopulateMesh(VertexHelper vh) 方法 ,因为没有真正的圆形,圆形是由n个三角形组成,重新计算要渲染的定点和...

GA博客 4013

【Unity实战100例】用户头像圆形遮罩使用Shader不用Mask组件

前言:我们在使用Unity的自带组件Mask的时候会出现毛边现象很难处理掉,这里我们使用着色器shader来进行处理就不会出现毛边现象。

纯技术流日常开发商业开发记录总结等 1817

Unity Mask制作圆形头像

Unity 制作圆形头像

ms 1799

CircularImage自定义圆形头像,圆形图片

CircularImage自定义圆形头像

Unity用户自定义圆角头像

Unity用户自定义圆角头像

Unity随记(三) 方形头像与圆形头像的切换过度效果

先上效果图 这应该不太陌生的吧,这就是雨松大牛Unity3D研究院里面的头像效果,最开始逛他的文章就发现这个效果有点意思,于是自己动手在Unity里面实现一个类似的效果。 其实关键就两步操作,1.实现图片的圆形裁剪,2.控制图片的旋转 圆形裁剪 要做圆形裁剪,首先想到的就是用Shader来处理了,通过图片的UV值可以明确的知道,裁剪后的圆的圆心处的UV值其实是(0.5,0.5),而左下角的值是(...

Vitens的专栏 2037

Android PackageManagerService 总结(一)应用市场下载安装apk流程

前言: 本篇文章是对系统包安装流程的总结,基于Android12 上 com.android.packageinstaller 源码的分析,第三方应用商城(华为商城,小米商城,应用宝,豌豆荚,酷安等)下载安装应 用,在普通安装和静默安装app两种方式下,对代码流程的梳理和讲解。 触发安装: 当你在商城界面中点击安装按钮,应用会自动下载,下载完成后就会调起系统安装应用的界面,此种触发方式一般是通过Intent 隐式调用的,我们先阅读如下代码: ......

u012514113的专栏 1万+

使用Mask组件制作Unity头像

类似于遮罩,为呈现的图像轮廓添加Mask组件并在其下放子图片,让其呈现出来。

weixin_56166431的博客 1317

【电击防护篇】电击防护技术详解:从人体效应到接地系统全解析

本文系统讲解了电击防护的关键知识,包括电流对人体的影响(如30mA是心室颤动阈值)、人体电阻特性(700Ω-6100Ω)以及电气接触防护措施。重点分析了TT、TN和IT三大接地系统的结构特点与应用场景,强调TN-S系统最安全,IT系统供电连续性最佳。详细介绍了漏电保护器(RCD)的工作原理与选型指南,建议人身防护选用30mA高灵敏度RCD。文章通过对比表总结三大系统的安全性、成本及适用场景,为电气安全设计提供实用参考。

2301_81299416的博客 1742

从零到一:KUKA机械臂与ROS的工业级通讯协议深度解析

本文深度解析KUKA机械臂与ROS的工业级通讯协议,重点对比EKI与RSI两种核心接口的技术特点与应用场景。详细介绍了网络架构设计、数据包解析机制及ROS-I集成方法,并提供实时性能优化与故障排除策略,为工程师实现高可靠性工业自动化集成提供完整解决方案。

2a4s6d8f0g的博客 296

html圆形头像简易实现

html圆形头像简易实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>原型头像样式实现</title> </head> <body> <div class="main"> <div class="myImageDiv"> <d

LavaStrom 2480

一文读懂GPU通信互联技术:GPUDirect、NVLink与RDMA

GPUDirect是NVIDIA开发的一项技术,旨在实现GPU与其他设备(如网络接口卡NIC和存储设备)之间的直接通信和数据传输,而无需CPU的参与。传统上,数据在GPU和另一个设备之间传输时,必须通过CPU,这导致潜在的性能瓶颈和延迟增加。GPUDirect技术则通过绕过CPU,直接访问和传输数据,显著提高系统性能。NVLink是NVIDIA开发的一种高速、高带宽的互连技术,用于连接多个GPU之间或GPU与其他设备(如CPU、内存等)之间的通信。

异构算力老群群(在读985计算机博士生)的技术博客 7773

html之圆形用户头像

实现圆形的用户头像代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>头像圆形化处理</title> <lin...

小小程序猿的博客 5983

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程

本文详细解析了企业微信群机器人的Webhook配置全流程,从创建机器人、获取关键Webhook地址,到使用代码发送文本、Markdown等多种消息类型。内容涵盖安全加固、错误处理及与CI/CD等系统集成的实战指南,帮助企业快速构建高效、稳定的内部通知系统。

ik678901的博客 1782

Unity Hub报错The Hub as encountered a critical error and must close

如果注册表HKEY_LOCAL_MACHINE\SOFTWARE\Unity Technologies\这个目录下有Hub文件,直接删掉然后重装就可以。C:\Users\Administrator\AppData\Roaming\Unity 作者:SevenVee。HKEY_CURRENT_USER\Software\Unity 下所有项,尝试过,卸载重装,清除临时文件无果后,最终决定删除所有与Hub有关的文件。重装unity后可以打开了。结果:卸载重装后还是会出现此问题。结果:重装后还是无法解决。

qq_42345116的博客 3638

Android 设置头像 - 裁剪及圆形头像

通过裁剪和圆形头像的实现更加深入的对ActivityResultLauncher进行了学习,并在实现的过程中对Intent有了更加深入的思考,如果本文内容存在问题欢迎各位大佬进行斧正。总结本文内容。Ucrop工具实现图片裁剪Intent系统默认裁剪实现类intent深入思考Gilde圆形图片的实现。

zyppxx的博客 2313

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1925

Canvas绘制圆形头像

实现代码 <canvas id="canvas" width="500" height="500"></canvas> <script> let Canvas = document.querySelector('#canvas'); let ctx = Canvas.getContext("2d"); // 绘制画布背景 ctx.fillStyle.

彭世瑜的博客 3941

基于高德地图的单车路径规划与绘制实战(Vue3 + TypeScript)【拓展:货车路径规划函数、限行检测、城市 Adcode】

✅ 支持单辆车路径规划✅ 自动绘制路线✅ 起点、终点、途经点标注✅ 自动缩放视野至全路径✅ 获取路线距离、时长、过路费✅ 提供清除功能✅ 路线信息保存至本文完整实现了一个基于高德地图 JS SDK + Vue3 + TypeScript的👉单车路径规划与绘制模块。核心亮点:清晰的结构;灵活的扩展性;实时路线信息记录(🚀 你可以很方便地将本模块集成到车联网、调度监控、地图展示类项目中。❤️ 如果这篇文章对你有帮助,别忘了:评论区交流 💬。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 1264

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

andriod 如何设计圆形头像

如何设计圆形头像 很多时候,我们需要设计类似于头像一样的部分,但是这部分很多时候都是用圆形头像,本篇博客就是讨论如何设计圆形头像 效果图 实现代码 利用widget下的cardview和imageview实现。 整体分为两个部分,先划分总体布局和圆形区域;接着在圆形区域插入目标图片。 注意imageview部分,width和height一定是match_parent,因为是在第一步划分的圆形区域显示的。 <android.support.v7.widget.CardView

weixin_43589465的博客 3481

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

打造微信圆形头像更换

很多都会发现微信的头像不是圆形,而今天我将浅谈一下,如何实现圆形头像。QQ5.0以后的版本就是圆形头像了而微信不是。当然了实现圆形头像的方法有很多种,可以使用开源的库,可以去写一个自定义的控件,或者去使用PS把它扣成一个圆形,但是这个方法显然不可取,不可能每个用户都是上传裁剪过后的圆形头像。那么今天我将讲解一种利用代码来裁剪一个圆形头像。另一方面也是为了让自己以后复习参考方便。       实现

Mikyou的专栏 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android通过xml实现圆形头像

android实现圆形头像的方法有很多种,今天,我就来介绍一下直接通过style,shape来实现圆角头像 实现前: 实现后: 接下来,我们来看看如何实现 在drawable下新建一个xml文件,circle_images.xml,内容如下 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android=...

Hyanl的博客 4843

Android imageview 圆形头像

工作中经常用到圆形头像 有两种解决方法 1.处理bitmap /** * * 头像切成圆形显示 * **/ public Bitmap toRoundBitmap(Bitmap bitmap) { //圆形图片宽高 int width = bitmap.getWidth(); int height = bitmap.getHeight...

仰望星空 1025

圆圈头像制作css,通过CSS3实现圆形头像显示

很久没更新博客了,因为比较菜,也没什么能在上面分享的。作为新手,马上要毕业找工作了,最近又在重新学习web的一些知识,刚刚学到CSS3,跟大家分享一些比较有趣的知识。今天分享的是利用CSS实现圆形头像,其实主要用的属性就是border-radius。方法一:直接将用一个div包裹img。代码如下:CSS设置如下,其重点就是设置border-radius圆角属性为为宽高的一半,然后要在包裹标签的di...

weixin_30866939的博客 5848

android开发之绘制圆形头像

懒惰,只是为了更好的懒惰!

ZaneLove's blog 1513
上一篇: Android开发之自定义圆形的ImageView的实现
下一篇: android studio 使用.9图片
Happy_Develop_
博客等级 码龄12年 26粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值