Android中温度计的设计

Android中温度计的设计,android,xml,temperature,meter,Android,Xml,Temperature,Meter,我们已经尝试了很多方法在android上设计温度计,但都很糟糕 最后一项工作是使用垂直进度加上circle.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <solid android:color="#FF0000" /> </sh

我们已经尝试了很多方法在android上设计温度计,但都很糟糕

最后一项工作是使用垂直进度加上circle.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <solid android:color="#FF0000" />
</shape>
drawable\verticalprogressbar.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>
     </shape>
 </item>
 <item android:id="@android:id/progress">
     <clip
         android:clipOrientation="vertical"
         android:gravity="bottom">
         <shape>
             <corners android:radius="50dip"/>
             <solid android:color="#FF0000"/>
             <stroke
                 android:width="1dp"
                 android:color="#000000" />
         </shape>
         <shape>
             <solid android:color="#FF0000"/>
         </shape>
     </clip>
 </item>
</layer-list>

drawable\circle.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <solid android:color="#FF0000" />
</shape>

布局\活动\ u main.xml:

   <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ProgressBar
            android:id="@+id/tempGauge"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="10dp"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center"
            android:max="50"
            android:progress="25"
            android:progressDrawable="@drawable/verticalprogressbar" />

        <View
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_gravity="bottom"
            android:layout_marginBottom="10dp"
            android:background="@drawable/circle" />

    </LinearLayout>

在这种背景下,绘制真正的水星状仪表的最佳方法是什么:
将布局从线性更改为相对:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.myview.MainActivity" >

    <View
        android:id="@+id/view1"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignBottom="@+id/tempGauge"
        android:layout_marginLeft="0dp"
        android:background="@drawable/circle" />

    <ProgressBar
        android:id="@+id/tempGauge"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="10dp"
        android:layout_height="fill_parent"
        android:layout_alignRight="@+id/view1"
        android:layout_marginRight="10dp"
        android:max="50"
        android:progress="25"
        android:progressDrawable="@drawable/verticalprogressbar" />

</RelativeLayout>

虽然它并不完美,但最终看起来更好。
现在,我需要给它添加比例。

一个简单的谷歌搜索会产生很多结果…@frank,它们都不是开源的:这是免费的,但它是圆的。mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-temperator/。这是android developers developer.android.com/guide/topics/ui/custom-components.htmlcheck上的参考: