summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2013-04-10 08:50:51 -0700
committerMichael Kolb <kolby@google.com>2013-04-15 11:43:52 -0700
commit3d25de2e7bbf81d49b50be577923f7d99a0180de (patch)
tree15e7c919244f405e6e063dbadf432186fcb3dbb1
parent4b6ea5bce9b68eea16eb8a0980501f671e7fbf44 (diff)
downloadandroid_packages_apps_Gallery2-3d25de2e7bbf81d49b50be577923f7d99a0180de.tar.gz
android_packages_apps_Gallery2-3d25de2e7bbf81d49b50be577923f7d99a0180de.tar.bz2
android_packages_apps_Gallery2-3d25de2e7bbf81d49b50be577923f7d99a0180de.zip
Add menu labels
Bug: 8618169 Change-Id: Iea1ac7256450afd2870c144099459f32868c699f
-rw-r--r--res/values/arrays.xml35
-rw-r--r--res/values/attrs.xml1
-rw-r--r--res/values/strings.xml40
-rw-r--r--res/xml/camera_preferences.xml9
-rw-r--r--src/com/android/camera/CameraSettings.java4
-rw-r--r--src/com/android/camera/ListPreference.java15
-rw-r--r--src/com/android/camera/PhotoMenu.java15
-rw-r--r--src/com/android/camera/PieController.java2
-rw-r--r--src/com/android/camera/drawable/TextDrawable.java23
-rw-r--r--src/com/android/camera/ui/PieItem.java9
-rw-r--r--src/com/android/camera/ui/PieRenderer.java21
11 files changed, 168 insertions, 6 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index fb3200391..57da3cb97 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -195,6 +195,12 @@
<item>macro</item>
</string-array>
+ <string-array name="pref_camera_focusmode_labels" translatable="false">
+ <item>@string/pref_camera_focusmode_label_auto</item>
+ <item>@string/pref_camera_focusmode_label_infinity</item>
+ <item>@string/pref_camera_focusmode_label_macro</item>
+ </string-array>
+
<!-- Camera Preferences flash mode dialog box entries -->
<string-array name="pref_camera_flashmode_entries" translatable="false">
<item>@string/pref_camera_flashmode_entry_off</item>
@@ -202,6 +208,12 @@
<item>@string/pref_camera_flashmode_entry_on</item>
</string-array>
+ <string-array name="pref_camera_flashmode_labels" translatable="false">
+ <item>@string/pref_camera_flashmode_label_off</item>
+ <item>@string/pref_camera_flashmode_label_auto</item>
+ <item>@string/pref_camera_flashmode_label_on</item>
+ </string-array>
+
<string-array name="pref_camera_flashmode_entryvalues" translatable="false">
<item>off</item>
<item>auto</item>
@@ -226,6 +238,11 @@
<item>@string/pref_camera_flashmode_entry_off</item>
</string-array>
+ <string-array name="pref_camera_video_flashmode_labels" translatable="false">
+ <item>@string/pref_camera_flashmode_label_on</item>
+ <item>@string/pref_camera_flashmode_label_off</item>
+ </string-array>
+
<string-array name="pref_camera_video_flashmode_entryvalues" translatable="false">
<item>torch</item>
<item>off</item>
@@ -270,6 +287,14 @@
<item>@string/pref_camera_whitebalance_entry_cloudy</item>
</string-array>
+ <string-array name="pref_camera_whitebalance_labels" translatable="false">
+ <item>@string/pref_camera_whitebalance_label_incandescent</item>
+ <item>@string/pref_camera_whitebalance_label_fluorescent</item>
+ <item>@string/pref_camera_whitebalance_label_auto</item>
+ <item>@string/pref_camera_whitebalance_label_daylight</item>
+ <item>@string/pref_camera_whitebalance_label_cloudy</item>
+ </string-array>
+
<string-array name="pref_camera_whitebalance_entryvalues" translatable="false">
<item>incandescent</item>
<item>fluorescent</item>
@@ -316,6 +341,11 @@
<item>@string/pref_camera_id_entry_front</item>
</array>
+ <array name="camera_id_labels" translatable="false">
+ <item>@string/pref_camera_id_label_back</item>
+ <item>@string/pref_camera_id_label_front</item>
+ </array>
+
<array name="camera_id_icons" translatable="false">
<item>@drawable/ic_menuselect_camera_facing_back</item>
<item>@drawable/ic_menuselect_camera_facing_front</item>
@@ -370,6 +400,11 @@
<item>@string/setting_on</item>
</string-array>
+ <string-array name="pref_camera_hdr_labels" translatable="false">
+ <item>@string/pref_camera_hdr_label_off</item>
+ <item>@string/pref_camera_hdr_label_on</item>
+ </string-array>
+
<string-array name="pref_camera_hdr_entryvalues" translatable="false">
<item>@string/setting_off_value</item>
<item>@string/setting_on_value</item>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index b901db770..cd849b62a 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -32,6 +32,7 @@
<attr name="defaultValue" format="string|reference" />
<attr name="entryValues" format="reference" />
<attr name="entries" format="reference" />
+ <attr name="labels" format="reference" />
</declare-styleable>
<declare-styleable name="IconIndicator">
<attr name="icons" format="reference" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 27663c946..7f8e083f5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -694,6 +694,11 @@
<string name="pref_camera_focusmode_entry_infinity">Infinity</string>
<string name="pref_camera_focusmode_entry_macro">Macro</string>
+ <!-- Menu, focus mode labels [CHAR LIMIT=50] -->
+ <string name="pref_camera_focusmode_label_auto">AUTO</string>
+ <string name="pref_camera_focusmode_label_infinity">INFINITY</string>
+ <string name="pref_camera_focusmode_label_macro">MACRO</string>
+
<!-- Default flash mode setting.-->
<string name="pref_camera_flashmode_default" translatable="false">auto</string>
@@ -702,12 +707,19 @@
<!-- Settings screen, Flash mode title -->
<string name="pref_camera_flashmode_title">Flash mode</string>
+ <!-- flash label [CHAR LIMIT=50] -->
+ <string name="pref_camera_flashmode_label">FLASH MODE</string>
<!-- Settings screen, Flash mode dialog radio button choices -->
<string name="pref_camera_flashmode_entry_auto">Auto</string>
<string name="pref_camera_flashmode_entry_on">On</string>
<string name="pref_camera_flashmode_entry_off">Off</string>
+ <!-- Menu, flash mode labels [CHAR LIMIT=50] -->
+ <string name="pref_camera_flashmode_label_auto">FLASH AUTO</string>
+ <string name="pref_camera_flashmode_label_on">FLASH ON</string>
+ <string name="pref_camera_flashmode_label_off">FLASH OFF</string>
+
<!-- Default videocamera flash mode setting.-->
<string name="pref_camera_video_flashmode_default" translatable="false">off</string>
@@ -716,6 +728,8 @@
<!-- Settings screen, white balance title -->
<string name="pref_camera_whitebalance_title">White balance</string>
+ <!-- Menu, white balance label -->
+ <string name="pref_camera_whitebalance_label">WHITE BALANCE</string>
<!-- Settings screen, White balance dialog radio button choices -->
<string name="pref_camera_whitebalance_entry_auto">Auto</string>
@@ -724,6 +738,13 @@
<string name="pref_camera_whitebalance_entry_fluorescent">Fluorescent</string>
<string name="pref_camera_whitebalance_entry_cloudy">Cloudy</string>
+ <!-- Menu, White balance labels [CHAR LIMIT=50] -->
+ <string name="pref_camera_whitebalance_label_auto">AUTO</string>
+ <string name="pref_camera_whitebalance_label_incandescent">INCANDESCENT</string>
+ <string name="pref_camera_whitebalance_label_daylight">DAYLIGHT</string>
+ <string name="pref_camera_whitebalance_label_fluorescent">FLUORESCENT</string>
+ <string name="pref_camera_whitebalance_label_cloudy">CLOUDY</string>
+
<!-- Default scene mode setting. -->
<string name="pref_camera_scenemode_default" translatable="false">auto</string>
@@ -749,10 +770,22 @@
<!-- Exposure settings in preference -->
<string name="pref_exposure_title">Exposure</string>
<string name="pref_exposure_default" translatable="false">0</string>
+ <!-- menu label exposure compensation [CHAR LIMIT=50] -->
+ <string name="pref_exposure_label">EXPOSURE</string>
<!-- Default HDR entry value -->
<string name="pref_camera_hdr_default">@string/setting_off_value</string>
+ <!-- HDR label ON [CHAR LIMIT=60] -->
+ <string name="pref_camera_hdr_label_on">HDR OFF</string>
+ <!-- HDR label OFF [CHAR LIMIT=60] -->
+ <string name="pref_camera_hdr_label_off">HDR ON</string>
+
+ <!-- switch camera label back [CHAR LIMIT=60] -->
+ <string name="pref_camera_id_label_back">FRONT CAMERA</string>
+ <!-- switch camera label front [CHAR LIMIT=60] -->
+ <string name="pref_camera_id_label_front">BACK CAMERA</string>
+
<!-- Dialog "OK" button. Dismisses dialog. -->
<string name="dialog_ok">OK</string>
@@ -1015,6 +1048,13 @@ CHAR LIMIT = NONE] -->
<!-- Title for the albums tab [CHAR LIMIT=25] -->
<string name="tab_albums">Albums</string>
+ <!-- Camera menu labels -->
+
+ <!-- more options label [CHAR LIMIT=50] -->
+ <string name="camera_menu_more_label">MORE OPTIONS</string>
+ <!-- settings label [CHAR LIMIT=50] -->
+ <string name="camera_menu_settings_label">SETTINGS</string>
+
<!-- String indicating how many photos are in an album [CHAR LIMIT=15] -->
<plurals name="number_of_photos">
<item quantity="one">%1$d photo</item>
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 741fb1f8c..a08dfa98a 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -24,7 +24,8 @@
camera:icons="@array/camera_flashmode_icons"
camera:largeIcons="@array/camera_flashmode_largeicons"
camera:entries="@array/pref_camera_flashmode_entries"
- camera:entryValues="@array/pref_camera_flashmode_entryvalues" />
+ camera:entryValues="@array/pref_camera_flashmode_entryvalues"
+ camera:labels="@array/pref_camera_flashmode_labels" />
<IconListPreference
camera:key="pref_camera_exposure_key"
camera:defaultValue="@string/pref_exposure_default"
@@ -44,7 +45,8 @@
camera:icons="@array/whitebalance_icons"
camera:largeIcons="@array/whitebalance_largeicons"
camera:entries="@array/pref_camera_whitebalance_entries"
- camera:entryValues="@array/pref_camera_whitebalance_entryvalues" />
+ camera:entryValues="@array/pref_camera_whitebalance_entryvalues"
+ camera:labels="@array/pref_camera_whitebalance_labels" />
<RecordLocationPreference
camera:key="pref_camera_recordlocation_key"
camera:defaultValue="@string/pref_camera_recordlocation_default"
@@ -63,6 +65,7 @@
camera:defaultValue="@array/pref_camera_focusmode_default_array"
camera:title="@string/pref_camera_focusmode_title"
camera:entries="@array/pref_camera_focusmode_entries"
+ camera:labels="@array/pref_camera_focusmode_labels"
camera:entryValues="@array/pref_camera_focusmode_entryvalues" />
<IconListPreference
camera:key="pref_camera_id_key"
@@ -70,12 +73,14 @@
camera:title="@string/pref_camera_id_title"
camera:icons="@array/camera_id_icons"
camera:entries="@array/camera_id_entries"
+ camera:labels="@array/camera_id_labels"
camera:largeIcons="@array/camera_id_largeicons" />
<ListPreference
camera:key="pref_camera_hdr_key"
camera:defaultValue="@string/pref_camera_hdr_default"
camera:title="@string/pref_camera_scenemode_entry_hdr"
camera:entries="@array/pref_camera_hdr_entries"
+ camera:labels="@array/pref_camera_hdr_labels"
camera:entryValues="@array/pref_camera_hdr_entryvalues" />
<CountDownTimerPreference
camera:key="pref_camera_timer_key"
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index d0d575c5f..ede4156c7 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -247,8 +247,10 @@ public class CameraSettings {
// show only integer values for exposure compensation
int maxValue = Math.min(3, (int) FloatMath.floor(max * step));
int minValue = Math.max(-3, (int) FloatMath.ceil(min * step));
+ String explabel = mContext.getResources().getString(R.string.pref_exposure_label);
CharSequence entries[] = new CharSequence[maxValue - minValue + 1];
CharSequence entryValues[] = new CharSequence[maxValue - minValue + 1];
+ CharSequence labels[] = new CharSequence[maxValue - minValue + 1];
int[] icons = new int[maxValue - minValue + 1];
TypedArray iconIds = mContext.getResources().obtainTypedArray(
R.array.pref_camera_exposure_icons);
@@ -257,10 +259,12 @@ public class CameraSettings {
StringBuilder builder = new StringBuilder();
if (i > 0) builder.append('+');
entries[maxValue - i] = builder.append(i).toString();
+ labels[maxValue - i] = explabel + " " + builder.toString();
icons[maxValue - i] = iconIds.getResourceId(3 + i, 0);
}
exposure.setUseSingleIcon(true);
exposure.setEntries(entries);
+ exposure.setLabels(labels);
exposure.setEntryValues(entryValues);
exposure.setLargeIconIds(icons);
}
diff --git a/src/com/android/camera/ListPreference.java b/src/com/android/camera/ListPreference.java
index a29b19719..9ea2e34ec 100644
--- a/src/com/android/camera/ListPreference.java
+++ b/src/com/android/camera/ListPreference.java
@@ -40,6 +40,7 @@ public class ListPreference extends CameraPreference {
private CharSequence[] mEntries;
private CharSequence[] mEntryValues;
+ private CharSequence[] mLabels;
private boolean mLoaded = false;
public ListPreference(Context context, AttributeSet attrs) {
@@ -68,6 +69,8 @@ public class ListPreference extends CameraPreference {
setEntries(a.getTextArray(R.styleable.ListPreference_entries));
setEntryValues(a.getTextArray(
R.styleable.ListPreference_entryValues));
+ setLabels(a.getTextArray(
+ R.styleable.ListPreference_labels));
a.recycle();
}
@@ -83,6 +86,10 @@ public class ListPreference extends CameraPreference {
return mEntryValues;
}
+ public CharSequence[] getLabels() {
+ return mLabels;
+ }
+
public void setEntries(CharSequence entries[]) {
mEntries = entries == null ? new CharSequence[0] : entries;
}
@@ -91,6 +98,10 @@ public class ListPreference extends CameraPreference {
mEntryValues = values == null ? new CharSequence[0] : values;
}
+ public void setLabels(CharSequence labels[]) {
+ mLabels = labels == null ? new CharSequence[0] : labels;
+ }
+
public String getValue() {
if (!mLoaded) {
mValue = getSharedPreferences().getString(mKey,
@@ -135,6 +146,10 @@ public class ListPreference extends CameraPreference {
return mEntries[findIndexOfValue(getValue())].toString();
}
+ public String getLabel() {
+ return mLabels[findIndexOfValue(getValue())].toString();
+ }
+
protected void persistStringValue(String value) {
SharedPreferences.Editor editor = getSharedPreferences().edit();
editor.putString(mKey, value);
diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java
index f5ba733c9..09c96b26a 100644
--- a/src/com/android/camera/PhotoMenu.java
+++ b/src/com/android/camera/PhotoMenu.java
@@ -17,6 +17,7 @@
package com.android.camera;
import android.content.Context;
+import android.content.res.Resources;
import android.hardware.Camera.Parameters;
import android.view.LayoutInflater;
@@ -65,20 +66,26 @@ public class PhotoMenu extends PieController
mPopup = null;
mSecondPopup = null;
PieItem item = null;
+ final Resources res = mActivity.getResources();
// flash
if (group.findPreference(CameraSettings.KEY_FLASH_MODE) != null) {
item = makeItem(CameraSettings.KEY_FLASH_MODE, POS_FLASH, 5);
+ item.setLabel(res.getString(R.string.pref_camera_flashmode_label));
mRenderer.addItem(item);
}
// exposure compensation
if (group.findPreference(CameraSettings.KEY_EXPOSURE) != null) {
item = makeItem(CameraSettings.KEY_EXPOSURE, POS_EXP, 5);
+ item.setLabel(res.getString(R.string.pref_exposure_label));
mRenderer.addItem(item);
}
// camera switcher
if (group.findPreference(CameraSettings.KEY_CAMERA_ID) != null) {
item = makeItem(R.drawable.ic_switch_photo_facing_holo_light);
+ ListPreference lpref = group.findPreference(CameraSettings.KEY_CAMERA_ID);
item.setPosition(POS_SWITCH, 5);
+ item.setLabel(lpref.getLabel());
+ final PieItem fitem = item;
item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(PieItem item) {
@@ -91,6 +98,7 @@ public class PhotoMenu extends PieController
index = (index + 1) % values.length;
int newCameraId = Integer
.parseInt((String) values[index]);
+ fitem.setLabel(camPref.getLabel());
mListener.onCameraPickerClicked(newCameraId);
}
}
@@ -99,8 +107,11 @@ public class PhotoMenu extends PieController
}
// hdr
if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) {
+ ListPreference lp = group.findPreference(CameraSettings.KEY_CAMERA_HDR);
item = makeItem(R.drawable.ic_hdr);
+ item.setLabel(lp.getLabel());
item.setPosition(POS_HDR, 5);
+ final PieItem fitem = item;
item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(PieItem item) {
@@ -112,6 +123,7 @@ public class PhotoMenu extends PieController
int index = (pref.findIndexOfValue(pref.getValue()) + 1) % 2;
pref.setValueIndex(index);
onSettingChanged(pref);
+ fitem.setLabel(pref.getLabel());
}
}
});
@@ -121,10 +133,12 @@ public class PhotoMenu extends PieController
// more settings
PieItem more = makeItem(R.drawable.ic_settings_holo_light);
more.setPosition(POS_MORE, 5);
+ more.setLabel(res.getString(R.string.camera_menu_more_label));
mRenderer.addItem(more);
// white balance
if (group.findPreference(CameraSettings.KEY_WHITE_BALANCE) != null) {
item = makeItem(CameraSettings.KEY_WHITE_BALANCE, POS_WB, 5);
+ item.setLabel(res.getString(R.string.pref_camera_whitebalance_label));
more.addItem(item);
}
// settings popup
@@ -137,6 +151,7 @@ public class PhotoMenu extends PieController
CameraSettings.KEY_TIMER_SOUND_EFFECTS,
};
item = makeItem(R.drawable.ic_settings_holo_light);
+ item.setLabel(res.getString(R.string.camera_menu_settings_label));
item.setPosition(POS_SET, 5);
item.setOnClickListener(new OnClickListener() {
@Override
diff --git a/src/com/android/camera/PieController.java b/src/com/android/camera/PieController.java
index a9b8575ef..5ccab5e72 100644
--- a/src/com/android/camera/PieController.java
+++ b/src/com/android/camera/PieController.java
@@ -104,6 +104,7 @@ public class PieController {
}
PieItem item = makeItem(resid);
item.setPosition(position, count);
+ item.setLabel(pref.getTitle().toUpperCase());
mPreferences.add(pref);
mPreferenceMap.put(pref, item);
int nOfEntries = pref.getEntries().length;
@@ -116,6 +117,7 @@ public class PieController {
inner = makeItem(pref.getEntries()[i]);
}
inner.setPosition(i, nOfEntries);
+ inner.setLabel(pref.getLabels()[i]);
item.addItem(inner);
final int index = i;
inner.setOnClickListener(new OnClickListener() {
diff --git a/src/com/android/camera/drawable/TextDrawable.java b/src/com/android/camera/drawable/TextDrawable.java
index 2e86364e7..ac5f1ce92 100644
--- a/src/com/android/camera/drawable/TextDrawable.java
+++ b/src/com/android/camera/drawable/TextDrawable.java
@@ -37,6 +37,10 @@ public class TextDrawable extends Drawable {
private int mIntrinsicWidth;
private int mIntrinsicHeight;
+ public TextDrawable(Resources res) {
+ this(res, "");
+ }
+
public TextDrawable(Resources res, CharSequence text) {
mText = text;
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
@@ -49,11 +53,24 @@ public class TextDrawable extends Drawable {
mIntrinsicHeight = mPaint.getFontMetricsInt(null);
}
+ public void setText(CharSequence txt) {
+ mText = txt;
+ if (txt == null) {
+ mIntrinsicWidth = 0;
+ mIntrinsicHeight = 0;
+ } else {
+ mIntrinsicWidth = (int) (mPaint.measureText(mText, 0, mText.length()) + .5);
+ mIntrinsicHeight = mPaint.getFontMetricsInt(null);
+ }
+ }
+
@Override
public void draw(Canvas canvas) {
- Rect bounds = getBounds();
- canvas.drawText(mText, 0, mText.length(),
- bounds.centerX(), bounds.centerY(), mPaint);
+ if (mText != null) {
+ Rect bounds = getBounds();
+ canvas.drawText(mText, 0, mText.length(),
+ bounds.centerX(), bounds.centerY(), mPaint);
+ }
}
@Override
diff --git a/src/com/android/camera/ui/PieItem.java b/src/com/android/camera/ui/PieItem.java
index 6128e0422..6dbcb85d5 100644
--- a/src/com/android/camera/ui/PieItem.java
+++ b/src/com/android/camera/ui/PieItem.java
@@ -44,6 +44,7 @@ public class PieItem {
private Path mPath;
private OnClickListener mOnClickListener;
private float mAlpha;
+ private CharSequence mLabel;
// Gray out the view when disabled
private static final float ENABLED_ALPHA = 1;
@@ -59,6 +60,14 @@ public class PieItem {
mEnabled = true;
}
+ public void setLabel(CharSequence txt) {
+ mLabel = txt;
+ }
+
+ public CharSequence getLabel() {
+ return mLabel;
+ }
+
public void setPosition(int pos, int count) {
mPosition = pos;
mCount = count;
diff --git a/src/com/android/camera/ui/PieRenderer.java b/src/com/android/camera/ui/PieRenderer.java
index 0969e4e63..4374fa624 100644
--- a/src/com/android/camera/ui/PieRenderer.java
+++ b/src/com/android/camera/ui/PieRenderer.java
@@ -27,7 +27,6 @@ import android.graphics.PointF;
import android.graphics.RectF;
import android.os.Handler;
import android.os.Message;
-import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.view.animation.Animation;
@@ -35,6 +34,7 @@ import android.view.animation.Animation.AnimationListener;
import android.view.animation.LinearInterpolator;
import android.view.animation.Transformation;
+import com.android.camera.drawable.TextDrawable;
import com.android.gallery3d.R;
import java.util.ArrayList;
@@ -133,6 +133,7 @@ public class PieRenderer extends OverlayRenderer
private FadeOutAnimation mFadeOut;
private volatile boolean mFocusCancelled;
private PointF mPolar = new PointF();
+ private TextDrawable mLabel;
@@ -213,6 +214,7 @@ public class PieRenderer extends OverlayRenderer
mSliceRadius = res.getDimensionPixelSize(R.dimen.pie_item_radius);
mArcRadius = res.getDimensionPixelSize(R.dimen.pie_arc_radius);
mArcOffset = res.getDimensionPixelSize(R.dimen.pie_arc_offset);
+ mLabel = new TextDrawable(res);
}
private PieItem getRoot() {
@@ -269,6 +271,7 @@ public class PieRenderer extends OverlayRenderer
}
}
}
+ mLabel.setText("");
mOpen.clear();
mOpen.add(root);
layoutPie();
@@ -335,6 +338,15 @@ public class PieRenderer extends OverlayRenderer
private void layoutPie() {
layoutItems(0, getRoot().getItems());
+ layoutLabel(0);
+ }
+
+ private void layoutLabel(int level) {
+ int x = mPieCenterX;
+ int y = mArcCenterY - mArcRadius - (level + 2) * mRadiusInc;
+ int w = mLabel.getIntrinsicWidth();
+ int h = mLabel.getIntrinsicHeight();
+ mLabel.setBounds(x - w/2, y - h/2, x + w/2, y + h/2);
}
private void layoutItems(int level, List<PieItem> items) {
@@ -480,6 +492,7 @@ public class PieRenderer extends OverlayRenderer
for (PieItem item : getParent().getItems()) {
drawItem(Math.max(0, mOpen.size() - 2), canvas, item, alpha);
}
+ mLabel.draw(canvas);
}
if (hasOpenItem()) {
int level = getLevel();
@@ -491,6 +504,7 @@ public class PieRenderer extends OverlayRenderer
drawItem(level, canvas, inner, (mXFade != null) ? (1 - 0.5f * alpha) : 1);
}
}
+ mLabel.draw(canvas);
}
canvas.restoreToCount(state);
}
@@ -606,6 +620,7 @@ public class PieRenderer extends OverlayRenderer
} else {
deselect();
}
+ mLabel.setText("");
return false;
}
PieItem item = findItem(mPolar);
@@ -665,6 +680,8 @@ public class PieRenderer extends OverlayRenderer
if (item != null && item.isEnabled()) {
item.setSelected(true);
mCurrentItem = item;
+ mLabel.setText(mCurrentItem.getLabel());
+ layoutLabel(getLevel());
} else {
mCurrentItem = null;
}
@@ -690,6 +707,7 @@ public class PieRenderer extends OverlayRenderer
mCurrentItem = item;
if ((mCurrentItem != getOpenItem()) && mCurrentItem.hasItems()) {
openCurrentItem();
+ layoutLabel(getLevel());
}
} else {
mCurrentItem = null;
@@ -728,6 +746,7 @@ public class PieRenderer extends OverlayRenderer
mXFade = null;
ci.setSelected(false);
mOpening = false;
+ mLabel.setText("");
}
@Override