2013-06-02 2 views
3

У меня есть анимация в моем приложении, и они отлично работают. Но я хотел бы изменить поведение (например) между телефоном ui и планшетом ui. Итак, где я должен установить значения строк (например, android: duration = "xxx")?Где я должен хранить значения анимации?

[...] 
<translate 
    android:duration="700" 
    android:fromYDelta="90%p" 
    android:toYDelta="0"/> 
[...] 

Согласно official documentation, нет предпочтительного места.

+0

Вы пробовали 'папку values'? – Luksprog

+0

Пока нет. За исключением использования моего собственного XML-файла, следует ли использовать /res/values/dimens.xml? –

+0

Вы можете использовать файл размеров и предоставить одну папку для каждой необходимой конфигурации. – Luksprog

ответ

6

В папке values вы должны сохранить значение, которое вы хотите различать по размеру экрана. Например, у вас может быть папка с именем values по умолчанию и одна называется values-sw600dp, а там указывается значение для вашей продолжительности, которое предназначено только для экрана с наименьшей шириной 600dp.

Тогда в values и values-sw600dp вы можете иметь файл с именем translation.xml или любой другой описывает анимацию:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer name="duration">700</integer> 
</resources> 

И потом, где вы делаете вашу анимацию XML:

<translate 
    android:duration="@integer/duration" 
    android:fromYDelta="90%p" 
    android:toYDelta="0"/> 

Таким образом, вы можете укажите различные настройки для разных размеров устройств на основе имен ваших папок, так же, как вы делаете с drawables.

+1

Это именно то, что я искал, спасибо! Легко и, как вы сказали, точно так же, как я делаю с возможностью рисования! –

0

Чтобы проверить между ли устройство телефона или вкладки вы можете сделать XML в значениях папку с именем, как isTab.xml (или что вы хотите) и код в том, что будет

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="isTablet">false</bool> </resources>

и тот же XML в папке значения-XLarge но со значением истинного в XML т.е.

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="isTablet">true</bool> </resources>

Теперь, когда это вкладка то папка стоимость XLarge будет доступен. Вы можете получить значение в программе по

boolean isTab= getResources().getBoolean(R.bool.isTablet); 

и в зависимости от значения isTab вы можете установить длительность анимации динамически this

+0

Ну, тогда почему бы не сделать отдельный .xml в папках _valuesxxx_? –

+0

Вы должны сделать две отдельные папки с одним и тем же xml, кроме логического значения. –

+0

В любом случае, спасибо, но я думаю, что ответ Нила легче (по крайней мере, для того, что я хочу сделать), проверьте это! –

Смежные вопросы