登录 立即注册
安币:

查看: 264|回复: 3

Android 播放视频常见问题小结,android常见问题

[复制链接]

475

主题

929

帖子

5809

安币

手工艺人

发表于 2017-11-7 11:27:12 | 显示全部楼层 |阅读模式

        在android 开发中常见到视频播放的问题,在常规的视频中 有直接用videoview + mediacontroller 或者 mediacontroller + serfercie holder

        常见的问题

        1 在播放中如何处理播放器的横屏切换 和 播放器上的文案显示的布局变化

        在activity 中 设置

[Java] 查看源文件 复制代码
 android:configchanges="orientation|screensize"

        这样在旋转中,activity 就不会重建

        重写系统方法

[Java] 查看源文件 复制代码
public void onconfigurationchanged(configuration newconfig) {
    // todo auto-generated method stub
    super.onconfigurationchanged(newconfig);
    if (newconfig.orientation == configuration.orientation_landscape) {
      initvideolandlayout();
    } else {
      initvideoportlayout();
    }
  }

        通过 判断 newconfig.orientation 来判断 当前是横屏还是竖屏, 这个是在看视频的过程中去判断是不是横屏还是竖屏,在我门一开始播放视频的时候,也可以去判断,具体的处理方法是

[Java] 查看源文件 复制代码
 private void initvideoplayerlayout() {
    displaymetrics dm = new displaymetrics();
    getwindowmanager().getdefaultdisplay().getmetrics(dm);
    width = dm.widthpixels;
    heigh = dm.heightpixels;
    if (width / heigh > 0) { // 横屏
      initvideolandlayout();
      fullscreen = true;
    }
    if (width / heigh == 0) { //竖屏
      initvideoportlayout();
    }
  }

        在具体变化播放器上的布局的时候我们可以动态的去更换

[Java] 查看源文件 复制代码
 private void initvideoportlayout() {
    relativelayout.layoutparams videolp = new relativelayout.layoutparams(relativelayout.layoutparams.match_parent, relativelayout.layoutparams.match_parent);
    videolp.addrule(relativelayout.center_in_parent);
    videoview.setlayoutparams(videolp);
    videoview.start();
    relativelayout.layoutparams hotelinfolp = new relativelayout.layoutparams(deviceinfoutil.getpixelfromdip(200), deviceinfoutil.getpixelfromdip(55));
    hotelinfolp.addrule(relativelayout.align_parent_bottom);
    hotelinfolp.addrule(relativelayout.align_parent_right);
    hotelinfolp.rightmargin = deviceinfoutil.getpixelfromdip(8);
    hotelinfolp.bottommargin = deviceinfoutil.getpixelfromdip(90);
    mhotelinfolayout.setlayoutparams(hotelinfolp);
  }

        这是竖屏处理

[Java] 查看源文件 复制代码
private void initvideolandlayout() {
    relativelayout.layoutparams layoutparams =
        new relativelayout.layoutparams(relativelayout.layoutparams.fill_parent, relativelayout.layoutparams.fill_parent);
    layoutparams.addrule(relativelayout.align_parent_top);
    layoutparams.addrule(relativelayout.align_parent_left);
    layoutparams.addrule(relativelayout.align_parent_right);
    videoview.setlayoutparams(layoutparams);
    relativelayout.layoutparams hotelinfolp = new relativelayout.layoutparams(deviceinfoutil.getpixelfromdip(200), deviceinfoutil.getpixelfromdip(55));
    hotelinfolp.addrule(relativelayout.align_parent_right);
    hotelinfolp.addrule(relativelayout.align_parent_bottom);
    hotelinfolp.rightmargin = deviceinfoutil.getpixelfromdip(8);
    hotelinfolp.bottommargin = deviceinfoutil.getpixelfromdip(95);
    mhotelinfolayout.setlayoutparams(hotelinfolp);
  }

        这是横屏处理

        我门知道 系统的videoview 控件 自带有播放,暂停 等进度条这是mediacontronller 当我们手点击的时候 进度条会显示,手离开界面的时候,会不显示,这是videoview 中的方法

[Java] 查看源文件 复制代码
 @override
  public boolean ontouchevent(motionevent ev) {
    if (isinplaybackstate() && mmediacontroller != null) {
      togglemediacontrolsvisiblity();
    }
    return false;
  }

        再朝下看

[Java] 查看源文件 复制代码
private void togglemediacontrolsvisiblity() {
    if (mmediacontroller.isshowing()) {
      mmediacontroller.hide();
    } else {
      mmediacontroller.show();
    }
  }

        最终调的是 mmediacontroller.hide(); 和 mmediacontroller.show(),

        所以我门在自己的播放器界面要是实现自己的布局和播放器进度条 重写hide() 和 show() 方法即可


0

主题

9630

帖子

1619

安币

Android大神

IT

Rank: 6Rank: 6

发表于 2017-11-8 06:38:32 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~

92

主题

9394

帖子

1994

安币

Android大神

Rank: 6Rank: 6

发表于 2017-11-9 09:33:29 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!

0

主题

9111

帖子

2412

安币

Android大神

Rank: 6Rank: 6

发表于 2017-11-10 13:01:59 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表