2016-03-16 14 views
6

MPAndroidChart kitaplığı kullanıyorum.MPAndroidChart - Yakınlaştırırken ValueFormatter nasıl değiştirilir?

public class CustomYAxisValueFormatter implements YAxisValueFormatter { 

    private DecimalFormat mFormat; 

    public CustomYAxisValueFormatter() { 
     mFormat = new DecimalFormat("###,###,###,##0.0"); // sets precision to 1 
    } 

    @Override 
    public String getFormattedValue(float value, YAxis yAxis) { 
     return mFormat.format(value); 
    } 
} 

Ben y eksenine biçimlendirici ayarlıyorum: Onların hassas 1.

CustomValueFormatter Kodu olduğu Float değerleri böyle biçimlendiren bir CustomValueFormatter kullanıyorum.

Biçimlendiricinin ayarlanması:

YAxis yAxis = lineChart.getAxisLeft(); //show left y-axis line   
    yAxis.setValueFormatter(new CustomYAxisValueFormatter()); // set value formatter to format y-values. 

setValueFormatter(YAxisValueFormatter) sonucunda, yukarıda biçimlendirici (CustomYAxisValueFormatter) varsayılan olarak oluşturulur.

Sorun, CustomYAxisValueFormatter'ın yakınlaştırmadan sonra yeniden oluşturulamaması, dolayısıyla tekrarlayan y değerlerinin ortaya çıkmasıdır.

Yakınlaştırma düzeyine bağlı olarak değerlerin doğruluğunu değiştiren bir CustomValueFormatter oluşturmak mümkün mü?

+1

http://stackoverflow.com/questions/32569618/mpandroidchart-how-can-i-avoid-the-repeated-values-in-y-axis denemek mü herhangi bir yardım olsun. – Dhina

+0

@Dhina Yardımlarınız için teşekkür ederiz. Ancak, sağladığınız bağlantıdaki yanıtlar, y -axis cinsinden değerlerin zorlanmasıyla ilgilidir. Bu, yakınlaştırma düzeyine göre y-değerlerini sınırlar. Bu çözüm bile sonsuz yakınlaştırmada tekrarlanan y değerlerine neden olur. Tek ihtiyacım olan şey, değerlerin hassasiyetini yakınlaştırma seviyesine göre değiştirmektir. –

cevap

0

can bu eğer setOnChartGestureListener

lineChart.setOnChartGestureListener(new OnChartGestureListener() { 
      @Override 
      public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) { 

      } 

      @Override 
      public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) { 
       if(lastPerformedGesture == ChartTouchListener.ChartGesture.PINCH_ZOOM) { 
        YAxis yAxis = lineChart.getAxisLeft(); //show left y-axis line   
        yAxis.setValueFormatter(new CustomYAxisValueFormatter()); // setting your new value formatter 
       } 
      } 

      @Override 
      public void onChartLongPressed(MotionEvent me) { 

      } 

      @Override 
      public void onChartDoubleTapped(MotionEvent me) { 

      } 

      @Override 
      public void onChartSingleTapped(MotionEvent me) { 

      } 

      @Override 
      public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY) { 

      } 

      @Override 
      public void onChartScale(MotionEvent me, float scaleX, float scaleY) { 

      } 

      @Override 
      public void onChartTranslate(MotionEvent me, float dX, float dY) { 

      } 
     }); 
+0

Bunu denedim. Ancak, yakınlaştırma seviyesine göre hassas değerleri hesaplayamıyorum. Yakınlaştırma seviyesi, hassasiyet seviyesini parametrelere göre değiştirecek olan CustomYAxisValueFormatter kurucusuna geçirilmelidir. Yakınlaştırma seviyesini ve hassaslığını ilişkilendirmek mümkün mü? –

+0

_precision değerleri, yakınlaştırma seviyesine göre, tam olarak ne anlama geliyor? – Dhina

+0

Grafik yakınlaştırılmışsa, görünür y değerlerini kontrol etmem gerekiyor. Eğer tekrarlanırlarsa, hassasiyet 1 ile arttırılmalıdır. Çizelgenin geçerli yakınlaştırılmış seviyeye göre tekrar eden bir Y değerlerine sahip olup olmadığına bakmak mümkün mü (Skala değerlerine göre haritanın ne kadar yakınlaştırıldığını hesaplamanın bir yolu var mı?) ???) –

İlgili konular