goweii / SwipeBack

Android Activity滑动返回。支持4个方向,支持下层Activity联动和自定义动效。

Home Page:https://github.com/goweii/SwipeBack

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

老哥,请问这个ShrinkSwipeBackTransformer联动效果的底部Activity边角能做成有点弧度的吗?在曲面屏手机上底部Activity直角有点怪😂

SaltedFish-Extreme opened this issue · comments

WeChat_20230428103728.mp4

QQ的抽屉打开那种联动效果不知道怎么做的,像是那种有弧度的看着就挺舒服的😂

WeChat_20230428104427.mp4
commented

继承这个transformer,复写里面的方法,给previousView和currentView设置outlineProvider就行。圆角半径从系统获取。

继承这个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)
}
commented

开启下clipToOutline

commented

话说你这个圆角获取方法不对呀

话说你这个圆角获取方法不对呀

不会整了,搜不到方法,问chatgpt也都是从activity里获取的,窗口管理器获取尺寸用对角线量的,还有就是安卓11后面才有的api,应该咋获取,老哥能帮忙整个工具类方法吗😂

commented

31开始官方支持获取屏幕圆角
低版本可以看下国内ROM厂商的文档,都会有提供对应的获取方法。比如小米的屏幕圆角显示适配说明

好吧,我想要是官方有方便的方法获取就好了,我没做那些适配😂