View学习(android)

    技术2022-05-19  24

    获得相对于父类的位置

        /**

         * 获得此View左边相对其父类的X坐标位置。

         */

        public final int getLeft() {        return mLeft;    }

        /**

         * 获得此View右边相对其父类的X坐标位置。

         */

        public final int getRight() {        return mRight;    }

        /**

         * 获得此View顶边相对其父类的Y坐标位置。

         */

        public final int getTop() {        return mTop;    

        /**

         * 获得此View底边相对其父类的Y坐标位置。

         */

        public final int getBottom() {        return mBottom;    }

    获取空白填充大小

        /**

         * 获取此View的顶部空白填充大小

         */

        public int getPaddingTop() {        return mPaddingTop;    }

        /**

         * 获取此View的底部空白填充大小

         */

        public int getPaddingBottom() {        return mPaddingBottom;    }

        /**

         * 获取此View的左边空白填充大小

         */

        public int getPaddingLeft() {         return mPaddingLeft;     }

        /**

         * 获取此View的右边空白填充大小

         */

        public int getPaddingRight() {        return mPaddingRight;    }

    布局

    /** * 查看和测量View,以确定其内容的测量宽度和测量高度。此方法被measure(int, int)调用,应该由子类重写,以提供准确,高效的內容测量。 * CONTRACT: 当重写这个方法的时候, 你必须调用setMeasuredDimension(int, int),去存储测量的内容宽度和高度. * 如果不这样做会引发一个IllegalStateException, 是被measure(int, int)抛出的. * 调用父类的onMeasure(int, int)是不能存储测量结果的. * 基类默认的测量实现是对于背景大小, 除非更大的尺寸被MeasureSpec允许. 子类应当重写onMeasure(int, * int)以便提供更好的内容测量. * 如果这个方法被重写, 他子类的责任是确保测量高度和宽度至少是此View的最小高度和宽度(getSuggestedMinimumHeight() and * getSuggestedMinimumWidth()). * 参数: widthMeasureSpec 向父类请求的横向空间。这些请求被编码在android.view.View.MeasureSpec里面 *      heightMeasureSpec 向父类请求的竖向空间。这些请求被编码在android.view.View.MeasureSpec里面 * */

        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),                getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));    }

    事件

    /** * 实现这个方法去处理触屏事件 * 在View中被重写 * 参数:  *     event 事件. 返回: 如果事件被处理返回true, 否则返回false. * */

        public boolean onTouchEvent(MotionEvent event) {

        ...

        }

        注释:请参见ViewGroup中的方法:onInterceptTouchEvent(MotionEvent ev) 


    最新回复(0)