关于mediaController位置调整的有关问题

关于mediaController位置调整的问题

这里写图片描述

  最近一直在研究VideoView的问题,因为视频只占view的一小部分,想要把mediaController调整到视频上而不是在视频的外部,一直自己在那里尝试设置更重布局和对齐效果,但是没有结果,总是达不到想要的效果。
  研究了vidoview的源码,思路清晰了很多,发现videoView的setmediaController的方法调用了attacheMediaController的方法对mediacontroller进行了控制条的添加,再调用setAnchorView的方法,而且控制条现实的时候有一个show函数。
  我能想到两种方法:一个是就是重新定义一个自己的进度条,自由定义进度条的位置;另一个就是获取状态栏的高度、ToolBar的高度、VideoView的高度、屏幕的高度,算出
  系统进度条弹出框离底部的高度=屏幕的高度-状态栏的高度-ToolBar的高度-VideoView的高度。
  本人开发Android半年多,还有些嫩,可能还有其他办法,希望大牛们多提意见。
  这是我个人的解决办法,记录下来。
  ####特别注意:这样处理有个弊端,就是在进度条弹出时,下面的ViewPager没有焦点,被进度条覆盖,当进度条3秒之后消失时,Viewpager即可点击,正在研究咋样解决……
  

首先获取状态栏的高度:
//状态栏的高度
        int statusBarHeight = getStatusBarHeight();
        /**
     * 获得状态栏的高度
     *
     * @param
     * @return
     */
    public int getStatusBarHeight() {
        int result = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }
其次获取ToolBar的高度:
int toolBar = toolbar.getHeight();
再获取VideoView的高度:
int videoViewheight = videoView.getHeight();
再获取屏幕的高度
//获取屏幕的高度
        int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
最后设置mediaControler的位置:
mediaControler.setPadding(0, 0, 0, screenHeight - toolBar - videoViewheight - statusBarHeight);

即可实现进度条和视频在同一界面的需求。
最后得到一些心得,还是多看Android源码,每看一次,都受益多多。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: MediaController是Android中的一个媒体控制器类,可以用于控制视频播放器的播放、暂停等操作。要实现播放下一个视频的功能,可以按照以下步骤进行: 1. 首先,需要获得当前正在播放的视频的信息,包括视频的URL或本地路径等。可以通过调用MediaPlayer的getCurrentPosition()方法获取当前视频的播放位置,并结合视频列表的索引来确定下一个视频位置。 2. 接下来,需要根据下一个视频位置,更新播放器的资源。可以通过调用MediaPlayer的setDataSource()方法,传入下一个视频的URL或本地路径来更新媒体资源。 3. 然后,重新准备播放器以加载下一个视频。可以调用MediaPlayer的prepare()方法来准备播放器。 4. 最后,启动媒体控制器来播放下一个视频。可以调用MediaController的start()方法来开始播放。 需要注意的是,以上步骤仅适用于使用MediaPlayer和MediaController进行视频播放的情况。如果使用其他视频播放库或自定义实现视频播放器,可能需要针对具体的实现进行相应的调整。 此外,为了良好的用户体验,还可以在切换视频时增加过渡效果,例如淡入淡出效果或切换动画等,以避免突兀的切换。这可以通过使用动画效果或过渡动画来实现。 总之,通过获取当前视频信息、更新媒体资源、重新准备播放器和启动媒体控制器,即可实现MediaController播放下一个视频的功能。 ### 回答2: 要让MediaController实现播放下一个视频,可以采取以下步骤: 1. 首先,确认MediaController已经与MediaPlayer或其他视频播放组件(如VideoView)关联。这可以通过调用setMediaPlayer()或setAnchorView()方法来实现。 2. 接下来,需要获取视频列表或播放队列,以确保有可用的下一个视频。可以通过创建一个包含视频URL或其他ID的列表来实现。如果使用VideoView,可以使用setVideoPath()方法设置视频路径。 3. 当需要切换到下一个视频时,可以通过监听MediaController的一些回调方法来触发。其中最常用的是实现MediaController.MediaPlayerControl接口中的onCompletion()方法。当当前视频播放完成时,onCompletion()方法将被调用。在这个方法中,可以执行逻辑来切换到下一个视频。 4. 在onCompletion()方法中,可以使用MediaPlayer或VideoView的相关方法来进行切换。比如,可以使用setVideoURI()方法设置下一个视频的URI,然后调用start()方法来开始播放下一个视频。 需要注意的是,实现这个功能也取决于所使用的视频播放组件和播放库的特定实现。在一些情况下,可能需要使用其他的方法或回调来实现播放下一个视频的功能。因此,具体实现步骤可能会因播放器库的不同而有所变化。 ### 回答3: 要使用MediaController播放下一个视频,您可以按照以下步骤进行操作: 1. 首先,确保您已经初始化了MediaPlayer对象,并且已经设置了正确的数据源和准备完成的监听器。 2. 创建一个MediaController对象,并将其与MediaPlayer对象进行绑定。这可以通过调用MediaPlayer对象的setMediaController()方法实现。 3. 在MediaController中,您可以添加一个监听器来监听下一个按钮的点击事件。例如,您可以使用setPrevNextListeners()方法来设置这个监听器。 4. 在监听器中,当下一个按钮被点击时,您可以调用MediaPlayer对象的seekTo()方法将播放位置设置为0,即播放下一个视频。例如,您可以使用seekTo()方法来实现这一功能。 5. 最后,调用MediaController对象的show()方法来显示控制器,以便用户可以看到和操作它。 通过这些步骤,您就可以使用MediaController播放下一个视频了。当用户点击下一个按钮时,视频播放器将播放列表中的下一个视频

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值