Android 无界面Activity

应项目需求要实现一个无界面的Activity
各种网址试了一遍界面是没了,但是无法点击桌面上的图标,各种属性就只是透明而已!

要求:不仅仅透明、还要能点击下面的图标、不需要setContentView(R.layout.activity_main) !

其实很简单上代码了,下面是我Activity的主题style,主要是设置为透明

 <style name="AppThemeTranslucent" parent="AppTheme.NoBar">
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
    </style>

看一下我Activity的代码,并没有写入布局,还有去除标题栏的代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags( WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,  WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}

此时运行起来确实没有界面了,但只是透明的虽然没有设置布局但还是不能点击到桌面上的图标,于是...

 Window window = this.getWindow();
        WindowManager m = window.getWindowManager();
        Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
        WindowManager.LayoutParams p = window.getAttributes(); // 获取对话框当前的参数值
        p.height = 0; // 高度设置为0
        p.width = 0;//宽0
        p.gravity = Gravity.CENTER;
        window.setAttributes(p);

下面是全部代码,哈哈,我把布局大小设置为0了,这样就可以了,实现了真正的无界面!

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags( WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,  WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

        /*
         * 将对话框的大小按屏幕大小的百分比设置
         */
        Window window = this.getWindow();
        WindowManager m = window.getWindowManager();
        Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
        WindowManager.LayoutParams p = window.getAttributes(); // 获取对话框当前的参数值
        p.height = 0; // 高度设置为0
        p.width = 0;//宽0
        p.gravity = Gravity.CENTER;
        window.setAttributes(p);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,812评论 25 709
  • 【Android Activity】 什么是 Activity? 四大组件之一,通常一个用户交互界面对应一个 ac...
    Rtia阅读 3,864评论 3 18
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,772评论 0 17
  • 昨天想到第一次出国旅游期间留下的最深的印象,发现最深的竟是第一印象的感觉,突然想起了那句人生若只如初见,以前不懂为...
    匠心初心阅读 182评论 0 0
  • 也许你注意到了,我们编织的故事往往在利用过去的事作为证据,来支持今天的论点,强化它的“正确性”。例如,“我们不够好...
    emmanuelleZHAO阅读 349评论 0 0