Android进度条改变麦克风幅度的颜色

时间:2013-07-01 10:45:35

标签: android android-layout

目前我正在为我的录音机做一些改进,现在我添加了振幅以获得麦克风输入电平并显示给用户以查看音频是否被录制。它与dialog.setProgress();一起正常工作,但由于我非常想让它在用户面前很好地显示,我计划让它改变颜色并隐藏进度的背景,只显示进度部分的变化取决于进度水平。让我们说下面20是绿色40下面是黄色60下面是橙色和红色60上升像我们在媒体播放器中看到的典型音频水平。但我不知道为什么我甚至无法将进度条的背景设置为透明以及更改我的progressDrawable在我的情况下更改整个进度条。需要一些帮助。无论如何这里是截图和XML:

<ProgressBar
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/mic_level"
                android:indeterminate="false"
                android:layout_below="@+id/chk_Record"
                android:layout_alignParentLeft="true"
                android:layout_marginTop="31dp"
                android:layout_alignParentRight="true"
                android:progress="50"
                android:clickable="false"
                android:progressDrawable="@color/holo_bright_blue"
                android:background="@color/transparent"/>

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以为进度条创建一个drawable,如下所示。这是我从我的一个项目中获取的非常粗略的指南,所以你可能(几乎可以肯定)不需要渐变,但它应该至少给你一个粗略的想法。

下面使进度条的背景透明,并将前色更改为绿色。

将它放在drawable文件夹中,名称为progress_styles.xml,现在位于进度条集中:

android:progressDrawable="@drawable/progress_styles"

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />

        <gradient
            android:startColor="@android:color/transparent" />
    </shape>
</item>
<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
           <corners android:radius="5dip" />
            <gradient
                android:startColor="#00ff00" />
        </shape>
    </clip>
</item>
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:startColor="#00ff00" />
        </shape>
    </clip>
</item>

我希望这会对你有所帮助。

答案 1 :(得分:0)

渐变角度可以帮助改变进度条状态的变化颜色。

您必须使用layer为其创建自定义xml,并向其添加item,如...

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:id="@android:id/background">  //---this is progress background
 </item>
 ...
 <item android:id="@android:id/progress">   //----this is progress status
 </item>
</layer-list>

Check my this answer for detail, if it could help