關於視頻播放器拖動點擊問題

對於播放器大家都不陌生,我在實現播放器下的滑動用的是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換臺手機就解決了。(菜鳥一枚,沒找到原因,不知道原因所在,只是記錄自己的困惑,望大神指點,謝謝。)

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