一、使用Glide加载图片时,图片裁剪为圆角
//glide 圆角设置
val options = RequestOptions()
.optionalTransform(CircleCrop())
.transform(RoundedCorners(dip(20)))
.placeholder(R.mipmap.img_desk_voice_bg)
Glide
.with(this)
.load(picturePath)
.apply(options)
.into(binding.ivBackground)
二、简单的弹出动画
1、在res下创建anim文件夹,弹出及消失动画xml文件如下:
dialog_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:interpolator="@android:anim/decelerate_interpolator">
<!--透明度:表示透明0 到 不透明 1之间 变换-->
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0" >
</alpha>
<!--缩放标签:fromXScale,toXScale表示水平缩放的起始值和结束值;fromYScale,toYScale竖直方向的缩放起始值和结束值。
pivotX,pivotY,表示缩放动画效果的基准点x,y轴
-->
<scale
android:fromXScale="0"
android:fromYScale="0"
android:toXScale="1.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%">
</scale>
<translate
android:fromXDelta="-50%p"
android:toXDelta="0%p"
android:fromYDelta="50%p"
android:toYDelta="0%p"
/>
</set>
dialog_out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:interpolator="@android:anim/decelerate_interpolator">
<!--透明度标签:表示透明0到不透明1之间的变换-->
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0" >
</alpha>
<!--缩放标签:fromXScale,toXScale表示水平缩放的起始值和结束值;fromYScale,toYScale竖直方向的缩放起始值和结束值。
pivotX,pivotY,表示缩放动画效果的基准点x,y轴
-->
<scale
android:fromXScale="1.0"
android:fromYScale="1.0"
android:toXScale="0.4"
android:toYScale="0.4"
android:pivotX="50%"
android:pivotY="50%">
</scale>
</set>
2、使用动画效果时,对应的view的visibility需要为可见状态
/**
* 对话框出现/消失 动画
* @param view View
* @param anim Int
*/
private fun animationInOrOut(view: View, anim: Int) {
val animation =
AnimationUtils.loadAnimation(this@FocusModeActivity, anim).also {
it.duration = 500
it.fillAfter = true
it.setAnimationListener(object : Animation.AnimationListener{
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
//需要清除动画
view.apply {
isVisible = isIn
clearAnimation()
}
}
override fun onAnimationRepeat(animation: Animation?) {
}
})
}
view.startAnimation(animation)
}
//调用时如下
binding.clDialogFinish.isVisible = true
animationInOrOut(binding.clDialogFinish, R.anim.dialog_in)