配置没有界面的Activity

一般我们的activity都是有一个用来显示内容的界面,但是有些时候并不需要界面显示,直接在launcher点击了应用图标就能执行相关的功能,例如一键锁屏、清理内存等等。实现这个功能其实只要将MainActivity的theme设置为Theme.NoDisplay,并在onCreate中不去调用setContentView这个方法。按住ctrl点进去Theme.NoDisplay这个主题可以看到这个Theme配置了下面这几项:

        <item name="windowBackground">@null</item>
        <item name="windowContentOverlay">@null</item>
        <item name="windowIsTranslucent">true</item>
        <item name="windowAnimationStyle">@null</item>
        <item name="windowDisablePreview">true</item>
        <item name="windowNoDisplay">true</item>

但是当我们的activity是继承自AppCompatActivity时,我们的主题就需要配置一个Theme.AppCompat的兼容主题类型,这个时候我们就可以重新声明一个style继承自AppTheme,然后配置上面这几项。另外还需要为每个item加上android命名空间,否则可能会报错:

<style name="AppTheme.NoDisplay" parent="AppTheme">
        <item name="android:windowBackground">@null</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@null</item>
        <item name="android:windowDisablePreview">true</item>
        <item name="android:windowNoDisplay">true</item>
    </style>

然后将该style配置到不需要界面的那个activity中去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章