From 783be0a24f328d7e781b5765b7688c55fb24c89c Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Fri, 6 May 2011 14:12:13 -0700 Subject: [PATCH] Fixes in UsageBarPreference The widget layout that was used resulted in a clipped usage bar. It also had a 6dip left offset inherited from the default layout which adds margin after the text (even if the text is empty here). Used a custom layout for the whole preference to fix this issue. Other fixes in the drawing code to prevent accumulative rounding issues. Change-Id: Ief9bf85260345355615c9670624d86f0893eb2d2 --- res/layout/preference_memoryusage.xml | 19 ++++++++++++------ .../android/settings/deviceinfo/Memory.java | 2 +- .../deviceinfo/PercentageBarChart.java | 20 ++++++++++--------- .../deviceinfo/UsageBarPreference.java | 6 +++--- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/res/layout/preference_memoryusage.xml b/res/layout/preference_memoryusage.xml index 60b2ba86edb..28825358a37 100644 --- a/res/layout/preference_memoryusage.xml +++ b/res/layout/preference_memoryusage.xml @@ -13,17 +13,24 @@ See the License for the specific language governing permissions and limitations under the License. --> + - + - + diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java index 1e10c58ac4d..93b0f83925f 100644 --- a/src/com/android/settings/deviceinfo/Memory.java +++ b/src/com/android/settings/deviceinfo/Memory.java @@ -27,9 +27,9 @@ import android.app.DownloadManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; +import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.IntentFilter; -import android.content.DialogInterface.OnCancelListener; import android.content.pm.ApplicationInfo; import android.content.res.Resources; import android.graphics.drawable.ShapeDrawable; diff --git a/src/com/android/settings/deviceinfo/PercentageBarChart.java b/src/com/android/settings/deviceinfo/PercentageBarChart.java index 7d023010efd..95973c40480 100644 --- a/src/com/android/settings/deviceinfo/PercentageBarChart.java +++ b/src/com/android/settings/deviceinfo/PercentageBarChart.java @@ -71,20 +71,21 @@ public class PercentageBarChart extends View { final int width = right - left; - int lastX = left; + float lastX = left; if (mEntries != null) { for (final Entry e : mEntries) { - final int entryWidth; - if (e.percentage == 0f) { - entryWidth = 0; + final float entryWidth; + if (e.percentage == 0.0f) { + entryWidth = 0.0f; } else { - entryWidth = Math.max(mMinTickWidth, (int) (width * e.percentage)); + entryWidth = Math.max(mMinTickWidth, width * e.percentage); } - final int nextX = lastX + entryWidth; - if (nextX >= right) { - break; + final float nextX = lastX + entryWidth; + if (nextX > right) { + canvas.drawRect(lastX, top, right, bottom, e.paint); + return; } canvas.drawRect(lastX, top, nextX, bottom, e.paint); @@ -92,13 +93,14 @@ public class PercentageBarChart extends View { } } - canvas.drawRect(lastX, top, lastX + width, bottom, mEmptyPaint); + canvas.drawRect(lastX, top, right, bottom, mEmptyPaint); } /** * Sets the background for this chart. Callers are responsible for later * calling {@link #invalidate()}. */ + @Override public void setBackgroundColor(int color) { mEmptyPaint.setColor(color); } diff --git a/src/com/android/settings/deviceinfo/UsageBarPreference.java b/src/com/android/settings/deviceinfo/UsageBarPreference.java index e9909f19a4e..5aeaef59735 100644 --- a/src/com/android/settings/deviceinfo/UsageBarPreference.java +++ b/src/com/android/settings/deviceinfo/UsageBarPreference.java @@ -36,17 +36,17 @@ public class UsageBarPreference extends Preference { public UsageBarPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - setWidgetLayoutResource(R.layout.preference_memoryusage); + setLayoutResource(R.layout.preference_memoryusage); } public UsageBarPreference(Context context) { super(context); - setWidgetLayoutResource(R.layout.preference_memoryusage); + setLayoutResource(R.layout.preference_memoryusage); } public UsageBarPreference(Context context, AttributeSet attrs) { super(context, attrs); - setWidgetLayoutResource(R.layout.preference_memoryusage); + setLayoutResource(R.layout.preference_memoryusage); } public void addEntry(float percentage, int color) {