浅谈view



view 之touchSlop
touchSlop 是指系统所能识别出被认为滑动的最小距离,如果小于这个距离,系统则不认为发生了滑动。这是一个常量,与设备有关,在不同的设备上
这个值是不同的,通过viewconfiguration.get(getcontext()).getScaledTouchSlop().当我们处理滑动时就可以利用这个常量做一下过滤。

view 之velocityTracker,gestureDetector和scroller
velocityTracker 速度追踪,手指在滑动时的速度追踪,包括水平和竖直方向。
 velocityTracker velocityTracker=velocityTracker.obtain();
 velocityTracker.addMovement(event);
 
采用如下方式获得当前的速度
 velocityTracker.computeCurrentvelocity(1000);
 int xvelocity=velocityTracker.getXvelocity
 int yvelocity=velocityTracker.getyvelocity();
 
 获取速度之前必须先要计算出速度,及getXvelocity(),getyvelocity()之前必须要调用computeCurrentvelocity方法。注意,这里的 1000 代表z
 在1000毫秒内手指划过的像素点。
 
view 之gestureDetector
    手势检测,检测用户的单击,双击,滑动,长按等行为。
 
view的滑动
实现滑动共有三种方式:
  1 通过view本身提供的scrollto,scrollby方法来实现滑动
  2 通过动画给view施加平移效果来实现滑动
  3 通过改变view的layoutParams使得view重新布局实现滑动
  使用第一种方式时,mscrollx,mscrolly 可通过getscrollX()和getScrollY()来获取。scrollTo 和scrollBy只能改变view内容的位置而不能改变原来view
  在原布局中的位置。如果从左向右滑动时,那么scrollX的指为负指,如果从上往下滑动时,那么mscrollY 为负值,反之为正值。
  
view的事件分发机制
 点击事件的分发过程由三个很重要的方法来共同完成:dispatchTouchEvent(),onInterceptTouchEvent和onTouchEvent
 dispatchTouchevent()用来进行事件的分发,onInterceptTouchEvent 用来判断是否拦截某个事件,onTouchEvent用来处理点击事件。
 
 我们可以大致了解点击事件的传递规则;对于一个根viewgroup来说,点击事件产生后,首先会传递给它,这时他的dispatchTouchEvent 会被调用,如果这个veiwgroup的OnInterceptTouchEvent
 方法返回true就表示他要拦截这个事件,接着事件就会交给这个viewgroup处理,即他的onTouchEvent方法就会被调用,如果这个viewgroup的onInterceptTouchEvent返回false的话,就表示它不拦截这个事件
 这时这个事件就会继续传递给他的子元素,接着dispatchTouchEvent 方法就会被调用。
 
 当一个view 需要处理事件时,如果它设置了onTouchListener,那么OnTouchListener中的onTouch方法会被回调,这时候如何处理要看Ontouch的返回值,如果返回false,则当前的view的onTouchEvent
 方法会被调用,如果返回true,那么onTouchEvent方法讲不会被调用。由此可见,给view设置的OntouchListener,他的优先级比onTouchEvent更高。

事件分发的源码分析

 1 Activity 对点击事件的分发过程
 点击事件用MotionEvent来表示,当一个点击操作发生时,事件最先传递给当前的Activity,由Activity的disPatchTouchEvent来进行事件的分发,具体的工作是由Activity内部的window来完成。
 window会将事件传递给decor view ,decorview一般就是当前界面的底层容器,通过Activity.getWindow.getDecorView()可以获得。
 首先事件开始交给Activity所附属的window进行分发,如果返回true,整个事件循环就结束了,返回false意味这事件没有人处理,所有的view的onTouchEvent都返回false,那么Activity的onTouchEvent 就会重新被调用。

 
 

成都市作为中国西部地区具有战略地位的核心都市,其人口的空间分布状况对于城市规划、社会经济发展及公共资源配置等研究具有基础性数据价值。本文聚焦于2019年度成都市人口分布的空间数据集,该数据以矢量格式存储,属于地理信息系统中常用的数据交换形式。以下将对数据集内容及其相关技术要点进行系统阐述。 Shapefile 是一种由 Esri 公司提出的开放型地理空间数据格式,用于记录点、线、面等几何要素。该格式通常由一组相互关联的文件构成,主要包括存储几何信息的 SHP 文件、记录属性信息的 DBF 文件、定义坐标系统的 PRJ 文件以及提供快速检索功能的 SHX 文件。 1. **DBF 文件**:该文件以 dBase 表格形式保存与各地理要素相关联的属性信息,例如各区域的人口统计数值、行政区划名称及编码等。这类表格结构便于在各类 GIS 平台中进行查询与编辑。 2. **PRJ 文件**:此文件明确了数据所采用的空间参考系统。本数据集基于 WGS84 地理坐标系,该坐标系在全球范围内广泛应用于定位与空间分析,有助于实现跨区域数据的准确整合。 3. **SHP 文件**:该文件存储成都市各区(县)的几何边界,以多边形要素表示。每个多边形均配有唯一标识符,可与属性表中的相应记录关联,实现空间数据与统计数据的联结。 4. **SHX 文件**:作为形状索引文件,它提升了在大型数据集中定位特定几何对象的效率,支持快速读取与显示。 基于上述数据,可开展以下几类空间分析: - **人口密度评估**:结合各区域面积与对应人口数,计算并比较人口密度,识别高密度与低密度区域。 - **空间集聚识别**:运用热点分析(如 Getis-Ord Gi* 统计)或聚类算法(如 DBSCAN),探测人口在空间上的聚集特征。 - **空间相关性检验**:通过莫兰指数等空间自相关方法,分析人口分布是否呈现显著的空间关联模式。 - **多要素叠加分析**:将人口分布数据与地形、交通网络、环境指标等其他地理图层进行叠加,探究自然与人文因素对人口布局的影响机制。 2019 年成都市人口空间数据集为深入解析城市人口格局、优化国土空间规划及完善公共服务体系提供了重要的数据基础。借助地理信息系统工具,可开展多尺度、多维度的定量分析,从而为城市管理与学术研究提供科学依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值