如何处理 Android 上的屏幕旋转

发布于 2024-12-15 08:58:11 字数 801 浏览 0 评论 0原文

我有一个 ListActivity,我想在手机方向为纵向时显示它,并且我有另一个正常 Activity,我想在用户将手机旋转到横向模式时显示它。

一些代码:

  public class ListActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_PORTRAIT) {
            //Do stuff
        }else if (this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Intent myIntent = new Intent(getApplicationContext(), AnotherActivity.class);
            startActivity(myIntent);
        }
    }
}

这种方法有效,但存在一些问题。还有更正确的方法吗?这种方法的问题是,当你旋转手机并按下返回按钮时,屏幕就会变黑,因为手机没有旋转。那么我是否应该以另一种方式实现旋转,或者以某种方式修改后退按钮,以便用户无法返回到上一个 Activity?

I have a ListActivity which I want to show when the phone's orientation is portrait and I have another normal Activity which I want to show when the user rotates the phone to landscape mode.

Some code:

  public class ListActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_PORTRAIT) {
            //Do stuff
        }else if (this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Intent myIntent = new Intent(getApplicationContext(), AnotherActivity.class);
            startActivity(myIntent);
        }
    }
}

This approach works, but has some problems. Is there a more correct way? The problem with this method is that when you rotate your phone and press the back button, the screen just becomes black since the phone is not rotated. So should I implement the rotation in another way, or modify the back button in some way so that the user cant return to the previous Activity?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白况 2024-12-22 08:58:11

这是正常的方式。但等待时间很长——5秒。

还有另一种方法:

将方向更改注册为配置更改

A。

activity android:name=".SomeActivity" 
android:label="@string/app_name"
android:configChanges="orientation"

并将其作为配置更改进行处理。

B.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);

    SetupActivity();
}

It is a normal way. But it is long - 5 sec of waiting.

There is another way:

register orientation change as a configuration change

A.

activity android:name=".SomeActivity" 
android:label="@string/app_name"
android:configChanges="orientation"

And process it as a config change.

B.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);

    SetupActivity();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文