问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

安卓imageview控件怎么设置成圆形

发布网友 发布时间:2022-05-20 00:08

我来回答

1个回答

热心网友 时间:2023-10-20 19:40

首先,定义定义圆形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.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 {

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

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

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

@Override
protected void onDraw(Canvas canvas) {

    Drawable drawable = getDrawable();

    if (drawable == null) {
        return;
    }

    if (getWidth() == 0 || getHeight() == 0) {
        return; 
    }
    
    Bitmap 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;
}

}

然后在别的布局文件中使用该控件即可,如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/side_right"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_marginTop="35dip"
        android:orientation="vertical" >

        <<span style="color:#ff0000;">com.founder.reader.view.RoundImageView</span>
            android:id="@+id/right_login_head"
            android:layout_width="60dip"
            android:layout_height="60dip"
            android:scaleType="centerInside"
            android:src="@drawable/user" />

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何挑选紧致眼霜?有哪些品牌推荐? 怎样挑选抗皱眼霜?有哪些值得安利? 什么品牌的眼霜平价好用? 什么牌子眼霜最好用眼霜十大排名 市面上的大牌抗老眼霜该怎么选? ps4十大最耐玩经营类游戏 推荐点好玩的模拟经营类游戏吧 模拟经营类游戏(模拟经营类游戏简称) 谁有模拟经营版的单机游戏 一个小岛的模拟经营的单机游戏 三系油箱容量 服务器主机与PC个人主机有何具体区别? android中如何实现图片成一个圆形排列 android中怎样绘制字符串围绕圆形 安卓圆环锁怎么搞 Android中一圆环图片,圆环上某一圈坐标点算出来,获取图片上的像素值,报错 插花的艺术造诣 插花的艺术风格表现在哪些方面? 什么是插花艺术,插花艺术对生活的影响 口臭是怎样形成的 如何才能去除 用英文描述一张照片是要用过去式吗? 三七花、决明子、山楂片、茶叶能泡水喝吗? 生日蜡烛摆放图案字母gh 昨天我喝的决明子和菊花茶,晚上肚子胀一晚没睡觉,早上起来吐了全身没劲。是不是喝茶的原因? 脂肪肝喝山楂干茶和决明子茶有帮助吗 便秘用决明子长期泡茶喝行吗? 肺结核晚期还能活多久 肺结核治好后寿命和正常人一样吗? 老年人得了肺结核还能活多久?? 肺结核能活多久,解释? 肺结核痊愈后肺钙化影响寿命吗? 肺结核医治好了后,会影响寿命吗 我想进入开发者模式,一直进不去(我点了七次版本号)。我华为p10plus,EMUI8.0 有没有一种安卓手机在下面的home键改成圆按键也亮屏并且上面还有一个触摸的圆环设置键,屏幕上取消两 星星bcd256wv是无氟冰箱吗 星星冰箱怎么样? 星星冰箱风冷显示0.2 度是0度以下吗? win10磁盘优化论遍是什么意思 素描如何画玻璃瓶,体现出透明的感觉 手机丢了找到了那个人不承认怎么办 维和少校军衔竟然是连长 少校连长什么的到底怎么分 手机丢了,我用定位找到了,就是别人,不承认怎么办 职务连长职称少校是什么 丢的华为手机,定位后,拒不承认,侵占报警后警察应如何处理? 连长多是少校还是上尉? 朋友手机被偷了,已经三天了,但是今天定位定到了,是之前一起喝酒的一个人得家.可以报警么不承认怎么办 谁能弄一个完整的光驱拆卸过程,谢谢 蒸包子要用热水还是要用冷水 桥面包蒸包子有放热水烫吗? 蒸包子是冷水放,还是热水放,请指教. oppoA9.如何才能刷回旧系统 哪怕不要数据?