【问题标题】:Orientation mode: Show Portrait once and then as per device oreinetation方向模式:显示一次纵向,然后根据设备方向显示
【发布时间】:2015-03-27 08:54:01
【问题描述】:

对于 Android 应用,我想在每次启动时以纵向模式显示我的应用的着陆屏幕,无论设备方向如何。

但是,稍后当 Activity/Fragment 完全启动时,它应该根据设备方向支持横向和纵向模式。

【问题讨论】:

  • 登陆屏幕是什么意思。是闪屏吗?
  • @John Landing 屏幕是我的应用程序中显示的第一个屏幕。
  • 我假设,您希望最初将第一个屏幕设置为纵向,并将第一个屏幕的方向更改为根据设备方向。对吧?
  • @John:没错。当第一个屏幕显示给用户,然后当用户改变设备方向时,屏幕应该旋转!

标签: android screen-orientation


【解决方案1】:

试试 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

将其设置为纵向,然后使用

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

一旦您的着陆屏幕完成以再次允许两个方向。

【讨论】:

  • 如何知道登陆画面已经完成?我正在使用片段并将其附加到 Activity。
  • ...在您最初的帖子中,您没有提到任何关于想知道片段何时完成的事情。请编辑您的问题,使其更具体。
  • 将此设置为仅在您的主要活动中。
【解决方案2】:

这样做,

设置你的登陆屏幕默认为纵向模式,

 <activity
            android:name=".SplashActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
 </activity>

【讨论】:

    【解决方案3】:

    在您的 FirstScreen Activity 中这样做。

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    

    public class MainActivity extends Activity {
        final int DELAY_MILLISECOND=5000; // Wait for 5 seconds to load
        final Handler handler = new Handler();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
           handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
                Toast.makeText(getApplicationContext(),"Changed Orientation to default",Toast.LENGTH_SHORT).show();
            }
        }, DELAY_MILLISECOND);
    
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-22
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多