Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

横屏侧滑侧边没有动画效果 #12

Closed
czhah opened this issue Apr 22, 2020 · 5 comments
Closed

横屏侧滑侧边没有动画效果 #12

czhah opened this issue Apr 22, 2020 · 5 comments

Comments

@czhah
Copy link

czhah commented Apr 22, 2020

No description provided.

@ParfoisMeng
Copy link
Owner

实测,有动画效果。
但是因为代码中IconView默认宽高是根据屏幕比例来的,所以效果很不好看(下图)。我会改一下这个问题,把默认宽高改成固定dp值吧。
Screenshot_20200422_144952_com parfoismeng slideback

@ParfoisMeng
Copy link
Owner

检查代码的过程中发现的确有问题:
当设备为刘海屏手机时,左横屏时刘海部分会变黑不显示任何内容,但是该区域仍然占据屏幕空间,导致event.getRawX()不从 0 开始,侧边侧滑的响应判断出问题。


Bugfix 核心代码如下(SlideBackManager Line 211~221):

                    case MotionEvent.ACTION_DOWN: // 按下
                        // 更新按下点的X轴坐标
                        downX = event.getRawX();

                        // 检验是否从边缘开始滑动,区分左右
                        if (isAllowEdgeLeft && downX <= sideSlideLength + (isLandscapeLeft() ? notchSize : 0)) {
                            isSideSlideLeft = true;
                        } else if (isAllowEdgeRight && downX >= screenWidth - sideSlideLength - (isLandscapeLeft() ? navBarSize : (isLandscapeRight() ? notchSize + navBarSize : 0))) {
                            isSideSlideRight = true;
                        }
                        break;

此 Bugfix 代码不具通用型,没有判断是否刘海屏设备,没有获取刘海部分高度和屏内导航高度,若都做了又会影响性能(可能),所以并没有 merge。如果实在有需要可以使用以下分支依赖:

implementation 'com.github.ParfoisMeng:SlideBack:bugfix~notch_landscape-SNAPSHOT' 

  • 当设置右侧侧滑响应,且设备有屏内导航,会出现IconView被屏内导航盖住的情况。因为右侧侧滑响应的实现方式问题,此问题暂时不易解决。

@czhah
Copy link
Author

czhah commented Apr 28, 2020

经过测试,发现是底部导航栏给挡住了,如果把右侧滑动的View平移底部导航栏高度的距离,则可以看到右侧滑动响应;另外建议不要用downX和downY来处理移动距离,不然会出现上述的变形,且横屏带滑动控件会无法响应,用MotionEvent.getX()和MotionEvent.getY()可解决

@czhah
Copy link
Author

czhah commented Apr 28, 2020

使用getX()和getY()的方式来替代getRawX()和getRawY()处理变形
b

@ParfoisMeng
Copy link
Owner

在理。
之前用的是 getRawX,思路有点没转弯。。没想到这一层。。。蟹蟹提醒。
另外新版更换了 AndroidXKotlin,并且移除了右侧侧滑,可以酌情考虑升级。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants