Add a delay before the line between fingers disappears

This commit is contained in:
Alexander Sytnyk 2017-06-22 17:06:29 +03:00
parent de7901fc05
commit b1f0d94da6
3 changed files with 17 additions and 2 deletions

View file

@ -166,6 +166,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
private float secondTouchPointX;
private float secondTouchPointY;
private boolean multiTouch;
private long multiTouchTime;
public OsmandMapTileView(MapActivity activity, int w, int h) {
this.activity = activity;
@ -335,6 +336,10 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
this.multiTouch = multiTouch;
}
public long getMultiTouchTime() {
return multiTouchTime;
}
public void setIntZoom(int zoom) {
zoom = zoom > getMaxZoom() ? getMaxZoom() : zoom;
zoom = zoom < getMinZoom() ? getMinZoom() : zoom;
@ -1043,6 +1048,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
secondTouchPointX = x2;
secondTouchPointY = y2;
multiTouch = true;
multiTouchTime = System.currentTimeMillis();
}
}

View file

@ -41,6 +41,7 @@ public class RulerControlLayer extends OsmandMapLayer {
private int cacheZoom;
private double cacheTileX;
private double cacheTileY;
private long cacheMultiTouchTime;
private ArrayList<String> cacheDistances;
private Path distancePath;
private TIntArrayList tx;
@ -98,7 +99,10 @@ public class RulerControlLayer extends OsmandMapLayer {
final QuadPoint center = tb.getCenterPixelPoint();
final RulerMode mode = app.getSettings().RULER_MODE.get();
if (view.isMultiTouch()) {
if (cacheMultiTouchTime != view.getMultiTouchTime()) {
cacheMultiTouchTime = view.getMultiTouchTime();
}
if (view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchTime < 3000) {
float x1 = view.getFirstTouchPointX();
float y1 = view.getFirstTouchPointY();
float x2 = view.getSecondTouchPointX();

View file

@ -185,13 +185,18 @@ public class MapInfoWidgetsFactory {
final String title = map.getResources().getString(R.string.map_widget_show_ruler);
final TextInfoWidget rulerControl = new TextInfoWidget(map) {
boolean needNewLatLon;
long cacheMultiTouchTime;
@Override
public boolean updateInfo(DrawSettings drawSettings) {
RulerMode mode = map.getMyApplication().getSettings().RULER_MODE.get();
OsmandMapTileView view = map.getMapView();
if (view.isMultiTouch()) {
if (cacheMultiTouchTime != view.getMultiTouchTime()) {
cacheMultiTouchTime = view.getMultiTouchTime();
needNewLatLon = true;
}
if (view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchTime < 3000) {
if (needNewLatLon) {
float x1 = view.getFirstTouchPointX();
float y1 = view.getFirstTouchPointY();