唠叨

目前在开发中使用的都是 ​​appcompat-v7​​​ 下的各个兼容空间,当然也包括 ​​AppCompatActivity​​​ ,当 ​​activity​​​ 继承自 ​​AppCompatActivity​​​ 的时候,使用的主题必须也是 ​​Theme.AppCompat​​ 开头的主题样式,不然报下面错误:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)
...
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity atandroid.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:359)
atandroid.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328)
...

错误原因已经很明确了,说了使用​​AppCompatActivity​​​ 主题必须使用 ​​Theme.AppCompat theme​​ ;

好吧,我说多了,下面进入全屏实现:

动态实现

动态实现适合不管你使用的是普通的​​Activity​​​还是兼容包的​​AppCompatActivity​​ , 均可以使用;

Android - 总结下使用过的界面全屏的两种方式及其区别_java

比如:

public class WelActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 无 title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// set view
setContentView(R.layout.activity_wel);
}

静态实现

说白了,就是在 AndroidManifest.xml 中配置的时候,配置 全屏 theme

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

Android - 总结下使用过的界面全屏的两种方式及其区别_全屏_02

但这只适合继承普通Activity的使用,上面已经说了,使用​​AppCompatActivity​​​ 主题必须使用 ​​Theme.AppCompat theme​​ ;

如果你使用了​​AppCompatActivity​​ 就使用 动态实现的方式吧!