当前位置: 首页 > article >正文

Android 开发 调节声音 SeekBar自定义样式

  • 效果图
    在这里插入图片描述

  • xml布局 @mipmap/seekbar图片随意一张图都可以,这里我的图就不贴出来了

				 <SeekBar
                    android:id="@+id/seekBar"
                    android:layout_marginLeft="8dp"
                    android:layout_width="377dp"
                    android:layout_height="8dp"
                    android:layout_gravity="center"
                    android:layout_centerHorizontal="true"
                    android:progressDrawable="@drawable/seek_bar_voice_bg"
                    android:thumb="@mipmap/seekbar" />
  • seek_bar_voice_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <solid android:color="#D4E3F4" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="#D4E3F4" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <solid android:color="#0A68F5" />
            </shape>
        </clip>
    </item>
</layer-list>
  • 逻辑实现
 SeekBar seekBar=findViewById(R.id.seekBar);
 AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
        //获取系统最大音量
        int maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        seekBar.setMax(maxVolume);
        //获取当前音量
        int currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
        seekBar.setProgress(currentVolume);

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {//滑动时候调用
                if(fromUser){
                    //设置系统音量
                    am.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
                    int currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
                    seekBar.setProgress(currentVolume);
                }
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {//摁下的时候调用
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {//松开的时候调用
            }
        });

http://www.kler.cn/news/366495.html

相关文章:

  • Linux中安装Tomcat
  • 力扣283-- 移动零
  • 前后两对双差速轮AGV的运动学正解和逆解
  • 免费PDF页面提取小工具
  • 代码随想录算法训练营Day39 | 卡玛网-46.携带研究材料、416. 分割等和子集
  • 【elkb】linux麒麟v10安装ELKB 8.8.X版本(ARM架构)
  • 【入门篇】2.9 系统滴答定时器 SysTick
  • 论文笔记:通用世界模型WorldDreamer
  • 标准版关于申请火山翻译的流程
  • Oracle锁表问题处理
  • python读取学术论文PDF文件内容
  • GCN+BiLSTM多特征输入时间序列预测(Pytorch)
  • Java基础第四天(实训学习整理资料(四)Java中的方法(函数))
  • How to install Node.js and NPM on CentOS
  • 运输层知识点汇总3
  • 【ArcGIS Pro实操第5期】全局及局部空间插值:GPI、LPI、IDW等
  • win7现在还能用吗_哪些配置的电脑还可以安装win7系统
  • 基于JSP实习管理系统【附源码】
  • 五,Linux基础环境搭建(CentOS7)- 安装Kafka
  • 【排序】4.插入排序(含优化)
  • TPLCM柔性屏自动化贴合应用
  • 算法打卡 Day43(动态规划)-背包问题 + 分割等和子集
  • 查看Chrome安装路
  • IDEA项目代码报红,但可以正常编译运行
  • #HarmonyOS:页面和自定义组件生命周期
  • 一站式AI自动化剪辑 内置多种功能 永久免费