美文网首页
关于view的尺寸, 坐标

关于view的尺寸, 坐标

作者: 冉桓彬 | 来源:发表于2017-10-09 09:56 被阅读23次

demo上传至github

1. 动态获取view的大小:

public static void addMeasureListener(final View view, final MeasureListener measureListener) {
    ObjectHelper.requireNotNull(view, "the current view is null");
    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onGlobalLayout() {        
            if (measureListener != null) {
                view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                int[] size = new int[2];
                size[0] = view.getMeasuredWidth();
                size[1] = view.getMeasuredHeight();
                measureListener.measureView(view, size);
            }
        }
    });
}
public interface MeasureListener {
    void measureView(View view, int[] size);
}

2. 动态获取view的坐标:

@SuppressLint("NewApi")
public static void addViewLocationListener(final View view, final ViewLocationListener listener) {
    ObjectHelper.requireNotNull(view, "the current view is null");
    view.getViewTreeObserver().addOnWindowFocusChangeListener(new ViewTreeObserver.OnWindowFocusChangeListener() {
        @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            if (listener != null) {
                view.getViewTreeObserver().removeOnWindowFocusChangeListener(this);
                int[] location = new int[2];
                view.getLocationOnScreen(location);
                listener.viewLocation(view, location);
            }
        }
    });
}

public interface ViewLocationListener {
    void viewLocation(View view, int[] location);
}

相关文章

网友评论

      本文标题:关于view的尺寸, 坐标

      本文链接:https://www.haomeiwen.com/subject/tjuuyxtx.html