如何在Android中以图形方式显示数量?

时间:2012-05-05 12:46:58

标签: android graphics colorbox draw

我正在开发一个我希望在矩形中显示数量的应用。以下是我的需要。我有2个值,比如totalMoney和s​​pentMoney。 我想在2个颜色的矩形框中显示剩余的钱(即totalMoney - spentMoney)。

像这样:

|======================| 
|///////////|          |
|////50%////|          |   
|///////////|          |
|======================|

此矩形将与其他组件(如textview等)合作在自定义视图中。

如何在Android中获得此功能?我正在使用Android 2.2。

2 个答案:

答案 0 :(得分:1)

您需要ProgressBar

以下是自定义示例。

    <ProgressBar style="?android:attr/progressBarStyleHorizontal"
      android:layout_width="fill_parent"
   android:layout_height="7dip"
  android:id="@+id/pop1000Bar"
  android:max="1000"
  android:progress="500"
  android:progressDrawable="@drawable/progressbarlayers"
  >
  </ProgressBar>

progressbarlayers是一个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" />
        <gradient
                android:startColor="#ff9d9e9d"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:angle="270"
        />
    </shape>
</item>

<item
    android:id="@android:id/progress"
>
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="#A9F505"
                android:endColor="#FFF700"
                android:angle="270" />
        </shape>
    </clip>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
        <size android:height="3dip"/>



            <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
            />
        </shape>
    </clip>
</item>
<item
    android:id="@android:id/progress"
>
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="#A9F505"
                android:endColor="#FFF700"
                android:angle="270" />
        </shape>
    </clip>
</item>

</layer-list>

看起来像这样:

enter image description here

但你可以让它看起来像你需要它。

编辑:您可以通过多种方式获取文字。如果您的父布局是RelativeLayout,则只需在进度条顶部堆叠TextView,并在每次更新进度时在文本视图上调用setText。可能更好的方法是子类ProgressBar为你绘制它。 Here is an example of that。他们只创建了一个扩展ProgressBar的新视图,并覆盖onDraw,每次都会在画布上绘制一些文本,并绘制条形图和背景。

答案 1 :(得分:0)

最灵活的方法是进行CustomView。

将ImageView用作基类并覆盖 onDraw

onDraw为您提供了一个Canvas,您可以绘制自己喜欢的内容。