2014-11-13 2 views
0

Я адаптирую существующее приложение для телефона для планшетов. Проблема заключается в том, что в пользовательском интерфейсе между телефоном и планшетом существуют небольшие различия.Рекомендации по организации разного кода для телефона и планшета

Например, на телефоне есть целевая страница, а затем страница входа с кнопкой отмены, которая также возвращает целевую страницу.

На планшете фрагмент входа находится на целевой странице и кнопка отмены удалена. Это означает, что я сделал чек, чтобы узнать, является ли устройство планшетом, и если да, я не знаю, как отобразить кнопку отмены.

Это кажется взломанным для меня, и мне было интересно, есть ли лучший способ сделать это. Благодарю.

+1

Вы можете определить/управлять различными файлами макета XML и сделаны соответствующие изменения. –

ответ

3

Планшет или телефон?

Прежде всего, вы должны знать, на каком устройстве вы находитесь. Элегантный способ (на мой взгляд), чтобы объявить ресурс в config.xml:

значения/config.xml

<bool name="isTablet">false</bool> 

значения-sw600dp/config.xml

<bool name="isTablet">true</bool> 

Затем расширяет Application и сохраняет тип устройства, использующего приложение:

public static boolean IS_TABLET = false; 
public void onCreate() { 
    super.onCreate(); 
    MyApp.IS_TABLET  = getResources().getBoolean(R.bool.isTablet); 
} 

Обработка Дифференц просмотр

Для обработки Дифференц просмотра использовать дифферент папку/Рез

/макет для просмотра телефона
/макет sw600dp для 7" таблетки (вы можете просто использовать эту папку, если нет никакой разницы между 7 ET 10 ")
/макетом-sw720dp для 10" таблеток

код обработки

Два решения здесь:

1 Изменение между видами являются незначительными: сохранить ту же активность/фрагмент и добавить условие, как

if(MyAPP.IS_TABLET) { 
    // DO something on tablet 
} else { 
    // Do something on phone 
} 

2- Если планшет и телефон очень разные создать новый активность/фрагмент с суффиксом вроде:
HomeActvity => HomeActivityTablet И добавьте условие при загрузке этого конкретного вида.

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

Exemple

Посмотрите на Google IO app's исходный код