2013-05-02 29 views
0

我知道如何在活動類中做到這一點,但這不符合我的需要。在我的類擴展視圖,一旦方法被調用,我想屏幕方向被鎖定。然後,一旦另一種方法被稱爲我想它被解鎖。在View類中鎖定屏幕方向 - Android

有沒有辦法,我可以我的類,它擴展視圖中做到這一點?

謝謝。

回答

1
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 

    setContentView(this.gameView); 

    if (this.gameView.isOrientationChange() == false) { 
     // Stop the screen orientation changing during an event 
     switch (this.getResources().getConfiguration().orientation) { 
      case Configuration.ORIENTATION_PORTRAIT: 
       this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
       break; 
      case Configuration.ORIENTATION_LANDSCAPE: 
       this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
       break; 
     } 
    } 
    else { 
     // allow screen rotations 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 
    } 
} 

在類擴展視圖中,有一個orientationChange布爾字段。這通過指示設備方向是否可以改變的方法來改變。這工作,但屏幕大小也改變方向時更改。所以如果有很多代碼依賴於大小和時間,那麼這可能會導致更多的問題而不是解決問題。

0

也許我有一個方法,只是寫下:

設置layoutParams.screenOrientation價值爲:ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIEDActivityInfo.SCREEN_ORIENTATION_LOCKED

然後,調用addViewupdateViewLayout更新此的LayoutParams。