Ответ 1
Это довольно поздно, чтобы ответить на этот вопрос, но я хочу поделиться методом, который я только что узнал. Сначала я расскажу о том, что упоминается другими.
Начните с спецификации.
Нам нужно построить что-то вроде:
login --> take picture --> win prize
В RTL он станет следующим:
ezirp niw <-- erutcip ekat <-- nigol
Таким образом, большой вопрос заключается в том, как мы переворачиваем рисоваемую стрелку, назовем ее arrow_right.png
:
-->
и в RTL вы хотите, чтобы это было так:
<--
Для Android >= 19
Как уже упоминалось, мы можем использовать флаг autoMirrored=true
. (доступно из API19)
Использование:
<ImageView ...
src="@drawable/arrow_right"
autoMirrored="true" />
Активы:
├── drawable-xxxhdpi
└── arrow_right.png
├── drawable-xxhdpi
└── arrow_right.png
├── drawable-xhdpi
└── arrow_right.png
├── drawable-hdpi
└── arrow_right.png
├── drawable-mdpi
└── arrow_right.png
Обратите внимание, что:
-
arrow_right.png
внутриdrawable-*
содержат-->
Примечание: Единственным недостатком является то, что он не поддерживает обратную совместимость.
Для Android < 19, Option 1
Как указывали другие, вы можете использовать опцию ldrtl
. (doc: Предоставление ресурсов)
Использование:
<ImageView ...
src="@drawable/arrow_right"
autoMirrored="true" />
Активы:
├── drawable-xxxhdpi
└── arrow_right.png
├── drawable-xxhdpi
└── arrow_right.png
├── drawable-xhdpi
└── arrow_right.png
├── drawable-hdpi
└── arrow_right.png
├── drawable-mdpi
└── arrow_right.png
├── drawable-ldrtl-xxxhdpi
└── arrow_right.png
├── drawable-ldrtl-xxhdpi
└── arrow_right.png
├── drawable-ldrtl-xhdpi
└── arrow_right.png
├── drawable-ldrtl-hdpi
└── arrow_right.png
├── drawable-ldrtl-mdpi
└── arrow_right.png
Обратите внимание, что:
-
arrow_right.png
внутриdrawable-*
содержат-->
-
arrow_right.png
внутриdrawable-ldrtl-*
содержат<--
.
Примечание: В этом методе нет ничего плохого, за исключением того, что вам нужно подготовить файлы 10x активов. Поэтому он приводит меня к следующему варианту.
Для Android < 19, Option 2
Этот параметр будет использовать атрибуты rotationY="180"
. (доступно из API11)
Если вы установите rotationY="180"
на ImageView
, -->
превратится в <--
.
Итак, мы можем сделать что-то вроде следующего.
Использование:
<ImageView ...
src="@drawable/arrow_right"
android:rotationY="@integer/angle_rtl_180" />
Активы:
drawable
├── drawable-xxxhdpi
└── arrow_right.png
├── drawable-xxhdpi
└── arrow_right.png
├── drawable-xhdpi
└── arrow_right.png
├── drawable-hdpi
└── arrow_right.png
├── drawable-mdpi
└── arrow_right.png
├── values
└── integers.xml
├── values-ldrtl
└── integers.xml
Примечание:
-
arrow_right.png
содержит-->
-
values/integers
содержит<integer name="angle_rtl_180">0</integer>
-
values-ldrtl/integers
содержит<integer name="angle_rtl_180">180</integer>
Замечания: вам нужен только один набор активов, и это решение можно использовать из API 11, и использование достаточно просто, просто добавив android:rotationY="@integer/angle_rtl_180"
.
Надеюсь, что это поможет!