view系列之一 、view的位置

view的位置參數

這裏寫圖片描述

view的位置主要由它的四個頂點來決定的,分別對應view的四個屬性:top、left、right、bottom,在layout(int left,int top,int right,bottom)時,設置這四個屬性的值

1、view提供一些方法獲取自身屬性的值

ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) getLayoutParams();
  • left = getLeft() = layoutParams.leftMargin + 父佈局的PaddingLeft
  • top= getTop() = layoutParams.topMargin + 父佈局的PaddingTop
  • right = getRight() = layoutParams.rightMargin + 父佈局的PaddingRight
  • bottom= getBottom() = layoutParams.bottomMargin + 父佈局的PaddingBottom

從android3.0開始,View增加了額外的幾個參數: x、y、translationX 和 translationY,其中x和y是View的左上角的座標,而translationX和translationY是view左上角相對與父容器的偏移量。這幾個參數也是相對於父容器的座標,這幾個的參數的換算關係如下

  • x = left + translationX;
  • y= top + translationY;

需要注意的是View在動畫平移的過程中,top 和 left 表示的是原始左上角的位置信息,其值並不會發生改變,此時發生改變的是x、y、translationX和translationY這四個參數

這裏引用一篇博客對x、y、translationX和translationY的詳解
http://blog.csdn.net/wxv111/article/details/50901199

1.2 layout()方法詳解

當調用layout(int left,int top,int right,int bottom)方法改變View的位置時,改變的只是view的mLeft,mTop,mRight,mBottom的值,當父佈局刷新時,會重新計算子View的mLeft,mTop,mRight,mBottom的值,這就會導致view重新回到原來的位置。所以在改變view的位置時最好改變其Margin的值,以防止父佈局刷新時view回到原來的位置。

2、MotionEvent提供的方法

  • getX(): 獲取點擊事件距離控件左邊的距離
  • getY(): 獲取點擊事件距離控件頂邊的距離
  • getRawX(): 獲取點擊事件距離整個屏幕左邊的距離
  • getRawY(): 獲取點擊事件距離整個屏幕頂邊的距離
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章