summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/widget
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2011-09-08 18:57:17 -0700
committerJeff Sharkey <jsharkey@android.com>2011-09-08 19:02:31 -0700
commit5d70679c02a57416eac46581d7242e2382e4b973 (patch)
tree637855a2c71b46b765d7b58c383b27d0c9b657ff /src/com/android/settings/widget
parent9b9db3f966c86befa424b497266cb3493ac24977 (diff)
downloadpackages_apps_settings-5d70679c02a57416eac46581d7242e2382e4b973.zip
packages_apps_settings-5d70679c02a57416eac46581d7242e2382e4b973.tar.gz
packages_apps_settings-5d70679c02a57416eac46581d7242e2382e4b973.tar.bz2
Larger touch targets, snap to persisted value.
Extend ListView content to screen edges, and use InsetBoundsDrawable to draw separator and divider with expected padding. Sweep touch targets are now much larger. Snap sweep to persisted value, and fix NFE when parsing label value. Bug: 5274249 Bug: 5262865 Bug: 5242857 Change-Id: Ifa0f3e622767d5b4dc85a73d6340207e6038a429
Diffstat (limited to 'src/com/android/settings/widget')
-rw-r--r--src/com/android/settings/widget/ChartDataUsageView.java18
-rw-r--r--src/com/android/settings/widget/ChartSweepView.java44
2 files changed, 37 insertions, 25 deletions
diff --git a/src/com/android/settings/widget/ChartDataUsageView.java b/src/com/android/settings/widget/ChartDataUsageView.java
index cad2ed8..cb9c8d7 100644
--- a/src/com/android/settings/widget/ChartDataUsageView.java
+++ b/src/com/android/settings/widget/ChartDataUsageView.java
@@ -496,32 +496,32 @@ public class ChartDataUsageView extends ChartView {
public long buildLabel(Resources res, SpannableStringBuilder builder, long value) {
final CharSequence unit;
- float result = value;
- long labelValue = 1;
- if (result <= 100 * MB_IN_BYTES) {
+ final long unitFactor;
+ if (value <= 100 * MB_IN_BYTES) {
unit = res.getText(com.android.internal.R.string.megabyteShort);
- result /= MB_IN_BYTES;
- labelValue = MB_IN_BYTES;
+ unitFactor = MB_IN_BYTES;
} else {
unit = res.getText(com.android.internal.R.string.gigabyteShort);
- result /= GB_IN_BYTES;
- labelValue = GB_IN_BYTES;
+ unitFactor = GB_IN_BYTES;
}
+ final double result = (double) value / unitFactor;
+ final double resultRounded;
final CharSequence size;
if (result < 10) {
size = String.format("%.1f", result);
+ resultRounded = (unitFactor * Math.round(result * 10)) / 10;
} else {
size = String.format("%.0f", result);
+ resultRounded = unitFactor * Math.round(result);
}
- labelValue *= Float.parseFloat(size.toString());
final int[] sizeBounds = findOrCreateSpan(builder, sSpanSize, "^1");
builder.replace(sizeBounds[0], sizeBounds[1], size);
final int[] unitBounds = findOrCreateSpan(builder, sSpanUnit, "^2");
builder.replace(unitBounds[0], unitBounds[1], unit);
- return labelValue;
+ return (long) resultRounded;
}
/** {@inheritDoc} */
diff --git a/src/com/android/settings/widget/ChartSweepView.java b/src/com/android/settings/widget/ChartSweepView.java
index 33e90c8..7b6d887 100644
--- a/src/com/android/settings/widget/ChartSweepView.java
+++ b/src/com/android/settings/widget/ChartSweepView.java
@@ -45,11 +45,13 @@ public class ChartSweepView extends View {
private static final boolean DRAW_OUTLINE = false;
+ // TODO: clean up all the various padding/offset/margins
+
private Drawable mSweep;
private Rect mSweepPadding = new Rect();
/** Offset of content inside this view. */
- private Point mContentOffset = new Point();
+ private Rect mContentOffset = new Rect();
/** Offset of {@link #mSweep} inside this view. */
private Point mSweepOffset = new Point();
@@ -229,6 +231,8 @@ public class ChartSweepView extends View {
if (mLabelTemplate != null && mAxis != null) {
mLabelValue = mAxis.buildLabel(getResources(), mLabelTemplate, mValue);
invalidate();
+ } else {
+ mLabelValue = mValue;
}
}
@@ -333,9 +337,9 @@ public class ChartSweepView extends View {
// only start tracking when in sweet spot
final boolean accept;
if (mFollowAxis == VERTICAL) {
- accept = event.getX() > getWidth() - (mSweepPadding.right * 3);
+ accept = event.getX() > getWidth() - (mSweepPadding.right * 8);
} else {
- accept = event.getY() > getHeight() - (mSweepPadding.bottom * 3);
+ accept = event.getY() > getHeight() - (mSweepPadding.bottom * 8);
}
final MotionEvent eventInParent = event.copy();
@@ -392,6 +396,7 @@ public class ChartSweepView extends View {
}
case MotionEvent.ACTION_UP: {
mTracking = null;
+ mValue = mLabelValue;
dispatchOnSweep(true);
setTranslationX(0);
setTranslationY(0);
@@ -534,23 +539,30 @@ public class ChartSweepView extends View {
mMargins.bottom = mSweepPadding.bottom;
}
- mContentOffset.x = 0;
- mContentOffset.y = 0;
+ mContentOffset.set(0, 0, 0, 0);
// make touch target area larger
+ final int widthBefore = getMeasuredWidth();
+ final int heightBefore = getMeasuredHeight();
if (mFollowAxis == HORIZONTAL) {
- final int widthBefore = getMeasuredWidth();
final int widthAfter = widthBefore * 3;
- setMeasuredDimension(widthAfter, getMeasuredHeight());
- mContentOffset.offset((widthAfter - widthBefore) / 2, 0);
+ setMeasuredDimension(widthAfter, heightBefore);
+ mContentOffset.left = (widthAfter - widthBefore) / 2;
+
+ final int offset = mSweepPadding.bottom * 2;
+ mContentOffset.bottom -= offset;
+ mMargins.bottom += offset;
} else {
- final int heightBefore = getMeasuredHeight();
final int heightAfter = heightBefore * 3;
- setMeasuredDimension(getMeasuredWidth(), heightAfter);
+ setMeasuredDimension(widthBefore, heightAfter);
mContentOffset.offset(0, (heightAfter - heightBefore) / 2);
+
+ final int offset = mSweepPadding.right * 2;
+ mContentOffset.right -= offset;
+ mMargins.right += offset;
}
- mSweepOffset.offset(mContentOffset.x, mContentOffset.y);
+ mSweepOffset.offset(mContentOffset.left, mContentOffset.top);
mMargins.offset(-mSweepOffset.x, -mSweepOffset.y);
}
@@ -592,7 +604,7 @@ public class ChartSweepView extends View {
if (isEnabled() && mLabelLayout != null) {
final int count = canvas.save();
{
- canvas.translate(mContentOffset.x, mContentOffset.y + labelOffset);
+ canvas.translate(mContentOffset.left, mContentOffset.top + labelOffset);
mLabelLayout.draw(canvas);
}
canvas.restoreToCount(count);
@@ -602,18 +614,18 @@ public class ChartSweepView extends View {
}
if (mFollowAxis == VERTICAL) {
- mSweep.setBounds(labelSize, mSweepOffset.y, width,
+ mSweep.setBounds(labelSize, mSweepOffset.y, width + mContentOffset.right,
mSweepOffset.y + mSweep.getIntrinsicHeight());
} else {
- mSweep.setBounds(mSweepOffset.x, labelSize,
- mSweepOffset.x + mSweep.getIntrinsicWidth(), height);
+ mSweep.setBounds(mSweepOffset.x, labelSize, mSweepOffset.x + mSweep.getIntrinsicWidth(),
+ height + mContentOffset.bottom);
}
mSweep.draw(canvas);
}
public static float getLabelTop(ChartSweepView view) {
- return view.getY() + view.mContentOffset.y;
+ return view.getY() + view.mContentOffset.top;
}
public static float getLabelBottom(ChartSweepView view) {