0
  • 最佳答案
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(final MediaPlayer mp) {
            // 点击过快可能导致mp未解析完成 故延时
            handler.postDelayed(new Runnable() { // 太快可能黑屏
                @Override
                public void run() {
                    if (mp == null) {
                        JXLog.e("mediaListener onPrepared mp is null ");
                        return;
                    }
                    jxSurface.setPause(false);
                    int vWidth = mp.getVideoWidth();
                    int vHeight = mp.getVideoHeight();
                    // 该LinearLayout的父容器 android:orientation="vertical" 必须
                    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.layoutPlay);
                    int lw = linearLayout.getWidth();
                    int lh = linearLayout.getHeight();
                    float wRatio = (float) vWidth / (float) lw;
                    float hRatio = (float) vHeight / (float) lh;
                    // 选择大的一个进行缩放
                    float ratio = Math.max(wRatio, hRatio);
                    vWidth = (int) Math.ceil((float) vWidth / ratio);
                    vHeight = (int) Math.ceil((float) vHeight / ratio);
                    // 设置surfaceView的布局参数
                    LinearLayout.LayoutParams lp= new LinearLayout.LayoutParams(vWidth, vHeight);
                    lp.gravity = Gravity.CENTER;
                    jxSurface.setLayoutParams(lp);
                    jxSurface.setPlaying(true);
                    mediaPlayer.start();
                }
            },100);
        }
    });
    


    这个我最近的方案 固定宽高 等比缩小 如果是横屏的 会等比缩小成不会被拉伸的状态

    我的是自定义surfaceview videoview限制太多了 有太多什么白边鸭 卡顿啊的bug 还是建议自己写成surfaceview好用点 你的问答我也不太懂 好宽泛哦

    1382711465131241472  评论     打赏       阿肥
    • 发现surfaceview没有铺满有黑边,然后用了surface.getholder().setfixsize,设置比例好了,

      videoview那里没铺满,地下有黑边不管了,也没有看到有公开的方法设置视频比例,layoutparams这个是设置控件,大概就这样,谢谢各位大佬慷慨解答

      1494238633526419458  评论     打赏       阿淳言出必行
      • 阿肥  回复 @阿淳言出必行
        解决了么 我使用surface 是可以铺满的 外层是相对布局 整块用着挺流畅的哈哈哈
        阿肥 2022-07-13 17:12   回复 1382711465131241472
      • 阿淳言出必行  回复 @阿肥
        直接用surface好像是可以铺满,我自定义组合控件外面套了层framelayout,放大framelayout或者在自定义里设置surface铺满都没用,然后用了setfixsize解决了。就有点奇怪
        阿淳言出必行 2022-07-13 18:53   回复 1494238633526419458
    • 你是怎么做到视频不全屏的?你是怎么做到某个尺寸的呢?

      1153952789488054272  评论     打赏       拉大锯
      • 阿淳言出必行  回复 @拉大锯
        就是比如在约束布局用videoview设置了一个默认的宽高,然后再动态的设置铺满
        阿淳言出必行 2022-07-13 15:58   回复 1494238633526419458
      • 阿淳言出必行  回复 @阿淳言出必行
        获取屏幕的宽高设置那样
        阿淳言出必行 2022-07-13 15:58   回复 1494238633526419458
      • 拉大锯  回复 @阿淳言出必行
        你都会说动态修改啦,那你就动态修改控件的宽高不就可以了?必要时修改一下视频的方向.
        拉大锯 2022-07-13 16:01   回复 1153952789488054272
      • 阿淳言出必行  回复 @拉大锯
        就是有点奇怪,因为播放格式原因,我搞了两个播放器作自定义组合控件,继承的是frameLayout,然后给这个自定义组合控件放大的时候,他的子view就是那两个播放器之一就没有铺满
        阿淳言出必行 2022-07-13 16:21   回复 1494238633526419458
      • 拉大锯  回复 @阿淳言出必行
        tools->layout inspector,查看一下布局情况和属性值,看看是什么原因
        拉大锯 2022-07-13 16:22   回复 1153952789488054272
      • 阿淳言出必行  回复 @阿淳言出必行
        两个播放器是指两个框架,用了一个本地的videoview和libvlc
        阿淳言出必行 2022-07-13 16:25   回复 1494238633526419458
      • 阿淳言出必行  回复 @拉大锯
        打赏好像有bug,我明明有一百多个sob笔,它让我检查余额
        阿淳言出必行 2022-07-13 17:10   回复 1494238633526419458
      • 拉大锯  回复 @阿淳言出必行
        哈哈,好。我快下班了,回去看看。
        拉大锯 2022-07-13 17:43   回复 1153952789488054272
      • 拉大锯  回复 @阿淳言出必行
        实际上是打赏成功的了,提示出错了。
        拉大锯 2022-07-13 18:49   回复 1153952789488054272
    相关问题
    _empty · Android
    2019-10-20 23:51 628 2
    application · Android
    2019-11-05 00:26 779 2
    三流废物 · android / 小白
    2019-11-22 00:35 1067 5
    豪豪好嘛 · Android / GPS
    2019-11-26 20:15 884 5
    Jian · android
    2019-11-28 01:51 615 2
    2019-12-01 01:01 705 2
    小陈学编程 · Android
    2019-12-01 19:08 633 2
    fkinggod · Android
    2019-12-08 09:19 661 5
    fkinggod · Android
    2019-12-08 20:47 611 2
    kissmyass · Android
    2019-12-09 07:08 537 2
    独一无二的名zi · Android
    2019-12-30 06:48 415 2