拖拽——拖动进度条显示进度

拖拽——拖动进度条显示进度

拖动进度条代码

 

<!doctype html>
<html>
<head>
   <script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function (e) {
            //设置最大值
            ScrollBar.maxValue = 30;
            //初始化
            ScrollBar.Initialize();
        });
        var ScrollBar = {
            value: 10,
            maxValue: 30,
            step: 1,
            currentX: 0,
            Initialize: function () {
                if (this.value > this.maxValue) {
                    alert("给定当前值大于了最大值");
                    return;
                }
                this.GetValue();
                $("#scroll_Track").css("width", this.currentX + 2 + "px");
                $("#scroll_Thumb").css("margin-left", this.currentX + "px");
                this.Value();
                $("#scrollBarTxt").html(ScrollBar.value + "/" + ScrollBar.maxValue);
            },
            Value: function () {
                var valite = false;
                var currentValue;
               
                $("#scrollBar").mousedown(function () {
                    valite = true;
                    $(document).mousemove(function (e) {
                        var event = e || window.event;
                        
                        if (valite == false) return;
                        
                        currentValue = event.clientX - $('#scrollBar').offset().left ;
                        
                        $("#scroll_Thumb").css("margin-left", currentValue + "px");
                        $("#scroll_Track").css("width", currentValue + 2 + "px");
                        //超出限制
                        if ((currentValue + 25) >= $("#scrollBar").width()) {
                            $("#scroll_Thumb").css("margin-left", $("#scrollBar").width() - 25 + "px");
                            $("#scroll_Track").css("width", $("#scrollBar").width() + 2 + "px");
                            ScrollBar.value = ScrollBar.maxValue;
                        } else if (currentValue <= 0) {
                            $("#scroll_Thumb").css("margin-left", "0px");
                            $("#scroll_Track").css("width", "0px");
                        } else {
                            ScrollBar.value = parseInt(currentValue*30 / $("#scrollBar").width());
                        }
                        $("#scrollBarTxt").html(ScrollBar.value + "/" + ScrollBar.maxValue);
                    });
                });
                $(document).mouseup(function () {
                    
                    $(this).unbind('mousedown');
                    $(this).unbind('mousemove');
                });
            },
            GetValue: function () {
                this.currentX = $("#scrollBar").width() * (this.value / this.maxValue);
            }
        }
    </script>
<style type="text/css">
body{
    user-select: none;
    -o-user-select: none;
    -ms-user-select: none;
    -moz-user-select: none;
}
#Main {
    width: 70%;
    height: 300px;
    margin: 0 auto;
    margin-top: 10px;
}
#scrollBar {
    width: 80%;
    height: 10px;
    background-color: #ccc;
    margin: 0 auto;
    margin-top: 50px;
    -webkit-border-radius: 2em;
    -moz-border-radius: 2em;
    border-radius: 2em;
    cursor: pointer;
}
#scroll_Track {
    width: 0px;
    height: 10px;
    background-color: #ff4400;
    -webkit-border-radius: 2em;
    -moz-border-radius: 2em;
    border-radius: 2em;
}
#scroll_Thumb {
    height: 25px;
    width: 25px;
    background-color: #efefef;
    -webkit-border-radius: 2em;
    -moz-border-radius: 2em;
    border-radius: 2em;
    border: 1px solid #ccc;
    -webkit-box-shadow: 0px 0px 5px #ccc;
    -moz-box-shadow: 0px 0px 5px #ccc;
    box-shadow: 0px 0px 5px #ccc;
    position: absolute;
    margin-top: -18px;
    cursor: pointer;
}
#scroll_Thumb:hover {
    background-color: #ff4400;
    border: 1px solid #fff;
}
.progressTime {
            filter: alpha(opacity=50);
            -moz-opacity: 0.5;
            -khtml-opacity: 0.5;
            opacity: 0.5;
            position: absolute;
            _position: fixed;
            left: 25%;
            top:25%;
            Z-INDEX: 2;
            border: 1px solid gray;
            -moz-border-radius: 5px;
            -webkit-border-radius: 5px;
            border-radius: 5px;
            color: white;
            background: #000;
            width: 660px;
            height:200px;
            padding-top: 0px;
            padding-bottom: 0px;
        }
</style>
</head>
<body>

    <div id="Demo" class="progressTime" >
        <div id="Main">
          <div id="scrollBar">
            <div id="scroll_Track"></div>
            <div id="scroll_Thumb"></div>
          </div>
          <p id="scrollBarTxt" style="text-align:center;"></p>
    </div>

</body>

</html>
View Code

 

效果图

结论

这段代码只是实现了效果 ,可维护性不是那么高。 但是通过这个无意中解决了一个bug:鼠标抬起解绑mousemove、mousedown事件,然后鼠标抬起还是会拖动。不知道怎么解决,我给body加了一个user-select:none;之后这个bug没了!

posted @ 2017-03-02 14:16 _只鱼 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Android MP3播放器的实现,同时使用Seekbar控件来显示播放进度。 在layout文件中添加一个SeekBar控件: ```xml <SeekBar android:id="@+id/seekBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:max="100" android:progress="0" /> ``` 然后在Activity中实现MP3播放器的控制和进度条更新: ```java public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener { private MediaPlayer mediaPlayer; private SeekBar seekBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mediaPlayer = MediaPlayer.create(this, R.raw.music); mediaPlayer.setOnCompletionListener(this); seekBar = findViewById(R.id.seekBar); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { mediaPlayer.seekTo(progress * mediaPlayer.getDuration() / 100); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } public void play(View view) { if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); seekBar.setMax(mediaPlayer.getDuration()); new Thread(new Runnable() { @Override public void run() { while (mediaPlayer.isPlaying()) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } runOnUiThread(new Runnable() { @Override public void run() { seekBar.setProgress(mediaPlayer.getCurrentPosition()); } }); } } }).start(); } } public void pause(View view) { if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } public void stop(View view) { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); mediaPlayer = MediaPlayer.create(this, R.raw.music); mediaPlayer.setOnCompletionListener(this); seekBar.setProgress(0); } } @Override public void onCompletion(MediaPlayer mp) { mediaPlayer = MediaPlayer.create(this, R.raw.music); mediaPlayer.setOnCompletionListener(this); seekBar.setProgress(0); } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } } ``` 在这个例子中,我们首先在onCreate()方法中创建MediaPlayer对象,并设置OnCompletionListener监听器,以便在播放完成时重新创建MediaPlayer对象。 然后在play()方法中调用MediaPlayer的start()方法开始播放MP3,并启动一个新的线程来更新SeekBar的进度条。在SeekBar的OnSeekBarChangeListener监听器中,我们实现了当用户拖动SeekBar时,MediaPlayer会跳到相应的位置。 在pause()方法中,我们调用MediaPlayer的pause()方法暂停播放,而在stop()方法中,我们调用MediaPlayer的stop()方法停止播放,并在播放完成时调用OnCompletionListener中的方法重新创建MediaPlayer对象。 最后,在onDestroy()方法中释放MediaPlayer对象的资源。 需要注意的是,在更新SeekBar的进度条时,我们需要使用runOnUiThread方法来更新UI线程中的SeekBar控件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值