diff --git a/MyTracks/res/values/navigation_icons.xml b/MyTracks/res/values/navigation_icons.xml new file mode 100644 index 000000000..6cf12d90f --- /dev/null +++ b/MyTracks/res/values/navigation_icons.xml @@ -0,0 +1,29 @@ + + + + + @drawable/left_arrow_chart_stateful + @drawable/left_arrow_track_stateful + @drawable/left_arrow_stats_stateful + + + + @drawable/right_arrow_stats_stateful + @drawable/right_arrow_chart_stateful + @drawable/right_arrow_track_stateful + + diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java index 414b07e26..990a9a2d9 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java @@ -202,17 +202,6 @@ public class MyTracks extends TabActivity implements OnTouchListener, private NavControls navControls; - /** Icons shown on the left for each tab. */ - private final int leftIcons[] = - { R.drawable.left_arrow_chart_stateful, - R.drawable.left_arrow_track_stateful, - R.drawable.left_arrow_stats_stateful }; - /** Icons shown on the right for each tab. */ - private final int rightIcons[] = - { R.drawable.right_arrow_stats_stateful, - R.drawable.right_arrow_chart_stateful, - R.drawable.right_arrow_track_stateful }; - private final Runnable changeTab = new Runnable() { public void run() { getTabHost().setCurrentTab(navControls.getCurrentIcons()); @@ -298,7 +287,10 @@ public class MyTracks extends TabActivity implements OnTouchListener, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); layout.setLayoutParams(params); navControls = - new NavControls(this, layout, leftIcons, rightIcons, changeTab); + new NavControls(this, layout, + getResources().obtainTypedArray(R.array.left_icons), + getResources().obtainTypedArray(R.array.right_icons), + changeTab); navControls.show(); tabHost.addView(layout); layout.setOnTouchListener(this); diff --git a/MyTracks/src/com/google/android/apps/mytracks/NavControls.java b/MyTracks/src/com/google/android/apps/mytracks/NavControls.java index 0622efab7..4d38d33bc 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/NavControls.java +++ b/MyTracks/src/com/google/android/apps/mytracks/NavControls.java @@ -16,6 +16,7 @@ package com.google.android.apps.mytracks; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Handler; import android.view.MotionEvent; @@ -62,8 +63,7 @@ public class NavControls { addView(icon); } - public void setIcon(int iconId) { - Drawable drawable = getContext().getResources().getDrawable(iconId); + public void setIcon(Drawable drawable) { icon.setImageDrawable(drawable); icon.setVisibility(View.VISIBLE); } @@ -102,21 +102,21 @@ public class NavControls { private final TouchLayout prevImage; private final TouchLayout nextImage; - private final int[] leftIcons; - private final int[] rightIcons; + private final TypedArray leftIcons; + private final TypedArray rightIcons; private final Runnable touchRunnable; private boolean isVisible = false; private int currentIcons; public NavControls(Context context, ViewGroup container, - int[] leftIcons, int[] rightIcons, + TypedArray leftIcons, TypedArray rightIcons, Runnable touchRunnable) { this.leftIcons = leftIcons; this.rightIcons = rightIcons; this.touchRunnable = touchRunnable; - if (leftIcons.length != rightIcons.length || leftIcons.length < 1) { + if (leftIcons.length() != rightIcons.length() || leftIcons.length() < 1) { throw new IllegalArgumentException("Invalid icons specified"); } if (touchRunnable == null) { @@ -145,8 +145,8 @@ public class NavControls { container.addView(prevImage); container.addView(nextImage); - prevImage.setIcon(leftIcons[0]); - nextImage.setIcon(rightIcons[0]); + prevImage.setIcon(leftIcons.getDrawable(0)); + nextImage.setIcon(rightIcons.getDrawable(0)); this.currentIcons = 0; } @@ -206,8 +206,8 @@ public class NavControls { private void shiftIcons(boolean isLeft) { // Increment or decrement by one, with wrap around - currentIcons = (currentIcons + leftIcons.length + (isLeft ? -1 : 1)) % leftIcons.length; - prevImage.setIcon(leftIcons[currentIcons]); - nextImage.setIcon(rightIcons[currentIcons]); + currentIcons = (currentIcons + leftIcons.length() + (isLeft ? -1 : 1)) % leftIcons.length(); + prevImage.setIcon(leftIcons.getDrawable(currentIcons)); + nextImage.setIcon(rightIcons.getDrawable(currentIcons)); } }