View的可见性检查,View的滑动几种方式

View的可见性检查

  1. getLeft()、getTop()、getRight()、getBottom()
  2. getX()、getY()、getRawX()、getRawY()
  3. getLocationOnScreen()
  4. getLocationInWindow()
  5. getGlobalVisibleRect()
  6. getLocalVisibleRect()
方式一:getLeft()/getTop()/getRight()/getBottom()

获取当前View相对于父View的坐标

view.getLeft()
view.getTop()
view.getRight()
view.getBottom()
方式二:getX()/getY()/getRawX()/getRawY()

获取点击事件相对直接控件的发生坐标或相对屏幕的坐标

MotionEvent event

event.getX()
event.getY()

event.getRawX()
event.getRawY()
方式三:getLocationOnScreen()

获取当前View相对于屏幕的坐标

int[] location = new int[2];
view.getLocationOnScreen(location);
// view距离屏幕左边的距离
int x = location[0];
// view距离屏幕顶边的距离
int y = location[1];

// 在view.post(Runnable)里获取,即等布局变化后
方式四:getLocationInWindow()

获取当前View相对于所在Window的坐标

int[] location = new int[2];
view.getLocationInWindow(location);
// view距离window左边的距离
int x = location[0];
// view距离window顶边的距离
int y = location[1];

// 在onWindowFocusChanged()里获取,即等window窗口发生变化后
方式五:getGlobalVisibleRect()

获取View可见部分相对于屏幕的坐标

Rect rect = new Rect();
view.getGlobalVisibleRect(rect);
int left = rect.getLeft();
int top = rect.getTop();
int right = rect.getRight();
int bottom = rect.getBottom();
方式六:getLocalVisibleRect()

获取View可见部分相对于自身View左上角的坐标

Rect rect = new Rect();
view.getLoacalVisibleRect(rect);
int left = rect.getLeft();
int top = rect.getTop();
int right = rect.getRight();
int bottom = rect.getBottom();

注意:getGlobalVisibleRect与getLocalVisibleRect在View完全不可见的情况下返回的Rect实例的坐标为相对屏幕原点的坐标,且当View处在屏幕上方时,top和bottom为负值。

[站外图片上传中...(image-f0af2b-1593425845677)]
例子中的tv10和tv9完全不可见,所以其返回的Rect坐标是相对于屏幕原点的坐标。

View的滑动

方式一:scrollTo和scrollBy
方式二:Animation
方式三:利用MarginLayoutParams的Margin属性
方式四:Scroller类
方式五:利用View的绘制流程layout方法
方式六:offsetLeftAndRight和offsetTopAndBottom

你可能感兴趣的:(View的可见性检查,View的滑动几种方式)