Android CircleImageView開源控制元件
阿新 • • 發佈:2018-12-28
CircleImageView:一個圓形的ImageView,可以繪製邊框寬度和顏色
官方說明:
Gradle
dependencies {
...
implementation 'de.hdodenhof:circleimageview:2.2.0'
}
Usage
<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"/>
Limitations
- The ScaleType is always CENTER_CROP and you'll get an exception if you try to change it. This is (currently) by design as it's perfectly fine for profile images.
- Enabling
adjustViewBounds
is not supported as this requires an unsupported ScaleType - If you use an image loading library like Picasso or Glide, you need to disable their fade animations to avoid messed up images. For Picasso use the
noFade()
dontAnimate()
. If you want to keep the fadeIn animation, you have to fetch the image into aTarget
and apply a custom animation yourself when receiving theBitmap
. - Using a
TransitionDrawable
withCircleImageView
doesn't work properly and leads to messed up images.
FAQ
How can I use a VectorDrawable
with CircleImageView
?
Short answer: you shouldn't. Using a VectorDrawable
with CircleImageView
is very inefficient. You should modify your vectors to be in a circular shape and use them with a regular ImageView instead.
Why doesn't CircleImageView
extend AppCompatImageView
?
Extending AppCompatImageView
would require adding a runtime dependency for the support library without any real benefit.
How can I add a selector (e.g. ripple effect) bound to a circle?
There's currently no direct support for a circle bound selector but you can follow these steps to implement it yourself.
How can I add a gap between image and border?
Adding a gap is also not support directly but there's a workaround.