您的位置:首页 > 其它

onWindowFocusChanged-屏幕焦点函数回调情况

2015-03-23 11:10 141 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: