1

TimeChart があり、ズーム率が変更されるたびに保存しようとしています。したがって、ZoomListener をチャートに追加します。

    public void showChart()
        {
            mChartView = ChartFactory.getTimeChartView(this.context, this.mDataset,
 this.mRenderer, TrackedValue.DATE_FORMAT_USER);

            this.layout.addView(mChartView);

            mChartView.setZoomRate(prefs.getChartZoomRate());
            Log.d("showChart", "Set: "+prefs.getChartZoomRate());

            mChartView.addZoomListener(new ZoomListener() {

                @Override
                public void zoomReset() {
                    // TODO Auto-generated method stub

                }

                @Override
                public void zoomApplied(ZoomEvent e) {              
                    prefs.setChartZoomRate(e.getZoomRate());
                    Log.d("zoomApplied", "Save: "+String.valueOf(e.getZoomRate()+", isZoomIn: "+e.isZoomIn()));
                }
            }, true, true);
        }

グラフを表示して [ズームイン] ボタンを押すと、ログの出力は次のようになります。

zoomApplied Save: 1.5, isZoomIn: true

(ズームボタンを使用して)ズームアウトすると、ログ出力は次のようになります。

zoomApplied Save 1.5, isZoomIn: false

ズームインまたはズームアウトの頻度に関係なく、実際のズーム率に関係なく、e.getZoomRate() が常に 1.5 を返す理由がわかりません... e.isZoomIn() は正常に動作しています。

何か案は?

4

1 に答える 1

0

AChartEngine デモ プログラムを試して、以下の行を呼び出すと、正しい 1.2 値が表示されます。

  mChartView.setZoomRate(1.2f);

正しい値を設定していることを確認してください。

于 2012-09-13T15:44:27.510 に答える