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

  • 效果图

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

js 复制代码
				 <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
javascript 复制代码
<?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>
  • 逻辑实现
javascript 复制代码
 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) {//松开的时候调用
            }
        });
相关推荐
Yang-Never24 分钟前
Kotlin协程 -> Job.join() 完整流程图与核心源码分析
android·开发语言·kotlin·android studio
一笑的小酒馆6 小时前
Android性能优化之截屏时黑屏卡顿问题
android
懒人村杂货铺9 小时前
Android BLE 扫描完整实战
android
TeleostNaCl11 小时前
如何安装 Google 通用的驱动以便使用 ADB 和 Fastboot 调试(Bootloader)设备
android·经验分享·adb·android studio·android-studio·android runtime
fatiaozhang952712 小时前
中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖
android·网络·电脑·电视盒子·刷机固件·机顶盒刷机
2501_9159184113 小时前
iOS 开发全流程实战 基于 uni-app 的 iOS 应用开发、打包、测试与上架流程详解
android·ios·小程序·https·uni-app·iphone·webview
lichong95113 小时前
【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之dist打包发布在Android工程asserts里
android·vue.js·iphone
Android出海13 小时前
Android 15重磅升级:16KB内存页机制详解与适配指南
android·人工智能·新媒体运营·产品运营·内容运营
一只修仙的猿13 小时前
毕业三年后,我离职了
android·面试
编程乐学13 小时前
安卓非原创--基于Android Studio 实现的新闻App
android·ide·android studio·移动端开发·安卓大作业·新闻app