安卓 获取当前view的高度和屏幕高度作比较要怎么做

WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
final int height = wm.getDefaultDisplay().getHeight();
int[] location = new int[2];
view.getLocationOnScreen(location);
final int y = location[1];

@Override
public void onClick(View v) {
if (y<(height/2)) {
System.out.println(456);//
}else if (y>(height/2)){
System.out.println(123);
}
}
这里是一个listview的view 想根据view在屏幕中的位置执行不同的方法,为什么打印出来的结果一直都是456呢?

可能是因为这段代码是运行在onCreate或者onResume中,界面尚未渲染完成就去获取宽高了,此时获取到的全部为0 。

可以这样做:

ViewTreeObserver observer = view.getViewTreeObserver();

observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        // 在这里获取宽高并处理     
    }
});