我们在Android应用程序中使用AChargEngine,它工作得很好。 但是当我捏它来缩放它的变焦时,我想提高缩放比率。
示例:
如果我正常捏缩放,那么如果它是100px缩放,那么我希望它缩放200px进行正常捏缩放。
有什么方法可以实现这个目标吗?
需要帮助。
提前致谢。
更新:
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_blutdruck_chart_landscape);
loadChart();
mChart = ChartFactory.getLineChartView(BlutDruckChartLandscape.this,
mDataset,
mRenderer);
}
public void loadChart() {
initChart();
setRenderingStyle();
fillData(WEEK);
if (graphDatas.size() > 0) {
mRenderer.setPanLimits(new double[] { (dateLabels[0].longValue() - (GraphUtilities.DAY)), mRenderer.getXAxisMax(), mRenderer.getYAxisMin(), mRenderer.getYAxisMax() });
}
}
public void initChart() {
mDataset = new XYMultipleSeriesDataset();
mDiastolicSeries = new TimeSeries("Diastolic");
mSystolicSeries = new TimeSeries("Systolic");
mPulseSeries = new TimeSeries("Pulse");
mDataset.addSeries(mDiastolicSeries);
mDataset.addSeries(mSystolicSeries);
if (isPulseEnabled) {
mDataset.addSeries(mPulseSeries);
}
mRenderer = new XYMultipleSeriesRenderer();
mDiastolicRenderer = new XYSeriesRenderer();
mDiastolicRenderer.setPointStyle(PointStyle.CIRCLE);
mDiastolicRenderer.setFillPoints(true);
mDiastolicRenderer.setLineWidth(GraphUtilities.LINE_WIDHT * multiplicationFactor);
mDiastolicRenderer.setColor(getResources().getColor(R.color.graph_diastolic_gray));
mRenderer.addSeriesRenderer(mDiastolicRenderer);
mSystolicRenderer = new XYSeriesRenderer();
mSystolicRenderer.setPointStyle(PointStyle.CIRCLE);
mSystolicRenderer.setFillPoints(true);
mSystolicRenderer.setLineWidth(GraphUtilities.LINE_WIDHT * multiplicationFactor);
mSystolicRenderer.setColor(getResources().getColor(R.color.graph_systolic_blue));
mRenderer.addSeriesRenderer(mSystolicRenderer);
mPulseRenderer = new XYSeriesRenderer();
mPulseRenderer.setPointStyle(PointStyle.CIRCLE);
mPulseRenderer.setFillPoints(true);
mPulseRenderer.setLineWidth(GraphUtilities.LINE_WIDHT * multiplicationFactor);
mPulseRenderer.setColor(getResources().getColor(R.color.graph_pulse_white));
if (isPulseEnabled) {
mRenderer.addSeriesRenderer(mPulseRenderer);
}
}
public void setRenderingStyle() {
mRenderer.setBackgroundColor(getResources().getColor(R.color.ilink_blue));
mRenderer.setMarginsColor(getResources().getColor(R.color.ilink_blue));
mRenderer.setGridColor(Color.WHITE);
mRenderer.setShowCustomTextGridX(false);
mRenderer.setShowCustomTextGridY(true);
mRenderer.setAntialiasing(true); // Also tried setting antialiasing to false but not helped.
mRenderer.setPanEnabled(true, false);
mRenderer.setZoomEnabled(true, false);
mRenderer.setZoomButtonsVisible(false);
mRenderer.setXLabelsColor(Color.WHITE);
mRenderer.setYLabelsColor(0, Color.WHITE);
mRenderer.setXLabelsAlign(Align.CENTER);
mRenderer.setXLabelsPadding(10);
mRenderer.setXLabelsAngle(-30.0f);
mRenderer.setYLabelsAlign(Align.RIGHT);
mRenderer.setPointSize(GraphUtilities.POINT_SIZE * multiplicationFactor);
mRenderer.setInScroll(true);
mRenderer.setShowLegend(false);
mRenderer.setLabelsTextSize(GraphUtilities.TEXT_SIZE * multiplicationFactor);
mRenderer.setLabelsTextSize(GraphUtilities.TEXT_SIZE * multiplicationFactor);
mRenderer.setChartTitleTextSize(GraphUtilities.TEXT_SIZE * multiplicationFactor);
mRenderer.setMargins(new int[] { (int) (5 * multiplicationFactor), (int) (25 * multiplicationFactor), (int) (10 * multiplicationFactor), (int) (10 * multiplicationFactor) });
mRenderer.setShowTickMarks(false);
mRenderer.setYLabelsVerticalPadding(-2 * multiplicationFactor);
mRenderer.setZoomRate(5.0f);
}
感谢。
答案 0 :(得分:0)
它可以帮到你:
multiRenderer.setZoomButtonsVisible(true);
multiRenderer.setZoomEnabled(enabled);
multiRenderer.setZoomInLimitX("VALUE");
multiRenderer.setZoomInLimitY("VALUE");
OR
multiRenderer.setZoomButtonsVisible(true);
multiRenderer.setZoomEnabled(enabled);
multiRenderer.setZoomLimits("Array of Zoom value of X and Y ");
答案 1 :(得分:0)
我使用以下代码进行捏拉缩放,缩放比例会随着捏拉变焦的速度增加而增加。
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener
{
@Override
public boolean onScale(ScaleGestureDetector detector)
{
scaleFactor *= detector.getScaleFactor();
scaleFactor = Math.max(MIN_ZOOM, Math.min(scaleFactor, MAX_ZOOM));
invalidate();
return true;
}
}
创建一个全局双scaleFactor变量,并使用如下所示的值将缩放因子应用于您的视图。
scale(scaleFactor, scaleFactor);
答案 2 :(得分:0)
您不必修改源代码。您可以在构建图表之前调用renderer.setZoomRate()
。