如何根据结果值旋转量规针?

时间:2016-07-09 19:36:52

标签: java android android-layout image-rotation gauge

我是新手,我想在我的应用中使用this example(示例3)。

我的应用程序会在后台进行一些计算,结果将是0,1,2,3或4.我应该如何使针头相应移动(针头应该从左向右移动)?
enter image description here

2 个答案:

答案 0 :(得分:0)

根据输出,您可以使用此视频中的代码:https://www.youtube.com/watch?v=tWCHDoO14aE将针图像旋转一定度数以获得指针上的值

答案 1 :(得分:0)

我没有尝试,但它必须工作。如下图所示,更改stroke_colors attr,以获得正确的颜色。有七个颜色段,因此1个段意味着max_val / 7

<FrameLayout
    android:layout_width="260dp"
    android:layout_height="162dp"
    android:background="#354051">

    <com.sccomponents.widgets.ScArcGauge
        android:id="@+id/gauge"
        xmlns:sc="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:padding="30dp"
        sc:scc_angle_start="-180"
        sc:scc_angle_sweep="180"
        sc:scc_stroke_colors="#F7AD36|#8BBE28|#8BBE28|#F7AD36|#F7AD36|#EC4949|#EC4949"
        sc:scc_stroke_colors_mode="solid"
        sc:scc_stroke_size="30dp"/>

    <ImageView
        android:id="@+id/indicator"
        android:layout_width="64dp"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center_horizontal"
        android:layout_marginBottom="29dp"
        android:layout_marginLeft="18dp"
        android:src="@drawable/indicator"/>

</FrameLayout>
float angle0 = 0;
float angle1 = gauge.percentageToAngle(max_val/7);
float angle2 = gauge.percentageToAngle(max_val/7*3);
float angle3 = gauge.percentageToAngle(max_val/7*5);
float angle4 = gauge.percentageToAngle(max_val);

float angle;

if(cur_val >= 0 && cur_val < max_val/7)
    angle = angle0;
else if(cur_val >= max_val/7 && cur_val < max_val/7*3)
    angle = angle1;
else if(cur_val >= max_val/7*3 && cur_val < max_val/7*5)
    angle = angle2;
else if(cur_val >= max_val/7*5 && cur_val < max_val)
    angle = angle3;
else 
    angle = angle4;


indicator.setRotation(angle);