美文网首页
高级UI<第四十三篇>:Android直角坐标系

高级UI<第四十三篇>:Android直角坐标系

作者: NoBugException | 来源:发表于2020-02-15 04:40 被阅读0次

在自定义view时,我们必须了解几个常用的直角坐标系:屏幕直角坐标系view直角坐标系滚动直角坐标系速度直角坐标系

【一】 屏幕直角坐标系

先来看一下代码:

@Override
public boolean onTouchEvent(MotionEvent event) {

    float xx = event.getRawX();
    float yy = event.getRawY();

    //...
}

当处理触摸事件时,往往需要获取当前触摸的坐标,getRawXgetRawY是以屏幕左上角(非view左上角)作为原点(0,0),其直角坐标系如下图:

图片.png

如图所示,正方向是右侧和下侧,当触摸view时,使用getRawXgetRawY获取坐标点和view本身无关,只和屏幕有关。

【二】 view直角坐标系

先来看一下代码:

@Override
public boolean onTouchEvent(MotionEvent event) {

    float x = event.getX();
    float y = event.getY();

    //...
}

当处理触摸事件时,往往需要获取当前触摸的坐标,getX和getY是以view左上角(非屏幕左上角)作为原点(0,0),其直角坐标系如下图:

图片.png

如图所示,正方向是右侧和下侧,当触摸view时,使用getX和getY获取的坐标点是view本身的坐标。

【三】 滚动直角坐标系

view本身可以使用scrollTo、scrollBy实现滚动,还可以使用getScrollXgetScrollY获取view在滚动直角坐标系上的坐标。

Scroller和OverScroller这两大滚动辅助工具类的getCurrXgetStartXgetFinalX也可以获取滚动直角坐标系上的坐标。

它的直角坐标系如图:

图片.png

如图所示,正方向是左和上侧。在Android中,这种坐标系最为特殊(当然,这种坐标系是我自己命名的)

【四】 速度直角坐标系

这里的速度是指手指滑动速度

在物理学上,速度这个词汇大家都不会陌生;
在数学上,这里的速度可以理解为向量,向量是有方向的,所以有正有负;
在Android上,手指滑动速度可以理解为:物理学的速度+方向或者向量,它的代码获取如下:

  • 获取最小速度

    int mMinimumFlingVelocity=  ViewConfiguration.get(getContext()).getScaledMinimumFlingVelocity();
    
  • 获取最大速度

    int mMaximumFlingVelocity=  ViewConfiguration.get(getContext()).getScaledMaximumFlingVelocity();
    
  • 获取实际速度

MotionEvent.ACTION_DOWN事件中的代码:

            //创建惯性滑动速度追踪类对象
            velocityTracker = VelocityTracker.obtain();

MotionEvent.ACTION_MOVE事件中的代码:

            //将事件加入到VelocityTracker类实例中
            velocityTracker.addMovement(event);
            //计算1秒内滑动的像素个数
            velocityTracker.computeCurrentVelocity(1000);
            //X轴方向的速度
            xVelocity = (int) velocityTracker.getXVelocity();
            //Y轴方向的速度
            yVelocity = (int) velocityTracker.getYVelocity();

它的直角坐标系如下:


图片.png

如图所示,正方向是右侧和下侧,当触摸view时,立即确定当前触摸点为原点(0,0),手指快速向上或左滑动为负方向,反之为正方向。

[本章完...]

相关文章

  • 高级UI<第四十三篇>:Android直角坐标系

    在自定义view时,我们必须了解几个常用的直角坐标系:屏幕直角坐标系、view直角坐标系、滚动直角坐标系、速度直角...

  • Android Scroller分析

    (1)Android view的直角坐标系 需要注意的是,view的直角坐标系和数学的直角坐标系不同,view的x...

  • Android 高级UI 目录

    Android 高级UI开发 目录 Android 高级UI1 Material Design概述Android ...

  • Android分析View的scrollBy()和scrollT

    在做分析之前,首先要建立起Android设备屏幕的平面直角坐标系概念。在Android手机中,屏幕的直角坐标轴概念...

  • ios cocos2D 坐标系

    一、笛卡尔坐标系 左手坐标系 右手坐标系 二、UI坐标系 ios android windows sdk 通用的U...

  • 1.空间直角坐标系

    1.空间直角坐标系 1.1空间直角坐标系的建立 坐标轴:x轴(横轴)、y轴(纵轴)、z轴(竖轴)。 空间直角坐标系...

  • 个人笔记|三维GIS开发-cesium坐标系统

    三维GIS开发-vue+cesium坐标系统 屏幕坐标系/平面直角坐标系 笛卡尔空间直角坐标系/世界坐标 地理坐标...

  • 内积

    内积 笛卡尔坐标系 直角坐标系 数量积

  • 2019-01-16echarts知识点

    echarts中的坐标系统分为,直角坐标系,极坐标系,雷达坐标系,地图坐标系

  • Echarts配置项

    title标题 legend图例 grid直角坐标系内绘图网 xAxis直角坐标系 grid 中的 x 轴 yAx...

网友评论

      本文标题:高级UI<第四十三篇>:Android直角坐标系

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