You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用de.hdodenhof.circleimageview.CircleImageView解析Uri?

如何用CircleImageView加载Uri对应的图片

嘿,其实de.hdodenhof.circleimageview.CircleImageView本质是ImageView的子类,它完全支持ImageView的所有图片加载API,包括直接设置Uri的方法,不需要额外的“解析Uri”操作,直接用就行!下面给你一步步说明:

1. 先确认依赖已添加

首先确保你已经在项目的build.gradle(Module级别)里引入了CircleImageView的依赖:

dependencies {
    implementation 'de.hdodenhof:circleimageview:3.1.0' // 可以替换为最新版本
}

2. 布局里添加CircleImageView

在你的布局XML中定义这个控件:

<de.hdodenhof.circleimageview.CircleImageView
    android:id="@+id/circleImageView"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@drawable/default_avatar" // 设置默认占位图
    app:civ_border_width="2dp" // 可选:设置圆形边框宽度
    app:civ_border_color="@color/white" /> // 可选:设置圆形边框颜色

3. 代码中加载Uri图片

在Activity/Fragment里,获取到目标Uri后,直接调用setImageUri()方法即可:

// 假设你已经通过相册选择、文件路径转换等方式拿到了目标Uri
Uri imageUri = ...; 

CircleImageView circleImageView = findViewById(R.id.circleImageView);
circleImageView.setImageUri(imageUri);

几个要注意的点

  • 权限问题:如果Uri指向本地文件(比如相册图片),Android 6.0及以上需要申请READ_EXTERNAL_STORAGE动态权限,不然会加载失败。
  • Android 7.0+ 文件Uri兼容:如果是自己生成的本地文件Uri,别直接用Uri.fromFile(),得用FileProvider生成Content Uri,避免触发FileUriExposedException。
  • 进阶加载方案:如果需要处理占位图、错误图或缓存,可以配合Glide/Picasso等图片加载库使用,比如:
Glide.with(this)
     .load(imageUri)
     .placeholder(R.drawable.default_avatar)
     .error(R.drawable.error_avatar)
     .into(circleImageView);

举个完整的从相册选图并加载的例子:

// 启动相册选择Intent
Intent pickIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickIntent, 100);

// 在onActivityResult中处理返回的Uri(AndroidX推荐用ActivityResultContracts)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 100 && resultCode == RESULT_OK && data != null) {
        Uri selectedImageUri = data.getData();
        CircleImageView civ = findViewById(R.id.circleImageView);
        civ.setImageUri(selectedImageUri);
    }
}

内容的提问来源于stack exchange,提问作者neil tan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:57:37