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

  • 相关阅读:
    js 计时器小练-20160601
    数位dp入门学习之路(正常枚举“过渡到”dfs枚举)
    An easy problem
    牌型种类 蓝桥杯
    带分数(穷举法) 蓝桥杯赛题
    表达式的转换----->中缀表达式转后缀表达式
    map 的使用
    netsatat 的使用
    两个矩形不相交
    前缀和
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_focus_150323111.html
Copyright © 2011-2022 走看看