Android開發 View的位置引數

2021-08-17 07:53:20 字數 2062 閱讀 7942

view是android中所有控制項的基類,不管是簡單的button和textview,還是複雜的relativelayout和listview,其基類都是view類;viewgroup也繼承了view類,這意味著view本身就可以代表簡單的和複雜的所有控制項和布局,通過這種關係,就形成了view樹的結構。

在操作view的時候,尤其是在處理自定義view的一些事件的時候,我們往往需要獲取到目標view的這樣或那樣的引數。下面就來簡單介紹一下view的各種引數及其用法。

view有這樣的一些屬性:x、y、z、left、right、top、bottom、elevation、translationx、translationy、translationz、rawx、rawy等等,下面一一介紹這些引數的意義及如何獲取這些引數。

這裡需要注意一點:以下方法,如果直接在activity的oncreate()方法中呼叫,則可能會返回0,這是因為在程式剛剛啟動,剛剛開始繪製這個view的時候,我們就要獲取這個view的各個位置引數,當然會返回0。解決方法是:在activity的 onwindowfocuschanged() 方法中獲取;或者可以新建乙個執行緒,先 thread.sleep() 一段時間之後,再獲取這些引數。

這五個引數代表的是view的原始位置相對於其父控制項邊緣的距離:

left、right、top和bottom四個屬性的關係如下圖所示:

注意:view的這五個屬性值代表的是view的原始位置座標值,無論這個view被移動到了什麼位置,或者被縮放、旋轉了多少,這五個值都是永久不變的。

這三個引數代表的是在動畫或者滑動view的時候,view的當前位置相對於其原始位置平移的距離:

這三個引數代表的是view的當前位置相對於其父控制項的距離:

這三個引數和前面的幾個引數的關係公式如下:

motionevent是我們用來操作view的觸控事件的類,當我們對螢幕進行一次操作的時候,就會觸發motionevent中的幾個觸控事件:

因此,對於我們常常做的一些操作,相應的事件觸發順序如下:

使用motionevent類,我們還可以獲取到觸控螢幕時view的一些位置引數:

這裡說的view相對螢幕的距離,是指view的左上角相對於手機螢幕左上角的座標。可以使用以下幾個方法獲取:

這個方法的用法**如下:

int position = new

int[2];

view.getlocationinwindow(position);

system.out.println("(" + position[0] + "," + position[1] + ")");

如果當前activity是普通的activity,則用這個方法得到的position陣列中的第二個引數(y座標值)表示可見的狀態列的高度 + 可見的標題欄的高度 + view上端到標題欄下端的距離;

如果當前activity是對話方塊式的activity,則y座標值表示可見的標題欄的高度 + view上端到標題欄下端的距離。

注意:這裡的「可見」表示的是能看到的,如果乙個activity中的狀態列或標題欄被隱藏了,則其高度用0表示。

這個方法的用法**如下:

int position = new

int[2];

view.getlocationonscreen(position);

system.out.println("(" + position[0] + "," + position[1] + ")");

這個方法對y座標的要求和上面的方法相同。

這個方法的用法**如下:

rect rect = new

rect();

view.getglobalvisiblerect(rect);

system.out.println("(" + rect.left + "," + rect.top + ")");

rect在這裡的作用是「套住」這個view,其對y座標的要求和上面的方法相同。

Android 遊戲開發 View框架

按鍵盤的上下鍵矩形就會上下移動 通過例項化handler物件並重寫handkemessage方法實現了乙個訊息接收器。然後再執行緒中通過sendmessage方法傳送更新介面的訊息,接收器收到更新介面的訊息時便執行invalidate方法更新螢幕顯示。package com.yarin.androi...

Android開發藝術筆記 View的事件體系

根據上圖,可以得出view的寬高和座標的關係 width right left height bottom top 關於如何得到view的這四個引數,在view的原始碼中它們對應於mleft mright mtop和mbottom這四個成員變數,獲取方式 概念 速度追蹤,用於追蹤手指在滑動過程中的速...

Android遊戲開發之View切換閃動解決

我在開發android遊戲是一般是通過view切換的,activity中有乙個handler 命名為handler 來處理view的切換,而且activity儲存有gamemainview和gameview的例項 命名為gamemainview和gameview 從主選單gamemainview切換...