View基础

来源:互联网 发布:轩辕剑坐骑进阶数据 编辑:程序博客网 时间:2024/06/06 03:47

1.View坐标系

这里写图片描述

这里写图片描述
我随便设置了一个View,打印如下两句日志,可验证出结果:
(1)Bottom确实比Top的值大,即Y坐标轴的正方向是向下的
(2)height = bottom - top; width = right - left

Log.d("thmtest","top = "+view.getTop()+" & left = "+view.getLeft() +" &bottom = "+view.getBottom()+ "& right = "+view.getRight());Log.d("thmtest", "width = "+view.getWidth() +" &height = "+view.getHeight());
08-09 13:58:55.125 18893-18893/com.thm.testview D/thmtest: top = 250 & left = 0 &bottom = 467& right = 87308-09 13:58:55.125 18893-18893/com.thm.testview D/thmtest: width = 873 &height = 217

2、MotionEvent、TouchSlop

MotionEvent

getX()/getY()和getRawX()/getRawY()的区别
前者是相对于控件的原点,即左上角,(left, top)
后者是相对于坐标系的原点,即屏幕的左上角,(0,0)

TouchSlop

最小滑动距离,手指滑动低于这个值,认为不是滑动操作
获取方式:

int touchSlop = ViewConfiguration.get(getContext())                .getScaledTouchSlop();

3、VelocityTracker

可用于获取滑动速度,用于做一些手势速度的相关逻辑处理
使用方法:

VelocityTracker mVelocityTracker = VelocityTracker.obtain();
public boolean onTouchEvent(MotionEvent event) {        mVelocityTracker.addMovement(event);        switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                break;            case MotionEvent.ACTION_MOVE:                break;            case MotionEvent.ACTION_UP: {                mVelocityTracker.computeCurrentVelocity(1000);                float xVelocity = mVelocityTracker.getXVelocity();                if (Math.abs(xVelocity) > targetValue) {                    //do something                }                 break;            }            default:                break;        }        return true;    }

4、GestureDetector

手势动作处理基本上都在onTouchEvent中,
但是GestureDetector也可用于监听用户的手势动作,做出处理
使用方法:

private GestureDetector mGestureDetector  = new GestureDetector(getContext(),new GestureListener());    @Override    public boolean onTouchEvent(MotionEvent event) {        return mGestureDetector.onTouchEvent(event);    }    class GestureListener extends GestureDetector.SimpleOnGestureListener{        public boolean onSingleTapUp(MotionEvent e) {            return false;        }        public void onLongPress(MotionEvent e) {        }        public boolean onScroll(MotionEvent e1, MotionEvent e2,                                float distanceX, float distanceY) {            return false;        }        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,                               float velocityY) {            return false;        }        public void onShowPress(MotionEvent e) {        }        public boolean onDown(MotionEvent e) {            return false;        }        public boolean onDoubleTap(MotionEvent e) {            return false;        }        public boolean onDoubleTapEvent(MotionEvent e) {            return false;        }        public boolean onSingleTapConfirmed(MotionEvent e) {            return false;        }    }
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红米pro玩王者荣耀卡怎么办 红米手机恢复出厂设置出错了怎么办 红米恢复出厂设置出错了怎么办 应聘工作上当收押金了该怎么办 红米1s密码忘了怎么办 红米1s刷机后开不了机怎么办 红米2a耗电超快怎么办 红米2a手机耗电快怎么办 红米4x触屏失灵怎么办 苹果恢复出厂设置后密码忘记怎么办 红米1s忘记密码锁屏了怎么办 红米3手机忘记解锁图案怎么办 小米5x手机录屏失败怎么办 红米4x手机wif信号不好怎么办 红米4x屏幕换了截屏不好使怎么办 红米手机2a卡慢怎么办? 红米手机连接无线网信号不好怎么办 小米4用久了很卡怎么办 红米4a关不了机怎么办 红米手机屏幕锁了忘记密码怎么办 手机锁了忘记密码怎么办 红米 红米4a开不开机怎么办 红米显示小人开不了机怎么办 红米手机找回微信密码怎么办 红米手机密码忘了怎么办数字锁 红米1s忘了密码怎么办 红米手机下面三个键失灵怎么办 红米note手机没声音了怎么办 魅蓝3s被锁了怎么办 小米5x的4g网速慢怎么办 红米一体机与后盖有裂缝怎么办? 红米4x喇叭坏了怎么办 红米4x电池坏了怎么办 小米电视4a开不了机怎么办 小米x4手机下面三个键失灵怎么办 红米4a一直重启怎么办 红米4a手机一直关机重启怎么办 红米5A手机4G信号差怎么办 红米4x手机黑屏打不开怎么办 红米手机前置摄像头用不了怎么办 红米4a手机电池不耐用怎么办