diff --git a/.gitignore b/.gitignore index 08a0f3b..61d0e52 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,17 @@ android-mapviewballoons/local.properties android-mapviewballoons/bin/ android-mapviewballoons/gen/ +android-mapviewballoons/tmp/ +android-mapviewballoons/proguard/ +android-mapviewballoons/.classpath +android-mapviewballoons/.project +android-mapviewballoons/.settings/ + android-mapviewballoons-example/local.properties android-mapviewballoons-example/bin/ android-mapviewballoons-example/gen/ +android-mapviewballoons-example/tmp/ +android-mapviewballoons-example/proguard/ +android-mapviewballoons-example/.classpath +android-mapviewballoons-example/.project +android-mapviewballoons-example/.settings/ diff --git a/android-mapviewballoons-example/.classpath b/android-mapviewballoons-example/.classpath deleted file mode 100644 index a4763d1..0000000 --- a/android-mapviewballoons-example/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/android-mapviewballoons-example/.project b/android-mapviewballoons-example/.project deleted file mode 100644 index 1e5e878..0000000 --- a/android-mapviewballoons-example/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - android-mapviewballoons-example - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/android-mapviewballoons-example/project.properties b/android-mapviewballoons-example/project.properties index df25bfd..110bba1 100644 --- a/android-mapviewballoons-example/project.properties +++ b/android-mapviewballoons-example/project.properties @@ -9,4 +9,4 @@ android.library.reference.1=../android-mapviewballoons/ # Project target. -target=Google Inc.:Google APIs:8 +target=Google Inc.:Google APIs:7 diff --git a/android-mapviewballoons-example/res/layout/balloon_overlay_example2.xml b/android-mapviewballoons-example/res/layout/balloon_overlay_example2.xml index e1b9fb5..a38401b 100644 --- a/android-mapviewballoons-example/res/layout/balloon_overlay_example2.xml +++ b/android-mapviewballoons-example/res/layout/balloon_overlay_example2.xml @@ -1,67 +1,72 @@ - + - - - - - + - + - + - - + - - - - - - - - - - - - + + - + \ No newline at end of file diff --git a/android-mapviewballoons-example/res/values/strings.xml b/android-mapviewballoons-example/res/values/strings.xml index 773f797..f137a65 100644 --- a/android-mapviewballoons-example/res/values/strings.xml +++ b/android-mapviewballoons-example/res/values/strings.xml @@ -1,4 +1,5 @@ MapView Balloons Example + Video cover diff --git a/android-mapviewballoons/.classpath b/android-mapviewballoons/.classpath deleted file mode 100644 index 6aed2eb..0000000 --- a/android-mapviewballoons/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/android-mapviewballoons/.project b/android-mapviewballoons/.project deleted file mode 100644 index 5dd76d8..0000000 --- a/android-mapviewballoons/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - android-mapviewballoons - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/android-mapviewballoons/build.xml b/android-mapviewballoons/build.xml new file mode 100644 index 0000000..6a060bf --- /dev/null +++ b/android-mapviewballoons/build.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-mapviewballoons/proguard-project.txt b/android-mapviewballoons/proguard-project.txt new file mode 100644 index 0000000..f2fe155 --- /dev/null +++ b/android-mapviewballoons/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/android-mapviewballoons/project.properties b/android-mapviewballoons/project.properties index 8af8118..f8f8c30 100644 --- a/android-mapviewballoons/project.properties +++ b/android-mapviewballoons/project.properties @@ -11,4 +11,4 @@ android.library=true # Indicates whether an apk should be generated for each density. split.density=false # Project target. -target=Google Inc.:Google APIs:8 +target=Google Inc.:Google APIs:7 diff --git a/android-mapviewballoons/res/drawable-hdpi/balloon_disclosure.png b/android-mapviewballoons/res/drawable-hdpi/balloon_disclosure.png index bd98b9b..59d38c9 100644 Binary files a/android-mapviewballoons/res/drawable-hdpi/balloon_disclosure.png and b/android-mapviewballoons/res/drawable-hdpi/balloon_disclosure.png differ diff --git a/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_close.png b/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_close.png index 16f932e..e6e43ab 100644 Binary files a/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_close.png and b/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_close.png differ diff --git a/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_focused.9.png b/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_focused.9.png index d6fcfe4..207022d 100644 Binary files a/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_focused.9.png and b/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_focused.9.png differ diff --git a/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_unfocused.9.png b/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_unfocused.9.png index 21dfcd7..7abb301 100644 Binary files a/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_unfocused.9.png and b/android-mapviewballoons/res/drawable-hdpi/balloon_overlay_unfocused.9.png differ diff --git a/android-mapviewballoons/res/drawable-ldpi/balloon_disclosure.png b/android-mapviewballoons/res/drawable-ldpi/balloon_disclosure.png new file mode 100644 index 0000000..41f1799 Binary files /dev/null and b/android-mapviewballoons/res/drawable-ldpi/balloon_disclosure.png differ diff --git a/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_close.png b/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_close.png new file mode 100644 index 0000000..d1d90f8 Binary files /dev/null and b/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_close.png differ diff --git a/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_focused.9.png b/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_focused.9.png new file mode 100644 index 0000000..a731490 Binary files /dev/null and b/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_focused.9.png differ diff --git a/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_unfocused.9.png b/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_unfocused.9.png new file mode 100644 index 0000000..0af6632 Binary files /dev/null and b/android-mapviewballoons/res/drawable-ldpi/balloon_overlay_unfocused.9.png differ diff --git a/android-mapviewballoons/res/drawable-mdpi/balloon_disclosure.png b/android-mapviewballoons/res/drawable-mdpi/balloon_disclosure.png new file mode 100644 index 0000000..bd98b9b Binary files /dev/null and b/android-mapviewballoons/res/drawable-mdpi/balloon_disclosure.png differ diff --git a/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_close.png b/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_close.png new file mode 100644 index 0000000..16f932e Binary files /dev/null and b/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_close.png differ diff --git a/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_focused.9.png b/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_focused.9.png new file mode 100644 index 0000000..d6fcfe4 Binary files /dev/null and b/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_focused.9.png differ diff --git a/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_unfocused.9.png b/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_unfocused.9.png new file mode 100644 index 0000000..21dfcd7 Binary files /dev/null and b/android-mapviewballoons/res/drawable-mdpi/balloon_overlay_unfocused.9.png differ diff --git a/android-mapviewballoons/res/drawable-xhdpi/balloon_disclosure.png b/android-mapviewballoons/res/drawable-xhdpi/balloon_disclosure.png new file mode 100644 index 0000000..c92a0f2 Binary files /dev/null and b/android-mapviewballoons/res/drawable-xhdpi/balloon_disclosure.png differ diff --git a/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_close.png b/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_close.png new file mode 100644 index 0000000..a08353b Binary files /dev/null and b/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_close.png differ diff --git a/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_focused.9.png b/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_focused.9.png new file mode 100644 index 0000000..3b247ac Binary files /dev/null and b/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_focused.9.png differ diff --git a/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_unfocused.9.png b/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_unfocused.9.png new file mode 100644 index 0000000..9b59a4e Binary files /dev/null and b/android-mapviewballoons/res/drawable-xhdpi/balloon_overlay_unfocused.9.png differ diff --git a/android-mapviewballoons/res/drawable/balloon_overlay_bg_selector.xml b/android-mapviewballoons/res/drawable/balloon_overlay_bg_selector.xml index e801702..54266f5 100644 --- a/android-mapviewballoons/res/drawable/balloon_overlay_bg_selector.xml +++ b/android-mapviewballoons/res/drawable/balloon_overlay_bg_selector.xml @@ -1,9 +1,7 @@ - - - + + + + + \ No newline at end of file diff --git a/android-mapviewballoons/res/layout/balloon_overlay.xml b/android-mapviewballoons/res/layout/balloon_overlay.xml index 6eeb187..3a4c5e2 100644 --- a/android-mapviewballoons/res/layout/balloon_overlay.xml +++ b/android-mapviewballoons/res/layout/balloon_overlay.xml @@ -1,65 +1,52 @@ - + android:minWidth="200dp" > - - - - - - - - - - - + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:contentDescription="@string/balloon_overlay_go_next" + android:src="@drawable/balloon_disclosure" + android:visibility="gone" /> - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/android-mapviewballoons/res/values/strings.xml b/android-mapviewballoons/res/values/strings.xml new file mode 100644 index 0000000..3f607da --- /dev/null +++ b/android-mapviewballoons/res/values/strings.xml @@ -0,0 +1,5 @@ + + + close popup + go next + diff --git a/android-mapviewballoons/src/com/readystatesoftware/mapviewballoons/BalloonItemizedOverlay.java b/android-mapviewballoons/src/com/readystatesoftware/mapviewballoons/BalloonItemizedOverlay.java index 4e6c489..eb3e10a 100755 --- a/android-mapviewballoons/src/com/readystatesoftware/mapviewballoons/BalloonItemizedOverlay.java +++ b/android-mapviewballoons/src/com/readystatesoftware/mapviewballoons/BalloonItemizedOverlay.java @@ -24,6 +24,7 @@ import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; +import android.widget.ImageView; import com.google.android.maps.GeoPoint; import com.google.android.maps.ItemizedOverlay; @@ -38,14 +39,13 @@ * * @author Jeff Gilfelt */ -public abstract class BalloonItemizedOverlay extends ItemizedOverlay { +public abstract class BalloonItemizedOverlay extends ItemizedOverlay implements OnTouchListener { private static final long BALLOON_INFLATION_TIME = 300; private static Handler handler = new Handler(); private MapView mapView; private BalloonOverlayView balloonView; - private View clickRegion; private View closeRegion; private int viewOffset; final MapController mc; @@ -58,6 +58,9 @@ public abstract class BalloonItemizedOverlay extends I private static boolean isInflating = false; + private float startX; + private float startY; + /** * Create a new BalloonItemizedOverlay * @@ -184,46 +187,35 @@ public void hideAllBalloons() { } } - /** - * Sets the onTouchListener for the balloon being displayed, calling the - * overridden {@link #onBalloonTap} method. - */ - private OnTouchListener createBalloonTouchListener() { - return new OnTouchListener() { - - float startX; - float startY; - - public boolean onTouch(View v, MotionEvent event) { - - View l = ((View) v.getParent()).findViewById(R.id.balloon_main_layout); - Drawable d = l.getBackground(); - - if (event.getAction() == MotionEvent.ACTION_DOWN) { - int[] states = {android.R.attr.state_pressed}; - if (d.setState(states)) { - d.invalidateSelf(); - } - startX = event.getX(); - startY = event.getY(); - return true; - } else if (event.getAction() == MotionEvent.ACTION_UP) { - int newStates[] = {}; - if (d.setState(newStates)) { - d.invalidateSelf(); - } - if (Math.abs(startX - event.getX()) < 40 && - Math.abs(startY - event.getY()) < 40 ) { - // call overridden method - onBalloonTap(currentFocusedIndex, currentFocusedItem); - } - return true; - } else { - return false; - } - + @Override + public boolean onTouch(View v, MotionEvent event) { + + View l = ((View) v.getParent()).findViewById(R.id.balloon_main_layout); + Drawable d = l.getBackground(); + + if (event.getAction() == MotionEvent.ACTION_DOWN) { + int[] states = {android.R.attr.state_pressed}; + if (d.setState(states)) { + d.invalidateSelf(); + } + startX = event.getX(); + startY = event.getY(); + return true; + } else if (event.getAction() == MotionEvent.ACTION_UP) { + int newStates[] = {}; + if (d.setState(newStates)) { + d.invalidateSelf(); + } + if (Math.abs(startX - event.getX()) < 40 && + Math.abs(startY - event.getY()) < 40 ) { + // call overridden method + onBalloonTap(currentFocusedIndex, currentFocusedItem); } - }; + return true; + } else { + return false; + } + } /* (non-Javadoc) @@ -258,8 +250,9 @@ private boolean createAndDisplayBalloonOverlay(){ boolean isRecycled; if (balloonView == null) { balloonView = createBalloonOverlayView(); - clickRegion = (View) balloonView.findViewById(R.id.balloon_inner_layout); - clickRegion.setOnTouchListener(createBalloonTouchListener()); + balloonView.setOnTouchListener(this); + ImageView disclosureImageView = (ImageView) balloonView.findViewById( + R.id.balloon_disclosure); closeRegion = (View) balloonView.findViewById(R.id.balloon_close); if (closeRegion != null) { if (!showClose) { @@ -274,9 +267,8 @@ public void onClick(View v) { } } if (showDisclosure && !showClose) { - View v = balloonView.findViewById(R.id.balloon_disclosure); - if (v != null) { - v.setVisibility(View.VISIBLE); + if (disclosureImageView != null) { + disclosureImageView.setVisibility(View.VISIBLE); } } isRecycled = false;