老哥,请问这个ShrinkSwipeBackTransformer联动效果的底部Activity边角能做成有点弧度的吗?在曲面屏手机上底部Activity直角有点怪😂
SaltedFish-Extreme opened this issue · comments
咸鱼至尊 commented
WeChat_20230428103728.mp4
咸鱼至尊 commented
QQ的抽屉打开那种联动效果不知道怎么做的,像是那种有弧度的看着就挺舒服的😂
WeChat_20230428104427.mp4
Goweii commented
继承这个transformer,复写里面的方法,给previousView和currentView设置outlineProvider就行。圆角半径从系统获取。
咸鱼至尊 commented
继承这个transformer,复写里面的方法,给previousView和currentView设置outlineProvider就行。圆角半径从系统获取。
老哥,获取不到啊,我用尽了办法还是直角😂我也不知道是不是应该这么写,我设置到application里的
class MySwipeBackTransformer(context: Context) : ShrinkSwipeBackTransformer() {
private var context: Context
init {
this.context = context
}
override fun initialize(currentView: View, previousView: View?) {
currentView.outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, outline: Outline?) {
outline?.setRoundRect(view.left, view.top, view.right, view.bottom, context.deviceCornerRadius())
}
}
previousView?.outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, outline: Outline?) {
outline?.setRoundRect(view.left, view.top, view.right, view.bottom, context.deviceCornerRadius())
}
}
super.initialize(currentView, previousView)
}
}
fun Context.deviceCornerRadius(): Float {
val displayMetrics = DisplayMetrics()
this.getSystemService(Context.WINDOW_SERVICE) as WindowManager
val density = displayMetrics.density
val xdpi = displayMetrics.xdpi
val ydpi = displayMetrics.ydpi
val width = displayMetrics.widthPixels / density
val height = displayMetrics.heightPixels / density
return sqrt(width.toDouble().pow(2.0) + height.toDouble().pow(2.0)).toFloat() / (2 * density)
}
Goweii commented
开启下clipToOutline
Goweii commented
话说你这个圆角获取方法不对呀
咸鱼至尊 commented
话说你这个圆角获取方法不对呀
不会整了,搜不到方法,问chatgpt也都是从activity里获取的,窗口管理器获取尺寸用对角线量的,还有就是安卓11后面才有的api,应该咋获取,老哥能帮忙整个工具类方法吗😂
Goweii commented
31开始官方支持获取屏幕圆角。
低版本可以看下国内ROM厂商的文档,都会有提供对应的获取方法。比如小米的屏幕圆角显示适配说明。
咸鱼至尊 commented
好吧,我想要是官方有方便的方法获取就好了,我没做那些适配😂