2016-07-09 4 views

Répondre

0

Je na pas essayer mais doit travailler. changez les couleurs stroke_colors comme ci-dessous pour obtenir une coloration correcte comme dans l'image ci-dessus. Il y a sept segments de couleur donc 1 segment signifie 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);