圆角ImageView无法正常显示

时间:2017-05-25 04:58:47

标签: android android-layout android-imageview

我正在尝试制作一个圆形的图像视图,但我得到了一个不正确的输出。我附上照片

Output for Rounded Image View

这些是用于此

的xml文件

circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="1.9"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />

<stroke
    android:width="10dp"
    android:color="@android:color/white" />
</shape>

img.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:drawable="@drawable/circle"/>
<item android:drawable="@drawable/ic_add_photo"/>

</layer-list>

图片视图为:

<ImageView
    android:id="@+id/iv_dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/iv_person"
    android:layout_below="@+id/iv_person"
    android:layout_marginTop="37dp"
    android:adjustViewBounds="true"
    android:background="@drawable/img"
    android:cropToPadding="true" />

3 个答案:

答案 0 :(得分:6)

您可以使用CirlcleImageView库来舍入ImageView

编译此图片

 compile 'de.hdodenhof:circleimageview:2.2.0'

<强>用法

<de.hdodenhof.circleimageview.CircleImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/profile_image"
    android:layout_width="96dp"
    android:layout_height="96dp"
    android:src="@drawable/profile"
    app:civ_border_width="2dp"
    app:civ_border_color="#FF000000"/>

了解更多信息follow this link

答案 1 :(得分:0)

您可以使用外部库,如

dependencies {
    ...
    compile 'de.hdodenhof:circleimageview:2.1.0'
}

<de.hdodenhof.circleimageview.CircleImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/profile_image"
    android:layout_width="96dp"
    android:layout_height="96dp"
    android:src="@drawable/profile"
    app:civ_border_width="2dp"
    app:civ_border_color="#FF000000"/>

或使用自定义

<shape
    android:innerRadius="0dp"
    android:shape="ring"
    android:thicknessRatio="1"
    android:useLevel="false" >

    <solid android:color="@android:color/transparent" />

    <stroke
        android:width="100dp"
        android:color="#FFFFFFFF" />
</shape>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/your_image" />
    <item android:drawable="@drawable/circle" />
</layer-list>

答案 2 :(得分:-1)

试试这个

  you can use 'Glide'

  compile 'com.github.bumptech.glide:glide:3.7.0'

  basically it is a network library but you can also use this for circular imageView and gif it have a very good memory management


  ImageView img=(ImageView)findViewById(R.id.img_test);

   Glide.with(this).load("your image path").asBitmap().placeholder(R.drawable.logo_bk).centerCrop().into(new BitmapImageViewTarget(img) {
        @Override
        protected void setResource(Bitmap resource) {
            RoundedBitmapDrawable circularBitmapDrawable =
                    RoundedBitmapDrawableFactory.create(this.getResources(), resource);
            circularBitmapDrawable.setCircular(true);
            img.setImageDrawable(circularBitmapDrawable);
        }
    });