首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带背景的圆形图像视图

带背景的圆形图像视图
EN

Stack Overflow用户
提问于 2016-07-18 17:12:36
回答 3查看 4.7K关注 0票数 0

这很奇怪,但我非常困惑,因为一个.I需要下载用户资料图片,如下图所示。我有png的外部背景。但我很困惑如何才能做到这一点。如果有人知道更好的和优化的解决方案,请在这里更正。我需要的是,下载的图像将覆盖内白色部分只。

EN

回答 3

Stack Overflow用户

发布于 2016-07-18 17:18:17

与你分享

代码语言:javascript
运行
复制
public class MyCircleImageView extends ImageView {

private  Paint paint;

public MyCircleImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
    paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.RED);
}

@Override
protected void onDraw(Canvas canvas) {

   Drawable drawable = getDrawable();
    if (drawable != null && drawable instanceof BitmapDrawable)
    {
        BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;

        Bitmap bitmap = bitmapDrawable.getBitmap();
        canvas.saveLayer(0,0,getWidth(),getHeight(),null,0);
        int bitmapWidth = bitmap.getWidth();
        int bitmapHeight = bitmap.getHeight();
        int minR = (bitmapHeight<bitmapWidth?bitmapHeight:bitmapWidth)/2;
        canvas.drawCircle(bitmapWidth/2,bitmapHeight/2,minR,paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

 //            canvas.drawBitmap(bitmap,0,0,paint);
        Rect srcRect = new Rect(0,0,bitmapWidth,bitmapHeight);
        Rect dstRect = new Rect(bitmapWidth/2-minR,0,bitmapWidth/2+minR,bitmapHeight);

        canvas.drawBitmap(bitmap,srcRect,dstRect,paint);

        paint.setXfermode(null);

        canvas.restore();

    }else {
        super.onDraw(canvas);
    }
}
}
票数 0
EN

Stack Overflow用户

发布于 2016-07-18 18:37:14

在这里,你需要做两件事: circleimageview +背景(蓝色图像)。

如果你想在所有的设备上都得到最好的效果,那就用蓝色图片设置-background,然后根据设备的不同,给Cirlceimageview设置border_width,这样你就可以得到如上所示的图片视图。

代码语言:javascript
运行
复制
<RelativeLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">
   <de.hdodenhof.circleimageview.CircleImageView
       xmlns:app="http://schemas.android.com/apk/res-auto"
       android:id="@+id/profile_image"
       android:layout_width="wrap_content"
       android:layout_centerInParent="true"
       android:layout_height="wrap_content"
       android:src="@mipmap/profile" //user profile
       android:background="@mipmap/njvkf" //Blue image
       app:civ_border_width="4dp"
       app:civ_border_color="#31A1DA"/>
      </RelativeLayout>

添加Cirlceimageview类you can see result of above code snippet

代码语言:javascript
运行
复制
dependencies {
        compile 'de.hdodenhof:circleimageview:2.1.0'
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-02 16:24:20

您可以使用:app:civ_fill_color

代码语言:javascript
运行
复制
<de.hdodenhof.circleimageview.CircleImageView
    android:id="@+id/v_image"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginEnd="8dp"
    app:civ_fill_color="@color/"
    android:src="@drawable/car" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38432779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档