package lecho.lib.hellocharts.view; import android.content.Context; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.util.Log; import lecho.lib.hellocharts.BuildConfig; import lecho.lib.hellocharts.computator.PreviewChartComputator; import lecho.lib.hellocharts.gesture.PreviewChartTouchHandler; import lecho.lib.hellocharts.model.LineChartData; import lecho.lib.hellocharts.renderer.PreviewLineChartRenderer; /** * Preview chart that can be used as overview for other LineChart. When you change Viewport of this chart, visible area * of other chart will change. For that you need also to use * {@link Chart#setViewportChangeListener(lecho.lib.hellocharts.listener.ViewportChangeListener)} * * @author Leszek Wach */ public class PreviewLineChartView extends LineChartView { private static final String TAG = "PreviewLineChartView"; protected PreviewLineChartRenderer previewChartRenderer; public PreviewLineChartView(Context context) { this(context, null, 0); } public PreviewLineChartView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public PreviewLineChartView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); chartComputator = new PreviewChartComputator(); previewChartRenderer = new PreviewLineChartRenderer(context, this, this); touchHandler = new PreviewChartTouchHandler(context, this); setChartRenderer(previewChartRenderer); setLineChartData(LineChartData.generateDummyData()); } public int getPreviewColor() { return previewChartRenderer.getPreviewColor(); } public void setPreviewColor(int color) { if (BuildConfig.DEBUG) { Log.d(TAG, "Changing preview area color"); } previewChartRenderer.setPreviewColor(color); ViewCompat.postInvalidateOnAnimation(this); } @Override public boolean canScrollHorizontally(int direction) { final int offset = computeHorizontalScrollOffset(); final int range = computeHorizontalScrollRange() - computeHorizontalScrollExtent(); if (range == 0) return false; if (direction < 0) { return offset > 0; } else { return offset < range - 1; } } }