Android自带的ImageView不够美观,我们有时想让它实现那种圆角矩形的效果,让它看起来好看点,我总结了俩个比较方便的用法。看其它资料都有说可以用shape自定义一个圆角矩形,然后直接把这个xml文件设置成背景就行,不过我的看着怪怪的就没用这个方法了。
一:用CardView
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="10dp">
<ImageView
android:focusable="true"
android:background="@drawable/ssss"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/girl_c"
android:scaleType="centerCrop"/>
</androidx.cardview.widget.CardView>
直接用CardView包裹ImageView就可以了, app:cardCornerRadius="10dp"这个就是圆角的弧度。
二:ViewOutlineProvider
ViewOutlineProvider是Android 5.x引入的新特性,它是View类中的方法,用于实现View的阴影和轮廓,用ViewOutlineProvider可以快捷地实现控件的原件
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main4)
val imageView = findViewById<ImageView>(R.id.imageView)
setRadius(imageView, 20f)
}
fun setRadius(view : View, radius:Float) {
view.run {
outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, outline: Outline) {
// 设置圆角率为
outline.setRoundRect(0, 0, view.width, view.height, radius)
}
}
clipToOutline = true
}
}
你也可以把这个方法弄成工具类,都很方便。