在View类中锁定屏幕方向 - Android

时间:2013-05-02 22:02:14

标签: java android

我知道如何在活动类中执行此操作,但这不符合我的需要。在扩展View的类中,一旦调用了一个方法,我希望屏幕方向被锁定。然后,一旦调用另一种方法,我希望它能够被解锁。

有没有办法可以在我的课程中扩展View?

感谢。

3 个答案:

答案 0 :(得分: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);
    }
}

在扩展View的类中,有一个orientationChange布尔字段。这是通过指示是否可以改变设备方向的方法来改变的。这有效,但是当方向改变时,屏幕尺寸也会改变。因此,如果有很多代码依赖于大小并且是定时的,那么这可能会导致比解决更多的问题。

答案 1 :(得分:0)

我认为你在找什么,是configChanges看到doc - > http://developer.android.com/reference/android/R.attr.html#configChanges

答案 2 :(得分:0)

也许我有一个方法,只记下:

layoutParams.screenOrientation值设置为:ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIEDActivityInfo.SCREEN_ORIENTATION_LOCKED

然后,请致电addViewupdateViewLayout更新此LayoutParams。