2011-08-11 2 views
0

타이머 응용 프로그램이 있고 내 응용 프로그램이 항상 LandScape 모드 여야합니다. 나는 코드에서 내 기본 레이아웃의 너비와 높이를 얻고있다. 매니페스트에서, 나는 사용했다 : Android에서 인물 모드로 가로 모드 변경

 <activity android:name=".MActivity" 
         android:label="@string/app_name" 
         android:screenOrientation="landscape" 
android:theme="@android:style/Theme.NoTitleBar" 
       android:configChanges="keyboardHidden|orientation"> 

그리고 활동

가 :

layout = (LinearLayout)findViewById(R.id.Rishikesh); 
     ViewTreeObserver vto = layout.getViewTreeObserver(); 
     vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

      public void onGlobalLayout() { 
       int finalHeight, finalWidth; 
       finalHeight = layout.getMeasuredHeight(); 
       finalWidth = layout.getMeasuredWidth(); 
       Log.w("*************", "OnGlobalLayoutListener/ Footer height :"+layout.getHeight()+" Width :"+layout.getWidth()); 


      } 
     }); 

그것은 가로 모드에서 높이와 폭을 제공합니다. 하지만 휴대 전화를 잠그면 세로 모드에서 높이와 너비가 제공됩니다. 내가 뭘 잘못하고 있는지 모르겠다. 나는 ANdroid 2.1에서 일하고있다. 누구든지이 문제를 해결할 수 있습니까? 잠금 전에

로그 :

08-11 15:19:08.996: INFO/NotificationService(1156): enqueueToast pkg=com.Timer [email protected] duration=100 
08-11 15:19:09.005: WARN/*************(2369): OnGlobalLayoutListener/ Footer height :442 Width :854 
08-11 15:19:09.995: INFO/NotificationService(1156): enqueueToast pkg=com.Timer [email protected] duration=100 
08-11 15:19:10.005: WARN/*************(2369): OnGlobalLayoutListener/ Footer height :442 Width :854 
08-11 15:19:10.335: DEBUG/dalvikvm(2075): GC freed 6414 objects/550768 bytes in 212ms 
08-11 15:19:10.345: ERROR/webcoreglue(2075): The real object has been deleted 
08-11 15:19:10.345: ERROR/webcoreglue(2075): The real object has been deleted 
08-11 15:19:10.345: ERROR/webcoreglue(2075): The real object has been deleted 
08-11 15:19:10.355: DEBUG/webviewglue(2075): nativeDestroy view: 0xa6bf48 
08-11 15:19:10.996: INFO/NotificationService(1156): enqueueToast pkg=com.Timer [email protected] duration=100 
08-11 15:19:10.996: WARN/*************(2369): OnGlobalLayoutListener/ Footer height :442 Width :854 
08-11 15:19:11.995: INFO/NotificationService(1156): enqueueToast pkg=com.Timer [email protected] duration=100 
08-11 15:19:11.995: WARN/*************(2369): OnGlobalLayoutListener/ Footer height :442 Width :854 
08-11 15:19:12.065: DEBUG/WindowManager(1156): I'm tired mEndcallBehavior=0x2 
08-11 15:19:12.295: INFO/power(1156): *** set_screen_state 0 

LOGS : 잠금 후 : 잠금 전에

08-11 15:19:12.315: DEBUG/WifiService(1156): ACTION_SCREEN_OFF 
08-11 15:19:12.325: DEBUG/SurfaceFlinger(1156): About to give-up screen, flinger = 0x11cf18 
08-11 15:19:12.385: DEBUG/ViewFlipper(1369): updateRunning() mVisible=false, mStarted=true, mUserPresent=false, mRunning=false 
08-11 15:19:12.585: DEBUG/dalvikvm(1156): GC freed 18364 objects/926968 bytes in 153ms 
08-11 15:19:12.725: INFO/WindowManager(1156): Setting rotation to 0, animFlags=0 
08-11 15:19:12.725: INFO/ActivityManager(1156): Start proc com.android.settings for broadcast com.android.settings/.widget.SettingsAppWidgetProvider: pid=2402 uid=1000 gids={3003, 1015, 3002, 3001} 
08-11 15:19:12.755: INFO/dalvikvm(2402): Debugger thread not active, ignoring DDM send (t=0x41504e4d l=38) 
08-11 15:19:12.765: INFO/ActivityManager(1156): Config changed: { scale=1.0 imsi=0/0 loc=en_IN touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34} 
08-11 15:19:12.825: WARN/*************(2369): OnGlobalLayoutListener/ Footer height :816 Width :480 
08-11 15:19:12.885: INFO/dalvikvm(2402): Debugger thread not active, ignoring DDM send (t=0x41504e4d l=44) 
08-11 15:19:12.905: INFO/ActivityManager(1156): Process com.touchnote.android (pid 2382) has died. 

: OnGlobalLayoutListener/바닥 글 높이 : 442 폭 : 잠금 후 854 : OnGlobalLayoutListener/바닥 글 높이 : 816 폭 : 480

답변

0

응용 프로그램이 포 그라운드에 있지 않으며 다른 응용 프로그램에서 세로 또는 세로만 허용하도록 요청할 수 있습니다.

당신은 현재의 글로벌 레이아웃을받습니다. 아마도 화면이 잠기기 전에 onPause()를 받고 응용 프로그램이 포 그라운드로 돌아 왔을 때 onResume()을받을 것입니다. 배경이 아닌 경우 레이아웃을 얻지 않으려면 포어 그라운드 앱인 경우 bool을 사용하여 저장하십시오.

+0

사실, 내 onGlobalLayout 처음 호출 할 때 실제로 높이 및 너비를 서버에 보내야합니다. 사용자가 전화를 걸기 전에 전화기를 잠그면 로그에 표시되는 세로 모드의 높이와 너비가 필요합니다. 내가 foregroung을 확인하여 그것을 할 수 있지만 그것은 복잡한 논리입니다. 오리엔테이션 변화를 막을 수있는 방법이 있습니까? 버그입니까 아니면 다른 것이 있습니까 ?? – RiksAndroid

+0

안녕하세요 wojciechka, 내 ap가 시작되는대로 데이터를 보내야합니다. 그래서, 나는이 논리를 적용 할 수 없다. 초상화로 변하지 않습니다. 우리는 휴대 전화가 PC에서 잠금 모드에있을 때 응용 프로그램을 시작할 때 가로 방향이지만 세로 방향으로 높이와 너비를 제공합니다. – RiksAndroid

1

"android:configChanges="keyboardHidden|orientation"

+0

아직 작동하지 않습니다. 다음은 로그입니다. – RiksAndroid

+0

내 질문에 위의 미안합니다 – RiksAndroid