From 2e4f9fe61b9a2ba445dc49ad4d2cf11ac079e101 Mon Sep 17 00:00:00 2001 From: Leo Hsu Date: Fri, 20 Apr 2018 10:40:08 +0800 Subject: [PATCH] Usage graphs support RTL style. Flips the canvas horizontally before drawing paths under RTL mode. Bug: 78008951 Test: manually verified graphs of wifi data usage, app data usage, and battery usage. Change-Id: I79286e9f3f98632e3a9710d42c3e197231a14c39 --- res/layout/usage_view.xml | 3 +-- src/com/android/settings/widget/UsageGraph.java | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/res/layout/usage_view.xml b/res/layout/usage_view.xml index 16b4916eff5..c24f28974ac 100644 --- a/res/layout/usage_view.xml +++ b/res/layout/usage_view.xml @@ -80,8 +80,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:orientation="horizontal" - android:layoutDirection="ltr"> + android:orientation="horizontal"> diff --git a/src/com/android/settings/widget/UsageGraph.java b/src/com/android/settings/widget/UsageGraph.java index da61607278f..7238e5de128 100644 --- a/src/com/android/settings/widget/UsageGraph.java +++ b/src/com/android/settings/widget/UsageGraph.java @@ -255,9 +255,15 @@ public class UsageGraph extends View { return; } + canvas.save(); + if (getLayoutDirection() == LAYOUT_DIRECTION_RTL) { + // Flip the canvas along the y-axis of the center of itself before drawing paths. + canvas.scale(-1, 1, canvas.getWidth() * 0.5f, 0); + } drawLinePath(canvas, mLocalProjectedPaths, mDottedPaint); drawFilledPath(canvas, mLocalPaths, mFillPaint); drawLinePath(canvas, mLocalPaths, mLinePaint); + canvas.restore(); BatteryUtils.logRuntime(LOG_TAG, "onDraw", startTime); }