关于视频播放器拖动点击问题

对于播放器大家都不陌生,我在实现播放器下的滑动用的是SeekBar,SeekBar是Android自带的控件,支持滑动,点击主要是他的这个方法:


 


布局文件是这样的实现的:


这就是我用原生的SeekBar实现的,支持点击和拖动但是问题来了,我用SeekBar做了另外一个播放器,用的是ijk实现的播放器,实现代码差不多

private final SeekBar.OnSeekBarChangeListener mSeekListener = new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
                                  boolean fromUser) {
        if (!fromUser)
            return;
        $.id(R.id.view_jky_player_tip_control).gone();// 移动时隐藏掉状态image
        int newPosition = (int) ((duration * progress * 1.0) / 1000);
        String time = generateTime(newPosition);
        if (instantSeeking) {
            videoView.seekTo(newPosition);
        }
        $.id(R.id.app_video_currentTime).text(time);
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        isDragging = true;
        show(3600000);
        handler.removeMessages(MESSAGE_SHOW_PROGRESS);
        if (instantSeeking) {
            audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
        }
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        if (!instantSeeking) {
            videoView
                    .seekTo((int) ((duration * seekBar.getProgress() * 1.0) / 1000));
        }
        show(defaultTimeout);
        handler.removeMessages(MESSAGE_SHOW_PROGRESS);
        audioManager.setStreamMute(AudioManager.STREAM_MUSIC, false);
        isDragging = false;
        handler.sendEmptyMessageDelayed(MESSAGE_SHOW_PROGRESS, 1000);
    }
};



布局文件就有差别了,注意看:


<SeekBar
    android:id="@+id/app_video_seekBar"
    style="@style/SeekBarAppTheme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="3dp"
    android:layout_marginRight="3dp"
    android:layout_toLeftOf="@+id/app_video_endTime"
    android:layout_toRightOf="@+id/app_video_currentTime" />


在这个布局里面有一个很明显的不同,那就是加了style,

<resources>
    <!--播放器进度条的styles-->
    <style name="SeekBarAppTheme">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:focusable">true</item>
        <item name="android:progressDrawable">
            @drawable/jky_player_progressbar
        </item>
        <item name="android:thumb">@drawable/ic_circles</item>
        <item name="android:minHeight">5dip</item>
        <item name="android:maxHeight">5dip</item>
        <item name="android:paddingLeft">5.0dip</item>
        <item name="android:paddingRight">5.0dip</item>
    </style>
    <!-- 播放器进度条end-->

</resources>
一个简单的style,但是加了这个之后当使用播放器是就会发现,下面的进度条只支持拖动不支持点击,那么问题来了,一个很简单的SeekBar为什么会带来这么大的差异,当我换了台手机,发现进度条既可以拖动也可以点击。。。那台不可以点击的手机型号是MX5 系统5.1,当我使用这台手机系统自带的亮度调节我发现了他的亮度调节也是只支持拖动,不支持点击。所以在我认为是个很大的BUG换台手机就解决了。(菜鸟一枚,没找到原因,不知道原因所在,只是记录自己的困惑,望大神指点,谢谢。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章