I have two different 'test' apps that behave the same way. One was an existing test that I upgraded from a prior version of the sdk. The other is a brand new project I just created by following the hello world tutorial. In both cases, the app is about the minimum you can have to show a mapview, and the addition of an onpanlistener that writes to logcat on each of the four events. They both behave like my app - pre/post pointer move appears to work as expected, prepointerup appears sometimes and I don't see any postpointerup. See code below.HelloWorldActivity.Javapackage com.esri.arcgis.android.samples.helloworld;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.esri.android.map.MapView;
import com.esri.android.map.ags.ArcGISTiledMapServiceLayer;
import com.esri.android.map.event.OnPanListener;
import com.esri.android.map.event.OnStatusChangedListener;
public class HelloWorldActivity extends Activity {
MapView mMapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Retrieve the map and initial extent from XML layout
mMapView = (MapView)findViewById(R.id.map);
// Add dynamic layer to MapView
mMapView.addLayer(new ArcGISTiledMapServiceLayer("" +
"http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"));
mMapView.setOnStatusChangedListener(new OnStatusChangedListener() {
private static final long serialVersionUID = 1L;
public void onStatusChanged(Object source, STATUS status) {
if (source == mMapView && status == STATUS.INITIALIZED) {
mMapView.setOnPanListener(new OnPanListener() {
private static final long serialVersionUID = 1L;
public void postPointerMove(float arg0, float arg1, float arg2,
float arg3) {
Log.d("pointertest", "in postPointerMove");
}
public void postPointerUp(float arg0, float arg1, float arg2,
float arg3) {
Log.d("pointertest", "in postPointerUp");
}
public void prePointerMove(float arg0, float arg1, float arg2,
float arg3) {
Log.d("pointertest", "in prePointerMove");
}
public void prePointerUp(float arg0, float arg1, float arg2,
float arg3) {
Log.d("pointertest", "in prePointerUp");
}
});
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onPause() {
super.onPause();
mMapView.pause();
}
@Override
protected void onResume() {
super.onResume();
mMapView.unpause();
}
}
And main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".HelloWorldActivity"
>
<!-- MapView layout and initial extent -->
<com.esri.android.map.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
initExtent = "-1.3296373526814876E7 3930962.41823043 -1.2807176545789773E7 4201243.7502468005">
</com.esri.android.map.MapView>
</LinearLayout>
logcat output:05-20 12:49:54.840: D/pointertest(1090): in prePointerMove
05-20 12:49:54.840: D/pointertest(1090): in postPointerMove
05-20 12:49:54.908: D/pointertest(1090): in prePointerMove
05-20 12:49:54.908: D/pointertest(1090): in postPointerMove
05-20 12:49:55.108: D/pointertest(1090): in prePointerMove
05-20 12:49:55.108: D/pointertest(1090): in postPointerMove
05-20 12:49:55.258: D/pointertest(1090): in prePointerMove
05-20 12:49:55.258: D/pointertest(1090): in postPointerMove
05-20 12:49:56.747: D/pointertest(1090): in prePointerMove
05-20 12:49:56.747: D/pointertest(1090): in postPointerMove
05-20 12:49:56.778: D/pointertest(1090): in prePointerMove
05-20 12:49:56.778: D/pointertest(1090): in postPointerMove
05-20 12:49:56.908: D/pointertest(1090): in prePointerMove
05-20 12:49:56.917: D/pointertest(1090): in postPointerMove
05-20 12:49:57.237: D/pointertest(1090): in prePointerMove
05-20 12:49:57.237: D/pointertest(1090): in postPointerMove
05-20 12:49:57.257: D/pointertest(1090): in prePointerMove
05-20 12:49:57.257: D/pointertest(1090): in postPointerMove
05-20 12:49:58.418: D/pointertest(1090): in prePointerMove
05-20 12:49:58.418: D/pointertest(1090): in postPointerMove
05-20 12:49:58.448: D/pointertest(1090): in prePointerMove
05-20 12:49:58.448: D/pointertest(1090): in postPointerMove
05-20 12:49:58.738: D/pointertest(1090): in prePointerMove
05-20 12:49:58.738: D/pointertest(1090): in postPointerMove
05-20 12:49:58.758: D/pointertest(1090): in prePointerUp
05-20 12:49:59.528: D/pointertest(1090): in prePointerMove
05-20 12:49:59.538: D/pointertest(1090): in postPointerMove
05-20 12:49:59.558: D/pointertest(1090): in prePointerMove
05-20 12:49:59.558: D/pointertest(1090): in postPointerMove
05-20 12:49:59.700: D/pointertest(1090): in prePointerMove
05-20 12:49:59.700: D/pointertest(1090): in postPointerMove
05-20 12:49:59.838: D/pointertest(1090): in prePointerMove
05-20 12:49:59.838: D/pointertest(1090): in postPointerMove
05-20 12:49:59.918: D/pointertest(1090): in prePointerMove
05-20 12:49:59.918: D/pointertest(1090): in postPointerMove