JiaoZiVideoPlayer黑边以及黑色阴影问题

1、缩略图边缘位置出现黑色阴影

方法:

①将缩略图的scaleType设置为FIT_XY

playerVideo.thumbImageView.setScaleType(ImageView.ScaleType.FIT_XY);

 

② 写一个类,继承JZVideoPlayerStandard,并重写getLayoutId()。该方法常用于自定义布局。

 

 @Override
    public int getLayoutId() {
//        return super.getLayoutId();
        return R.layout.jz_layout_standard2;
    }

注意:原布局"jz_layout_standard"(通过点击super.getLayoutId()可追踪到)中的控件id不能改变,否则会报错。这里我们直接将原布局copy过来修改即可。原布局文件可在工程下的" External Libraries"中找到

JiaoZiVideoPlayer黑边以及黑色阴影问题_第1张图片

 

将文件复制到我们自己的布局layout下并重命名。然后打开文件,将下面的背景修改成透明色,则不会出现黑色阴影了。

JiaoZiVideoPlayer黑边以及黑色阴影问题_第2张图片

 

2、播放时,可能上下或者左右出现黑边。

如图所示,左侧为黑边效果,右边为修正后效果。

JiaoZiVideoPlayer黑边以及黑色阴影问题_第3张图片      JiaoZiVideoPlayer黑边以及黑色阴影问题_第4张图片

原因:视频的高宽比例和屏幕的高宽比例不一致。

方法:github讨论区推荐这两个方法:

 ① 修改容器的宽高,保持16:9比例。

 ② 修改容器内部视频的宽高。参考demo的ActivityApiRotationVideoSize。

但是实践证明,第一种方案不太可行,第二种才可以。具体代码为:

JZVideoPlayer.setVideoImageDisplayType(JZVideoPlayer.VIDEO_IMAGE_DISPLAY_TYPE_FILL_PARENT);//设置容器内播放器高

ps:

    最好将控件宽高保持16:9的比例,否则不太美观。也就是将上面的①②结合一下。

具体代码,如下:

 /**
     * 按16:9设置控件大小
     */
    private void setImageSize() {

        //todo 控件大小
        playerListVideo.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {

                RelativeLayout.LayoutParams params= (RelativeLayout.LayoutParams) playerListVideo.getLayoutParams();
                int width = ViewUtil.getScreenWidth(activity);// -DensityUtils.dp2px(context,14*2)    params.getMarginStart()
                int h=(int)(width*9/16+0.5);//16:9
                params.height=h;
                playerListVideo.setLayoutParams(params);//将设置好的布局参数应用到控件中
                
  
               JZVideoPlayer.setVideoImageDisplayType(JZVideoPlayer.VIDEO_IMAGE_DISPLAY_TYPE_FILL_PARENT);//设置容器内播放器高


            }
        });


    }

3、参考

 

黑边的问题总结

demo中ActivityApiRotationVideoSize源码

原github项目地址(JiaoZiVideoPlayer)

你可能感兴趣的:(Android进阶)