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

setAutoFullWithSize 无效 版本 7.1.5 #2880

Closed
WuShengXi opened this issue Aug 4, 2020 · 17 comments
Closed

setAutoFullWithSize 无效 版本 7.1.5 #2880

WuShengXi opened this issue Aug 4, 2020 · 17 comments

Comments

@WuShengXi
Copy link

    mBind.gsyVideo.setAutoFullWithSize(true);
    mBind.gsyVideo.setIsTouchWiget(false);
    mBind.gsyVideo.setRotateViewAuto(true);
    mBind.gsyVideo.setReleaseWhenLossAudio(false);
    mBind.gsyVideo.setShowFullAnimation(true);

// mBind.gsyVideo.setNeedLockFull(false);
mBind.gsyVideo.setPlayPosition(position);
mBind.gsyVideo.getFullscreenButton().setOnClickListener(v -> mBind.gsyVideo.startWindowFullscreen(itemView.getContext(), false, true));

在列表中使用

@WuShengXi
Copy link
Author

切换到6.0.1版本就可以用了。。

@CarGuo
Copy link
Owner

CarGuo commented Aug 4, 2020

e1952f1

测试正常,7.1.5

@fouceproblem
Copy link

@CarGuo @WuShengXi GSYBaseVideoPlayer 中的resolveFullVideoShow方法中isLockLand变量,赋值反了。isLockLandByAutoFullSize这个方法中isVerticalVideo()应该为false的时候isLockLand才能为true才对,现在是直接用isVerticalVideo()方法值赋值了。那就意味着视频为竖屏视频才会锁定横屏。 可以用setAutoFullWithSize(false)暂时规避那个判断

@CarGuo
Copy link
Owner

CarGuo commented Aug 4, 2020

@fouceproblem 我在 7.1.5 中 DetailPlayer 和 ListVideoActivity 测试正常呀?有什么问题??

LockLand 和 AutoFullSize 是冲突的属性来着

@fouceproblem
Copy link

@CarGuo setAutoFullWithSize(true)的时候,不是根据视频本身是否横竖屏来确定切换全屏的时候视频横竖屏展示的么?我看现在判断是竖屏的时候才横屏展示

@CarGuo
Copy link
Owner

CarGuo commented Aug 4, 2020

@fouceproblem 你可以试试最新的 demo 里的 ListVideoActivity ,竖屏的视频全屏时竖屏,横屏的视频全屏时横屏

@g19980115
Copy link

g19980115 commented Aug 13, 2020

我也是升级版本后发现不能自动横竖屏了,始终是竖屏,之前7.1.3是好的,把那个isVerticalVideo的值反一下就好了,能自动横屏或者竖屏全屏了。

protected boolean isLockLandByAutoFullSize() {
    boolean isLockLand = mLockLand;
    if (isAutoFullWithSize()) {
        isLockLand = ! isVerticalVideo();//取非
    }
    return isLockLand;
}

@CarGuo @WuShengXi GSYBaseVideoPlayer 中的resolveFullVideoShow方法中isLockLand变量,赋值反了。isLockLandByAutoFullSize这个方法中isVerticalVideo()应该为false的时候isLockLand才能为true才对,现在是直接用isVerticalVideo()方法值赋值了。那就意味着视频为竖屏视频才会锁定横屏。 可以用setAutoFullWithSize(false)暂时规避那个判断

@CarGuo
Copy link
Owner

CarGuo commented Aug 13, 2020

@g19980115 意思是 lockLand 和 AutoFullSize 冲突了?

@g19980115
Copy link

可能是吧,我看到demo里面有手动控制orientationUtils,可能因为这才没出现问题,我们是直接调用startWindowFullscreen,外部没有使用orientationUtils。

@g19980115 意思是 lockLand 和 AutoFullSize 冲突了?

@CarGuo
Copy link
Owner

CarGuo commented Aug 13, 2020

@g19980115 我这边测试 demo 是现在这样的设置才是对的~~,在 detailPlayer 或者 List 里面,因为如果是 isVerticalVideo 的话,不应该 LockLand

@g19980115
Copy link

g19980115 commented Aug 13, 2020

但是这两处代码就有冲突了:
GSYBaseVideoPlayer.java,line:518

protected boolean isLockLandByAutoFullSize() {
    boolean isLockLand = mLockLand;
    if (isAutoFullWithSize()) {
        isLockLand = isVerticalVideo();//原始代码此处 视频为横屏时会返回false
    }
    return isLockLand;
}

横屏视频,isLockLand得到的值是false,无法走下面这个if,就不会触发旋转到横屏的操作
GSYBaseVideoPlayer.java,line:338

if (!isVertical && isLockLand && mOrientationUtils != null) {
    mOrientationUtils.resolveByClick();
}

@CarGuo
Copy link
Owner

CarGuo commented Aug 13, 2020

嗯嗯,明白了,因为 demo 里其他地方用了 orientationUtils

@Moster1h
Copy link

Moster1h commented Nov 4, 2020

从7.1.5开始setAutoFullWithSize就失效了,不根据视频尺寸判断是否横向全屏还是竖向全屏.

@CarGuo
Copy link
Owner

CarGuo commented Nov 4, 2020

@Moster1h 参考 demo 可以正常使用,你可以试试demo

@g19980115
Copy link

@Moster1h 参考 demo 可以正常使用,你可以试试demo

@CarGuo 源码确实反了,demo正常使用是因为外部又使用orientationUtils手动控制了下横屏。最简单的方法就是源码那里取反一下就好了,修改后外部都不需要使用orientationUtils了

@CarGuo
Copy link
Owner

CarGuo commented Nov 4, 2020

@g19980115 我知道,那是我故意改的,因为我希望是在外部处理的

@Moster1h
Copy link

Moster1h commented Nov 4, 2020

@g19980115 我知道,那是我故意改的,因为我希望是在外部处理的

那对从旧版本升级到最新版本就不友好了.我还得在自己的代码中添加下面的代码.
释放的时候Anr的问题有考虑修复吗? @CarGuo

protected boolean isLockLandByAutoFullSize() {
    boolean isLockLand = mLockLand;
    if (isAutoFullWithSize()) {
        isLockLand = ! isVerticalVideo();//取非
    }
    return isLockLand;
}

@CarGuo CarGuo closed this as completed Dec 27, 2021
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

5 participants