13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Android进阶之view坐标系全面详解

前言

首先祝大家国庆节快乐,玩的开心;

一、Android坐标系详解

说到Android坐标系其实就是一个三维坐标,Z轴向上,X轴向右,Y轴向下。这三维坐标的点处理就能构成Android丰富的界面或者动画等效果;

1、Android屏幕一些值的获取

①获取屏幕区域的宽高等尺寸获取

 
 
 
 
  1. DisplayMetrics metrics = new DisplayMetrics();
  2. getWindowManager().getDefaultDisplay().getMetrics(metrics);
  3. int widthPixels = metrics.widthPixels;
  4. int heightPixels = metrics.heightPixels;

②应用程序App区域宽高等尺寸获取

 
 
 
 
  1. Rect rect = new Rect();
  2. getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);

③获取状态栏高度

 
 
 
 
  1. Rect rect= new Rect();
  2. getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
  3. int statusBarHeight = rectangle.top;

④View布局区域宽高等尺寸获取

 
 
 
 
  1. Rect rect = new Rect();
  2. getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(rect);

2、Android View绝对相对坐标系

View的静态坐标方法

3、手指触摸屏幕时MotionEvent提供的一些方法

4、View宽高方法

5、Android View滑动相关坐标系

View的滑动方法

关于Android View的scrollBy()和scrollTo()参数传递正数却向坐标系负方向移动的特性可能很多人都有疑惑,甚至是死记结论,这里我们简单给出产生这种特性的真实原因—-源码分析,如下:

 
 
 
 
  1. public void scrollTo(int x, int y) {
  2.     if (mScrollX != x || mScrollY != y) {
  3.        int oldX = mScrollX;
  4.        int oldY = mScrollY;
  5.        mScrollX = x;
  6.        mScrollY = y;
  7.        invalidateParentCaches();
  8.        onScrollChanged(mScrollX, mScrollY, oldX, oldY);
  9.        if (!awakenScrollBars()) {
  10.          postInvalidateOnAnimation();
  11.        }
  12.    }
  13. }

View的该方法注释里明确说明了调运他会触发onScrollChanged()和invalidated()方法,那我们就将矛头转向invalidated()方法触发的draw()过程,draw()过程中最终其实会触发下面的invalidate()方法,如下:

 
 
 
 
  1. public void invalidate(int l, int t, int r, int b) {
  2.     final int scrollX = mScrollX;
  3.     final int scrollY = mScrollY;
  4.     //scroller时为何参数和坐标反向的真实原因
  5.     invalidateInternal(l - scrollX, t - scrollY, r - scrollX, b - scrollY, true, false);
  6. }

核心就在这里

scrollTo()和scrollBy()方法特别注意:如果你给一个ViewGroup调用scrollTo()方法滚动的是ViewGroup里面的内容,如果想滚动一个ViewGroup则再给他嵌套一个外层,滚动外层即可

总结


网站名称:Android进阶之view坐标系全面详解
当前URL:http://cdbrznjsb.com/article/cdchdei.html

其他资讯

让你的专属顾问为你服务