1. 屏幕座標系區域劃分
先看看 android 的屏幕規劃圖。 可以很明顯的看出來, 屏幕的區域劃分作用在某一個位置。
android 由左上角頂點位置起始座標,橫向X軸開始, 往右正座標, 豎向Y軸開始, 往下正座標。
獲取當前屏幕狀態信息 APIS
// 獲取當前屏幕的寬/高。 分辨率
DisplayMetrics displayMetrics = new DisplayMetrics();
Activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
// 屏幕寬/高狀態信息
displayMetrics.widthPixels;
displayMetrics.heightPixels;
// 獲取當前狀態欄的高度
方式一:
Rect rect = new Rect();
// 獲取當前APP的繪製區域, 看上圖,包含ActionBar和View的繪製佈局區域
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
rect.top
方式二:
如果當前屏幕隱藏了狀態欄的顯示, 並且還需要獲取狀態欄的高度時, 可以通過反射系統的高度屬性進行獲取
int result = 0;
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = context.getResources().getDimensionPixelSize(resourceId);
}
獲取View的座標系APIS
自定義View時, 需要詳細知道view在當前屏幕上擺放的位置。 可以通過下列api獲取到當前的絕對座標和相對座標系
通過上圖可以很清楚的認知到view方法的總結。
View 的方法 | 備註 |
---|---|
getLeft() | 當前View的左邊距離父容器的左邊距離 |
getTop() | 當前View的上邊距離父容器的上邊距離 |
getRight() | 當前View的右邊距離父容器的右邊距離 |
getBottom() | 當前View的下邊距離父容器的下邊距離 |
getX() | 返回getLeft()+getTranslationX()方法的總和, 當不修改translationX的值時,與getLeft()返回值相同 |
getY() | 返回getTop()+getTranslationY()方法的總和, 當不修改translationY的值時,與geTop()返回值相同 |
getTranslationX() | 水平移動的長度。 通常與動畫相互使用 |
getTranslationY() | 垂直移動的長度。 通常與動畫相互使用 |
針對觸摸時, 獲取的視圖座標大小 MotionEvent
MotionEvent 的方法 | 備註 |
---|---|
getX() | 獲取當前觸摸點, 距離當前View的左邊間距 |
getY() | 獲取當前觸摸點, 距離當前View的上邊間距 |
getRawX() | 當前觸摸點, 距離整體屏幕的X軸座標 |
getRawY() | 當前觸摸點, 距離整體屏幕的Y軸座標 |
獲取 View 的顯示座標區域
View 的方法 | 備註 |
---|---|
getLocalVisibleRect() | 獲取當前View位置的顯示座標,當前 view 以自己的左上角爲起點,另一個點是在自己view的右下角, 返回的X,Y軸座標, 都是相對當前自身View。 |
getGlobalVisibleRect() | 獲取當前View位置的顯示座標, 當前 View 以屏幕的左上角爲起點, 另一個點是自己View的右下角, 返回的X,Y座標。 |
View 的滑動座標系
View的滑動方法 | 效果及描述 |
---|---|
offsetLeftAndRight(int offset) | 橫向座標滑動, 會改變當前view的真實位置。 |
offsetTopAndBottom(int offset) | 豎向座標滑動, 會改變當前view的真實位置。 |
scrollBy(int x, int y) | 針對傳入的X軸和Y軸進行滑動,X負值爲在當前位置往左滑, 反之亦然 參數Y與X表述相同, 僅僅只會滑動view裏面的內容, 不會真實改變view的位置, 一般用在viewgroup較多 |
scrollTo(int x, int y) | 針對傳入的X軸和Y軸進行滑動, 滑動位置是傳入參數的父佈局座標, 與當前ParentView爲參照物。 |