zoukankan      html  css  js  c++  java
  • onWindowFocusChanged-屏幕焦点函数回调情况

    1.这个函数的具体作用不太清楚,但网上有人说是 ,当activity得到或者失去焦点的时候,就会调用这个方法

    先看如下代码

     @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            android.util.Log.e("zhangshuli", "win");
            mHistoryDisplayButton.getLocationOnScreen(mHistoryDisplayButtonLocation);
            mHistoryDisplayButtonLocationX = mHistoryDisplayButtonLocation[0];
            mHistoryDisplayButtonLocationY = mHistoryDisplayButtonLocation[1];
            mHistoryHideButton.getLocationOnScreen(mHistoryHideButtonLocation);
            mHistoryHideButtonLocationX = mHistoryHideButtonLocation[0];
            mHistoryHideButtonLocationY = mHistoryHideButtonLocation[1];
            mHistoryDisplayListWidth = mHistoryDisplayList.getWidth();
            mHistoryHideLastLocationX =  mHistoryHideButtonLocationX - mHistoryDisplayListWidth ;
            mRotationAngle = (135f)/((float)mHistoryDisplayButtonLocationX -(float)mHistoryHideLastLocationX);
            android.util.Log.e("zhangshuli", "angle"+mRotationAngle);
            android.util.Log.e("zhangshuli", "mHistoryDisplayListWidth"+mHistoryDisplayListWidth);
            android.util.Log.e("zhangshuli", "mHistoryHideLastLocationX"+mHistoryHideLastLocationX);
            android.util.Log.e("zhangshuli", "mHistoryHideButtonLocationX"+mHistoryHideButtonLocationX);
            android.util.Log.e("zhangshuli", "mHistoryDisplayButtonLocationX"+mHistoryDisplayButtonLocationX);
    
            super.onWindowFocusChanged(hasFocus);
    }

    当我进入和退出这个activity的时候,我们可以看到打印的log如下

    1)进入

    03-23 10:57:30.801 E/zhangshuli( 1762): nihao
    03-23 10:57:31.241 E/zhangshuli( 1762): win
    03-23 10:57:31.241 E/zhangshuli( 1762): angle0.5672269
    03-23 10:57:31.241 E/zhangshuli( 1762): mHistoryDisplayListWidth362
    03-23 10:57:31.241 E/zhangshuli( 1762): mHistoryHideLastLocationX378
    03-23 10:57:31.241 E/zhangshuli( 1762): mHistoryHideButtonLocationX740
    03-23 10:57:31.241 E/zhangshuli( 1762): mHistoryDisplayButtonLocationX616

    2)退出

    03-23 10:57:35.736 E/zhangshuli( 1762): win
    03-23 10:57:35.736 E/zhangshuli( 1762): angle0.5672269
    03-23 10:57:35.736 E/zhangshuli( 1762): mHistoryDisplayListWidth362
    03-23 10:57:35.736 E/zhangshuli( 1762): mHistoryHideLastLocationX378
    03-23 10:57:35.736 E/zhangshuli( 1762): mHistoryHideButtonLocationX740
    03-23 10:57:35.736 E/zhangshuli( 1762): mHistoryDisplayButtonLocationX616

    所以我们知道,这个方法是在activity加载或者退出的时候都会调用。对它唯一的认识就是,如果你想要得到一个控件的位置坐标,那么你必须在这个方法中执行相应的代码,在oncreate中是得不到的

    我们现在再把它跟Oncreate做一下比较

    log打印如下

     @Override
        public void onCreate(Bundle state) {
            super.onCreate(state);
    
            android.util.Log.e("zhangshuli", "nihao");
    }
    
     @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            android.util.Log.e("zhangshuli", "win");
    
            super.onWindowFocusChanged(hasFocus);
    }

    1)当我们启动应用的时候

    03-23 12:56:37.577 E/zhangshuli( 6860): nihao
    03-23 12:56:38.178 E/zhangshuli( 6860): win

    2)按下HOME建

    03-23 12:57:19.584 E/zhangshuli( 6860): win

    3)按下HOME建再次进入

    03-23 12:58:25.664 E/zhangshuli( 6860): win

    4)直接退出

    03-23 12:59:30.899 E/zhangshuli( 6860): win

    可以得到一个结论,就是oncreate比focus先执行。但是,如论程序怎么走,都会执行focus

  • 相关阅读:
    mysql8.0.21下载安装详细教程
    ORDER BY 高级用法之CASE WHEN继续研究
    前端实用在线小工具推荐
    从nodejs的AES加密解密之后文件大小不一致的问题谈谈AES加密中的补位
    纯前端如何实现多语言切换
    [React] React Virtual
    [Kotlin] Compare Functional Programming in Java and Kotlin
    [Kotlin] Catch Error in Java
    [Angular] Saving draft form into Cookies
    [Angular] Data Resolver
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_focus_150323111.html
Copyright © 2011-2022 走看看