2014-03-10 2 views
0

Я думал, что мне удалось настроить разные размеры экрана (я использовал эмуляторы eclipse и создавал различные размеры экрана для тестирования своего приложения), но когда я тестирую свое приложение на реальных устройствах, результат моего приложения меняется. например, для большого размера экрана, я установил свой эмулятор на Nexus S, и он будет работать и выглядит отлично, но затем я пытаюсь использовать Alcatel One Touch Fierce (реальное устройство), которое по-прежнему считается большим размером экрана, а приложение просто немного немного, затем я воспроизвожу его на другом устройстве, которое также считается большим размером экрана, которое приложение будет играть так же, как эмулятор. Итак, я думаю, почему вопрос? samble, как я проверяю для различных размеров экрана ниже:Настройка на разные размеры экрана не работает?

DisplayMetrics displayMetrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
    switch(displayMetrics.densityDpi) 
    { 
    case DisplayMetrics.DENSITY_LOW: 
     // layout for small sized devices. 

     break; 
    case DisplayMetrics.DENSITY_MEDIUM: 
     // layout for medium-sized devices. 


     break; 
    case DisplayMetrics.DENSITY_HIGH: 
        // layout for large devices. 

     break; 

    case DisplayMetrics.DENSITY_XHIGH: 

        // layout for really large devices. 
     break; 

ответ

1

Перед вашим сазе, попытайтесь напечатать значение плотности, как это:

Log.i("Sushil", "displaymetrics.densityDpi : " + displaymetrics.densityDpi); 

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

Надеюсь, что это поможет.

+0

хорошо конечно, но сколько разных размеров есть в одном из моих уже определенных утверждений дела? неужели есть более обобщенный способ иметь дело с разными размерами? –

+0

@RoySorvari Да. Обычно мы поддерживаем его с использованием разных макетов. Тем не менее, поскольку у них так много устройств для Android и поставляется с множеством различных плотностей и разрешений, определенных OEM-производителями, действительно сложно установить стандарт, который работает для всех. Таким образом, может потребоваться жесткое кодирование нескольких значений. Также вы можете следить за ссылками ниже для стандартного процесса: http://stackoverflow.com/questions/12242111/application-skeleton-to-support-multiple-screen/12258061#12258061 http://developer.android.com/training/multiscreen /index.html – Sushil

1

Я не вижу ничего плохого в результатах. если вы запустите приложение, разработанное на эмуляторе телефона ----- на планшете, макеты не совпадут.

Вы должны решить, хотите ли вы поддерживать разные размеры экрана или нет, тогда вам придется создавать разные макеты для разных размеров экрана и устанавливать соответствующий макет в методе OnCreate вашей деятельности.

вот как проверить, если устройство является таблетка или телефон:

if(isTablet==true){ 
    setContentView(R.Layout.my_tablet_layout); 
}else{ 
    setContentView(R.Layout.my_phone_layout); 
} 



public boolean IsTablet() { 

    return (getApplicationContext().getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; 

} 
+0

, так что вы говорите, что в моих данных случаях есть еще более разные плотности экрана? если true, то я должен сделать случай для обработки каждой разной плотности? –

+0

ваши случаи являются seraching для плотности экрана (pixesl на дюйм), а не размером экрана. галактика s3 может иметь большую плотность, чем 7-дюймовый планшет. , чтобы решить проблему плотностей, вам нужно использовать dp в xml вместо px. таким образом, макет не будет переполнен устройством высокой плотности. пример: используйте этот 'android: layout_height =" 5dp "' не этот 'android: layout_height =" 5px "' , чтобы решить проблему с размерами экрана, вы должны использовать ответ выше. и не забывайте никогда не использовать px в ваших макетах. –

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