Question

I had an application of timer and my app should always be in LandScape mode. I am getting width and Height of my main layout in code. In manifest, I had used:

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

And in activity :

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());


            }
        });

It gives height and width in landscape mode. But when i lock my phone, It gives height and width in portrait mode. What I am doing wrong I don't know. I am working on ANdroid 2.1. Can anyone help me solving this.

Logs before locking:

08-11 15:19:08.996: INFO/NotificationService(1156): enqueueToast pkg=com.Timer callback=android.app.ITransientNotification$Stub$Proxy@45b190a0 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 callback=android.app.ITransientNotification$Stub$Proxy@45a6b670 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 callback=android.app.ITransientNotification$Stub$Proxy@45a63ed0 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 callback=android.app.ITransientNotification$Stub$Proxy@45afcbe0 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: After locking :

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.

Before locking : OnGlobalLayoutListener/ Footer height :442 Width :854 After locking : OnGlobalLayoutListener/ Footer height :816 Width :480

Was it helpful?

Solution

The issue is that your application is not in foreground and other applications may request to allow portrait or only portrait.

You receive current global layout - which may be portrait. Probably you receive onPause() before screen is locked and onResume() when your application is back in foreground - if you don't want to get layout when not in background, simply use a bool to store if you're the foreground app.

OTHER TIPS

check after removing "android:configChanges="keyboardHidden|orientation"

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top