2011-12-15 10 views
1

В моем приложении я хочу показать экраны в соответствии с ориентацией. Я знал: всякий раз, когда устройство ориентировано, вызывается sublayout(). В соответствии с этой точкой зрения я пишу вот так:Изменить ориентацию экрана в Blackberry?

Здесь StartUp - другое имя класса;

Это мой LoadingScreen.java Класс;

public class LoadingScreen extends MainScreen 
{ 
public LoadingScreen() 
{  
    createGUI(); 
} 

protected void sublayout(int width, int height) 
{ 
    StartUp.screenOrientation();   
    if(StartUp.isLandscape) 
    { 
     deleteAll(); 
     createGUI();    
     invalidate();   
    } 
    else 
    { 
     deleteAll(); 
     orientGUI();    
     invalidate(); 
    } 
    super.sublayout(width,height); 
} 

public void createGUI() 
{ 
    //For LANDSCAPE Display; 
} 

public void orientGUI() 
{ 
    //For PORTRAIT Display; 
} 
} 

screenOrientation() метод заключается в следующем:

public static void screenOrientation() 
{ 
    if(Display.getOrientation()==Display.ORIENTATION_LANDSCAPE)  
    { 
     isLandscape=true; 
     width=480; 
     height=360; 
    } 
    else 
    { 
     isLandscape=false; 
     width=360; 
     height=480; 
    } 
} 

Я получаю экран в обоих режимах ориентации. Моя проблема заключается в том, что если я возьму один текстовый поле и введите что-то в режиме LANDSCAPE и ориентируется на режим PORTRAIT, данные исчезнут. Потому что я вызываю createGUI(); или orientGUI(); методы в sublayout().

Еще одна проблема, которую я получаю в Сенсорный экран:

Если я хочу, чтобы ввести текст в любом textboxField Он открывает «клавиатуру». Это не проблема. Главное, всякий раз, когда клавиатура открывает/скрывает оба раза, снова вызывает sublayout() этого класса. Поэтому я получаю обновленный экран.

Итак, есть ли другой способ получить ориентацию? Если это поможет мне.

ответ

2

Для решения первой проблемы у вас есть два варианта.

  • Не удаляйте поля, просто перерисуйте экран на другую ориентацию .

или

  • Сохранить значение textboxfield, прежде чем удалить поле и после изменения ориентации, установите значение textboxfield с сохраненным значением. Вам нужно будет даже получить позицию курсора и установить .

Для решения второго выпуска

После изменения ориентации, установить новую переменную "currentWidth", как Display.getWidth(). Затем, когда вы звоните в sublayout(), проверьте Display.getWidth() и посмотрите, соответствует ли он currentWidth. Если его равное значение означает, что ориентация не изменилась. Если нет, ориентация изменилась.

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

+0

Я не знаю, как перерисовать экран? – alishaik786

+0

перерисовать я имею в виду «не удалять поля», просто сбросьте размеры кнопок, измените фоновое изображение, если у вас есть и т. Д. – rfsk2010

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