音频/视频进度条

在这里插入图片描述
实现一个简单的进度条,样式写的有点丑。。。
可以根据自己喜好改一下,
下面是源码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>进度条</title>
    <style>
        #box {
            width: 1200px;
            height: 100px;
            position: absolute;
            color: #ffffff;
            background-color: #3F3E3E;
        }
        #bar {
            width: 1200px;
            height: 10px;
            border-radius: 10px;
            background: #ffffff;
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
            cursor: pointer;
        }
        #bar_after{
            width: 0px;
            height: 10px;
            border-radius: 10px;
            background: #1DCB93;
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 320px;
            margin: auto;
            cursor: pointer;
        }
        #dot{
            width: 15px;
            height: 15px;
            background: #1DCB93;
            position: absolute;
            bottom: 0;
            top: 0;
            margin: auto 0;
            border-radius: 50%;
            cursor: pointer;
        }
        #text{
            font-size: 20px;
        }
    </style>
</head>
<body onselectstart="return false">
    <div id="box" >
        <div id="bar">
            <div id="dot"></div>
        </div>
        <div id="bar_after"></div>
        <span id="text">0%</span>
    </div>
    <script>
        var box=document.getElementById("box");//容器
        var bar=document.getElementById("bar");//进度条
        var dot=document.getElementById("dot");//进度圆点
        var bar_after=document.getElementById("bar_after");//圆点之前的进度条
        var text=document.getElementById('text');//进度百分比
        var dotL,newL,moveL,mouseX,left;
        var cha = bar.offsetWidth - dot.offsetWidth; 
        var bar_width=bar.offsetWidth;
        var index=false;//标记状态
        var evt=new Event("change");//本身的事件
        init();
        function init() {
            dot.addEventListener("mousedown",mouseDownclickHandler);
            document.addEventListener("mousemove",mouseMoveclickHandler)
            document.addEventListener("mouseup",mouseUpclickHandler);
            bar.addEventListener("click",clickHandler);
            bar_after.addEventListener("click",clickHandler);
        }
        function mouseDownclickHandler(e) {
            index=true;
            dotL=dot.offsetLeft;
            mouseX=e.clientX; //鼠标按下拖动的位置
        }
        function mouseMoveclickHandler(e) {
            if(index==true){
                moveL=e.clientX-mouseX;//鼠标移动
                newL=dotL+moveL;//left值
                //判断最小值与最大值
                if(newL<0){
                newL = 0;
                }
                if(newL>=bar_width-dot.offsetWidth){
                newL=bar_width-dot.offsetWidth;
                }
                // 改变left值
                bar_after.style.width=(newL+5)+'px';
                bar_after.style.right=(bar_width-newL)+'px';
                dot.style.left = newL + 'px';
                // 计算比例
                bili=parseInt(newL/(bar_width-dot.offsetWidth)*100);
                text.innerText=bili+'%';
            }
        }
        function mouseUpclickHandler(e) {
            index=false;
            evt.elem=this;//当前指向 对象
            document.dispatchEvent(evt);//朝谁发送 抛发
        }
        function clickHandler(e) {
            left = e.clientX-box.offsetLeft-dot.offsetWidth/2;
            if(left<0){
                left=0;
            }
            if(left>=bar_width-dot.offsetWidth){
                left=bar_width-dot.offsetWidth;
            }
            dot.style.left=left+'px';
            bar_after.style.width=(left+5)+'px';
            bar_after.style.right=(bar_width-left)+'px';
            bili=parseInt(left/(bar_width-dot.offsetWidth)*100);
            text.innerText=bili+'%';
        }
    </script>
</body>
</html>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 Android 应用程序,包含了您提到的所有功能: ```java public class MainActivity extends AppCompatActivity { private TextView textView; private EditText editText; private ImageView imageView; private Button button; private ImageButton imageButton; private RadioButton radioButton; private CheckBox checkBox; private ProgressBar progressBar; private ListView listView; private Menu menu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 文本标签 textView = findViewById(R.id.text_view); // 编辑框 editText = findViewById(R.id.edit_text); // 图像 imageView = findViewById(R.id.image_view); // 提示框 Toast.makeText(this, "Hello World!", Toast.LENGTH_SHORT).show(); // 按钮 button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO: 按钮点击事件 } }); // 图像按钮 imageButton = findViewById(R.id.image_button); imageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO: 图像按钮点击事件 } }); // 单选按钮 radioButton = findViewById(R.id.radio_button); radioButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO: 单选按钮点击事件 } }); // 复选按钮 checkBox = findViewById(R.id.check_box); checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO: 复选按钮点击事件 } }); // 进度条 progressBar = findViewById(R.id.progress_bar); // 列表 listView = findViewById(R.id.list_view); // 菜单 getMenuInflater().inflate(R.menu.menu_main, menu); // 对话框 new AlertDialog.Builder(this) .setTitle("提示") .setMessage("确定要删除吗?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO: 确定按钮点击事件 } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO: 取消按钮点击事件 } }) .create() .show(); // 图形 // TODO: 实现图形功能 // 动画 // TODO: 实现动画功能 // 音频(内部) MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.audio); mediaPlayer.start(); // 视频(内部) VideoView videoView = findViewById(R.id.video_view); videoView.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.video); videoView.start(); // 传感器 SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // TODO: 传感器数据处理 } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }, sensor, SensorManager.SENSOR_DELAY_NORMAL); // 通知 NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "channel_id") .setSmallIcon(R.drawable.ic_notification) .setContentTitle("标题") .setContentText("内容") .setPriority(NotificationCompat.PRIORITY_DEFAULT); NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build()); // 简单存储 SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("key", "value"); editor.apply(); // 文件存储(内部) String fileName = "data.txt"; String content = "Hello World!"; FileOutputStream outputStream; try { outputStream = openFileOutput(fileName, Context.MODE_PRIVATE); outputStream.write(content.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } // 数据库存储 SQLiteDatabase database = openOrCreateDatabase("my_database", Context.MODE_PRIVATE, null); database.execSQL("CREATE TABLE IF NOT EXISTS my_table (id INTEGER PRIMARY KEY, name TEXT)"); ContentValues values = new ContentValues(); values.put("name", "张三"); database.insert("my_table", null, values); // WebView WebView webView = findViewById(R.id.web_view); webView.loadUrl("https://www.google.com"); // 第三方类库/自选功能 // TODO: 导入第三方类库,或者实现自选功能 } } ``` 注意:上述代码仅包含示例,具体实现需要根据您的需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值