簡體   English   中英

Android 中的橫向模式更改為縱向

[英]Landscape Mode change to portrait in Android

我有一個計時器應用程序,我的應用程序應該始終處於 LandScape 模式。 我在代碼中獲取我的主要布局的寬度和高度。 在清單中,我使用過:

     <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 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

日志:鎖定后:

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

刪除“ android:configChanges="keyboardHidden|orientation"后檢查

問題是您的應用程序不在前台,其他應用程序可能會請求允許縱向或僅縱向。

您會收到當前的全局布局 - 可能是縱向的。 可能您在屏幕鎖定之前收到 onPause() ,當您的應用程序返回前台時收到 onResume() - 如果您不想在不在后台時獲取布局,如果您是前台應用程序,只需使用 bool 進行存儲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM