OSDN Git Service

Fix RTL layout of text in Battery history screen
authorAmith Yamasani <yamasani@google.com>
Wed, 28 Aug 2013 21:15:52 +0000 (14:15 -0700)
committerAmith Yamasani <yamasani@google.com>
Wed, 28 Aug 2013 22:14:16 +0000 (15:14 -0700)
Change the anchor position and alignment direction for text.

Bug: 10447666
Change-Id: Ida4161c738cf9a32cc8ff98037f3755046e64e33

src/com/android/settings/fuelgauge/BatteryHistoryChart.java

index 5145789..9642d7c 100644 (file)
@@ -654,19 +654,26 @@ public class BatteryHistoryChart extends View {
     @Override
     protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
-        
+
         final int width = getWidth();
         final int height = getHeight();
-        
+        final boolean layoutRtl = isLayoutRtl();
+        final int textStartX = layoutRtl ? width : 0;
+        mTextPaint.setTextAlign(layoutRtl ? Paint.Align.RIGHT : Paint.Align.LEFT);
+
         canvas.drawPath(mBatLevelPath, mBatteryBackgroundPaint);
         if (mLargeMode) {
-            canvas.drawText(mDurationString, 0, -mTextAscent + (mLineWidth/2),
+            int durationHalfWidth = mTotalDurationStringWidth / 2;
+            if (layoutRtl) durationHalfWidth = -durationHalfWidth;
+            canvas.drawText(mDurationString, textStartX, -mTextAscent + (mLineWidth / 2),
                     mTextPaint);
-            canvas.drawText(mTotalDurationString, (width/2) - (mTotalDurationStringWidth/2),
+            canvas.drawText(mTotalDurationString, (width / 2) - durationHalfWidth,
                     mLevelBottom - mTextAscent + mThinLineWidth, mTextPaint);
         } else {
-            canvas.drawText(mDurationString, (width/2) - (mDurationStringWidth/2),
-                    (height/2) - ((mTextDescent-mTextAscent)/2) - mTextAscent, mTextPaint);
+            int durationHalfWidth = mDurationStringWidth / 2;
+            if (layoutRtl) durationHalfWidth = -durationHalfWidth;
+            canvas.drawText(mDurationString, (width / 2) - durationHalfWidth,
+                    (height / 2) - ((mTextDescent - mTextAscent) / 2) - mTextAscent, mTextPaint);
         }
         if (!mBatGoodPath.isEmpty()) {
             canvas.drawPath(mBatGoodPath, mBatteryGoodPaint);
@@ -703,22 +710,22 @@ public class BatteryHistoryChart extends View {
 
         if (mLargeMode) {
             if (mHavePhoneSignal) {
-                canvas.drawText(mPhoneSignalLabel, 0,
+                canvas.drawText(mPhoneSignalLabel, textStartX,
                         height - mPhoneSignalOffset - mTextDescent, mTextPaint);
             }
             if (mHaveGps) {
-                canvas.drawText(mGpsOnLabel, 0,
+                canvas.drawText(mGpsOnLabel, textStartX,
                         height - mGpsOnOffset - mTextDescent, mTextPaint);
             }
             if (mHaveWifi) {
-                canvas.drawText(mWifiRunningLabel, 0,
+                canvas.drawText(mWifiRunningLabel, textStartX,
                         height - mWifiRunningOffset - mTextDescent, mTextPaint);
             }
-            canvas.drawText(mWakeLockLabel, 0,
+            canvas.drawText(mWakeLockLabel, textStartX,
                     height - mWakeLockOffset - mTextDescent, mTextPaint);
-            canvas.drawText(mChargingLabel, 0,
+            canvas.drawText(mChargingLabel, textStartX,
                     height - mChargingOffset - mTextDescent, mTextPaint);
-            canvas.drawText(mScreenOnLabel, 0,
+            canvas.drawText(mScreenOnLabel, textStartX,
                     height - mScreenOnOffset - mTextDescent, mTextPaint);
             canvas.drawLine(0, mLevelBottom+(mThinLineWidth/2), width,
                     mLevelBottom+(mThinLineWidth/2), mTextPaint);