android 视频置顶悬停,下面等内容可以滑动效果

1、需求:

 页面头部是一个 视频,下面是章节内容和评论内容,要求视频播放时,视频在头部悬浮不能滑动,
 下面的评论内容可以向上滑动, 视频暂停时,视频可以跟着布局一起向上滑动,如图

在这里插入图片描述
网上之前看过类似的需求,也没有太多网友解答 ,详见:android 界面上滑时如何控制视频控件置顶悬浮,但还能保证还能接着播放

2.实现:

2.1 阿里播放器

AliyunVodPlayerView SurfaceView实现,由于 SurfaceView不能支持平移等动画,采用网上提供的StickScrollView粘性布局去实现的时候,闪退了(由于 SurfaceView draw绘制与View的差异 以及 动画的原因,故不支持这种实现方式,普通的布局在悬停时,由于无需考虑视频播放的缘故,采用StickScrollView setTag sticky 的方式足以,视频播放器还是无法支持)

2.2 饺子播放器

此播放器 是TextureView的实现方式,所以 这种情况下,依旧可以使用 StickScrollView

2.4 知识点:Android中TextureView与SurfaceView用法区别总结

2.5 摸索半天,找到了一种实现方式.(CoordinatorLayout与AppBarLayout实现)

参考 : Android滑动到顶部悬停

这种实现方式下,还需要趟浑水,遇到的坑还是有不少的,需要一个一个的填

//重点 : 对于ScrollFlag的设置
app:layout_scrollFlags="scroll"

出现的问题:

1、Android之解决AppBarLayout 下面一道阴影

关于视频横竖屏切换全屏问题

2、全屏设置时 setSystemUiVisibility的理解

以下部分代码为阿里云播放器,结合项目需求所做:

切换时: 动态设置 Video布局的宽高 以及滑动状态,页面全屏控制等等以及自己的业务相关

//横竖屏切换
@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        isChangeScreen=true;
        updatePlayerViewMode();
    }

  private void updatePlayerViewMode() {
        if (mAliyunVodPlayerView != null) {
            int orientation = getResources().getConfiguration().orientation;
            mOrientation=orientation;
            //设置滑动
            if(mOrientation==Configuration.ORIENTATION_PORTRAIT){
                //播放时,视频不能滑动
                setVideoScrollEnabled(mAliyunVodPlayerView.isPlaying() ? false:true);
            }else{
                //切换为横屏,视频不能滑动
                setVideoScrollEnabled(false);
            }
            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                mAliyunVodPlayerView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
                //设置view的布局,宽高之类
//                LinearLayout.LayoutParams aliVcVideoViewLayoutParams = (LinearLayout.LayoutParams) mAliyunVodPlayerView
//                        .getLayoutParams();
                CollapsingToolbarLayout.LayoutParams  aliVcVideoViewLayoutParams= (CollapsingToolbarLayout.LayoutParams) mAliyunVodPlayerView.getLayoutParams();
                aliVcVideoV
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值