我们都知道,使用多窗口的时候应用界面就会缩小很多,我们需要考录不同屏幕尺寸的适配模式,所以尽量不要出现屏幕尺寸变化过大界面无法正常显示的情况~
那么,
既然多窗口这么烦啊哈哈,
我们如何禁用呢?
禁用多窗口
<code>resizeableActivity</code>在<code>targetSdkVersion</code>为24以上才起作用,否则该属性无效。
// Application中
// false表示禁用,默认为true
android:resizeableActivity="false"
当<code>targetSdkVersion</code>低于24时,活动不允许横竖屏切换,应用也将不支持多窗口模式。
// 在activity中,portrait表示只支持竖屏,landscape只支持横屏
android:screenOrientation="portrait"
多窗口下的生命周期
// FirstApp
public class MainActivity extends AppCompatActivity {
private static final String TAG = "FIRST_APP";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "onRestart");
}
}
// SecondApp同上
启动FirstApp
FirstApp:onCreate() -> onStart() -> onResume()
当FirstApp处于onResume()状态时,进入多窗口模式,MainActivity经历了重新创建的过程。
FirstApp:onPause() -> onStop() -> onDestory() -> onCreate() -> onStart() -> onResume() ->onPause()
启动SecondApp
SecondApp:onCreate() -> onStart() -> onResume()
操作FirstApp
SecondApp:onPause()
FirstApp:onResume()
PS
- 最好不要在活动的<code>onPause()</code>方法中处理视频播放器的暂停,应该在<code>onStop()</code>总进行处理,在<code>onStart()</code>中回复视频播放。
- 在<code>AndroidManifest.xml</code>这对活动进行配置,活动不会被重建。将屏幕变化通知到Activity中的<code>onConfigurationChanged()</code>方法中。
// activity中
android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
网友评论