Android Open Source - android-usable-location-privacy Scale Gesture Detector






From Project

Back to project page android-usable-location-privacy.

License

The source code is released under:

Apache License

If you think the Android project android-usable-location-privacy listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * This file is part of GraphView.//from   www . ja v a  2  s .  c o  m
 *
 * GraphView is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * GraphView is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with GraphView.  If not, see <http://www.gnu.org/licenses/lgpl.html>.
 *
 * Copyright Jonas Gehring
 */

package com.jjoe64.graphview.compatible;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;

public class ScaleGestureDetector {
  public interface SimpleOnScaleGestureListener {
    boolean onScale(ScaleGestureDetector detector);
  }

  private Object realScaleGestureDetector;
  private Method method_getScaleFactor;
  private Method method_isInProgress;
  private Method method_onTouchEvent;

  /**
   * @param context
   * @param simpleOnScaleGestureListener
   */
  public ScaleGestureDetector(Context context, SimpleOnScaleGestureListener simpleOnScaleGestureListener) {
    try {
      // check if class is available
      Class.forName("android.view.ScaleGestureDetector");

      // load class and methods
      Class<?> classRealScaleGestureDetector = Class.forName("com.jjoe64.graphview.compatible.RealScaleGestureDetector");
      method_getScaleFactor = classRealScaleGestureDetector.getMethod("getScaleFactor");
      method_isInProgress = classRealScaleGestureDetector.getMethod("isInProgress");
      method_onTouchEvent = classRealScaleGestureDetector.getMethod("onTouchEvent", MotionEvent.class);

      // create real ScaleGestureDetector
      Constructor<?> constructor = classRealScaleGestureDetector.getConstructor(Context.class, getClass(), SimpleOnScaleGestureListener.class);
      realScaleGestureDetector = constructor.newInstance(context, this, simpleOnScaleGestureListener);
    } catch (Exception e) {
      // not available
      Log.w("com.jjoe64.graphview", "*** WARNING *** No scaling available for graphs. Exception:");
      e.printStackTrace();
    }
  }

  public double getScaleFactor() {
    if (method_getScaleFactor != null) {
      try {
        return (Float) method_getScaleFactor.invoke(realScaleGestureDetector);
      } catch (Exception e) {
        e.printStackTrace();
        return 1.0;
      }
    }
    return 1.0;
  }

  public boolean isInProgress() {
    if (method_getScaleFactor != null) {
      try {
        return (Boolean) method_isInProgress.invoke(realScaleGestureDetector);
      } catch (Exception e) {
        e.printStackTrace();
        return false;
      }
    }
    return false;
  }

  public void onTouchEvent(MotionEvent event) {
    if (method_onTouchEvent != null) {
      try {
        method_onTouchEvent.invoke(realScaleGestureDetector, event);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
}




Java Source Code List

android.locationprivacy.algorithm.GeoReverseGeo.java
android.locationprivacy.algorithm.RadiusDistance.java
android.locationprivacy.control.CryptoDatabase.java
android.locationprivacy.control.LocationPrivacyManager.java
android.locationprivacy.model.AbstractLocationPrivacyAlgorithm.java
android.locationprivacy.model.Coordinate.java
android.locationprivacy.model.LocationPrivacyAlgorithmValues.java
android.locationprivacy.model.LocationPrivacyApplication.java
com.android.server.LocationManagerService.java
com.android.settings.Settings.java
com.android.settings.locationprivacy.LPPresetConfigAdapter.java
com.android.settings.locationprivacy.LocationPrivacyAdvancedSettings.java
com.android.settings.locationprivacy.LocationPrivacyAppPreference.java
com.android.settings.locationprivacy.LocationPrivacyDialog.java
com.android.settings.locationprivacy.LocationPrivacyMap.java
com.android.settings.locationprivacy.LocationPrivacyOfflineObfuscation.java
com.android.settings.locationprivacy.LocationPrivacyOnlineInfoActivity.java
com.android.settings.locationprivacy.LocationPrivacySettings.java
com.android.settings.locationprivacy.LocationPrivacyStatisticOverview.java
com.android.settings.locationprivacy.LocationPrivacyStatistic.java
com.android.settings.locationprivacy.SendDataService.java
com.android.settings.locationprivacy.StatisticDiagram24HPreference.java
com.android.settings.locationprivacy.StatisticDiagramPreference.java
com.android.settings.locationprivacy.UserRecoverableAuth.java
com.cyanogenmod.trebuchet.Launcher.java
com.jjoe64.graphview.BarGraphView.java
com.jjoe64.graphview.CustomLabelFormatter.java
com.jjoe64.graphview.GraphViewDataInterface.java
com.jjoe64.graphview.GraphViewSeries.java
com.jjoe64.graphview.GraphViewStyle.java
com.jjoe64.graphview.GraphView.java
com.jjoe64.graphview.LineGraphView.java
com.jjoe64.graphview.StatisticGraphView.java
com.jjoe64.graphview.ValueDependentColor.java
com.jjoe64.graphview.compatible.RealScaleGestureDetector.java
com.jjoe64.graphview.compatible.ScaleGestureDetector.java