1. 程式人生 > >安卓自定義View基礎:座標系

安卓自定義View基礎:座標系

安卓中的座標系

一.螢幕座標系和數學座標系的區別

由於移動裝置一般定義螢幕左上角為座標原點,向右為x軸增大方向,向下為y軸增大方向, 所以在手機螢幕上的座標系與數學中常見的座標系是稍微有點差別的,詳情如下:

PS:其中的∠a 是對應的,注意y軸方向!


實際螢幕上的預設座標系如下:

PS: 假設其中棕色部分為手機螢幕

二.View的座標系

注意:View的座標系統是相對於父控制元件而言的.

1234 getTop();//獲取子View左上角距父View頂部的距離getLeft();//獲取子View左上角距父View左側的距離getBottom();//獲取子View右下角距父View頂部的距離getRight();//獲取子View右下角距父View左側的距離

如下圖所示:

三.MotionEvent中 get 和 getRaw 的區別

12345 event.getX();//觸控點相對於其所在元件座標系的座標event.getY();event.getRawX();//觸控點相對於螢幕預設座標系的座標event.getRawY();

如下圖所示:

PS:其中相同顏色的內容是對應的,其中為了顯示方便,藍色箭頭向左稍微偏移了一點.

四.核心要點

序號 要點
1 在數學中常見的座標系與螢幕預設座標系的差別
2 View的座標系是相對於父控制元件而言的
3 MotionEvent中get和getRaw的區別

五.參考文章:

相關推薦

定義View基礎座標系

安卓中的座標系 一.螢幕座標系和數學座標系的區別 由於移動裝置一般定義螢幕左上角為座標原點,向右為x軸增大方向,向下為y軸增大方向, 所以在手機螢幕上的座標系與數學中常見的座標系是稍微有點差別的,詳情如下: (PS:其中的∠a 是對應的,注意y軸方向!) 實際螢幕上的預設座標系如下: PS: 假設其中棕

定義View基礎顏色

簡要介紹安卓中的顏色相關內容,包括顏色的定義,建立顏色的幾種方式,以及顏色的混合模式等。 一.簡單介紹顏色 安卓支援的顏色模式: 顏色模式 備註 ARGB8888 四通道高精度(32位) ARGB4444 四通道低精度(16位) RGB565 螢幕預設模式

定義View基礎-座標系

一.螢幕座標系和數學座標系的區別 由於移動裝置一般定義螢幕左上角為座標原點,向右為x軸增大方向,向下為y軸增大方向, 所以在手機螢幕上的座標系與數學中常見的座標系是稍微有點差別的,詳情如下: (PS:其中的∠a 是對應的,注意y軸方向!) 實際螢幕上的預設座標系如下:

定義View基礎-繪製點、線、矩形、圓形等

為什麼要自定義View?因為我們在開發中,經常有各種各樣的需求,但是原生的控制元件畢竟只能滿足我們常用的需求,所以我們需要根據自身當前的需求來定製我們的View,話不多說,一步一步來吧。 1.建立類: 建立一個類,暫且將這個類命名為CustomV

定義View基礎-顏色

顏色 簡要介紹安卓中的顏色相關內容,包括顏色的定義,建立顏色的幾種方式,以及顏色的混合模式等。 一.簡單介紹顏色 安卓支援的顏色模式: 顏色模式 備註 ARGB8888 四通道高精度(32位) ARGB4444 四

定義 View 進階貝塞爾曲線

在上一篇文章Path之基本圖形中我們瞭解了Path的基本使用方法,本次瞭解Path中非常非常非常重要的內容-貝塞爾曲線。 一.Path常用方法表 為了相容性(偷懶) 本表格中去除了在API21(即安卓版本5.0)以上才新增的方法。忍不住吐槽一下,為啥看起來有些順手就能寫的

定義View進階Path基本操作

在上一篇Canvas之圖片文字中我們瞭解瞭如何使用Canvas中繪製圖片文字,結合前幾篇文章,Canvas的基本操作已經差不多完結了,然而Canvas不僅僅具有這些基本的操作,還可以更加炫酷,本次會了解到path(路徑)這個Canvas中的神器,有了這個神器,就能創造出更多炫(

定義 View 進階Path 完結篇(偽)

經歷過前兩篇 Path之基本操作 和 Path之貝塞爾曲線 的講解,本篇終於進入Path的收尾篇,本篇結束後Path的大部分相關方法都已經講解完了,但Path還有一些更有意思的玩法,應該會在後續的文章中出現吧,嗯,應該會的ˊ_>ˋ 一.Path常用方法表 為了相容性

定義View進階Path之玩出花樣(PathMeasure)

PS:不要問我為什麼不講 PathEffect,因為這個方法在後面的Paint系列中。 先放一個圖鎮樓,省的下面無聊的內容把你們都嚇跑了Σ( ̄。 ̄ノ)ノ Path & PathMeasure 顧名思義,PathMeasure是一個用來測量Path的類,主要有以下方法: 構造方法 方法名 釋

淺談定義view(一)製作一個最最最簡單的定義view

對於安卓程式設計師來說,自定義view簡直不要太重要,畢竟有很多功能,譬如圓形頭像這些,用單純的原生非常難以實現,而用自定義view,簡直分分鐘。 在這裡,我嘗試用最簡單方式跟初學者說一下如何自定義一個自己的view~ 首先,最簡單最簡單的自定義view,有

定義View進階-手勢檢測(GestureDecetor)

Android 手勢檢測,主要是 GestureDetector 相關內容的用法和注意事項,本文依舊屬於事件處理這一體系,部分內容會涉及到之前文章提及過的知識點,如果你沒看過之前的文章,可以到 自定義 View 系列 來檢視這些內容。 在開發 Android 手機應用過程中,可

定義View進階-多點觸控詳解

Android 多點觸控詳解,在前面的幾篇文章中我們大致瞭解了 Android 中的事件處理流程和一些簡單的處理方案,本次帶大家瞭解 Android 多點觸控相關的一些知識。 多點觸控 ( Multitouch,也稱 Multi-touch ),即同時接受螢幕上多個點的人機互動

定義View進階-特殊控制元件的事件處理方案

本文帶大家瞭解 Android 特殊形狀控制元件的事件處理方式,主要是利用了 Region 和 Matrix 的一些方法,超級實用的事件處理方案,相信看完本篇之後,任何奇葩控制元件的事件處理都會變得十分簡單。 不得不說,Android 對事件體系封裝的非常棒,即便對事件體系不太

定義View進階-MotionEvent詳解

Android MotionEvent 詳解,之前用了兩篇文章 事件分發機制原理 和 事件分發機制詳解 來講解事件分發,而作為事件分發主角之一的 MotionEvent 並沒有過多的說明,本文就帶大家瞭解 MotionEvent 的相關內容,簡要介紹觸控事件,主要包括 單點觸控、多點

定義View進階-事件分發機制詳解

Android 事件分發機制詳解,在上一篇文章 事件分發機制原理 中簡要分析了一下事件分發機制的原理,原理是十分簡單的,一句話就能總結:責任鏈模式,事件層層傳遞,直到被消費。 雖然原理簡單,但是隨著 Android 不斷的發展,實際運用場景也越來越複雜,所以想要徹底玩轉事件分發機制還

定義View進階-Matrix Camera

本篇依舊屬於Matrix,主要講解Camera,Android下有很多相機應用,其中的美顏相機更是不少,不過今天這個Camera可不是我們平時拍照的那個相機,而是graphic包下的Camera,專業給View拍照的相機,不過既然是相機,作用都是類似的,主要是將3D的內容拍扁變成2D

定義View進階-Matrix詳解

這應該是目前最詳細的一篇講解Matrix的中文文章了,在上一篇文章Matrix原理中,我們對Matrix做了一個簡單的瞭解,偏向理論,在本文中則會詳細的講解Matrix的具體用法,以及與Matrix相關的一些實用技巧。 ⚠️ 警告:測試本文章示例之前請關閉硬體加速。

定義View進階-Matrix原理

本文內容偏向理論,和 畫布操作 有重疊的部分,本文會讓你更加深入的瞭解其中的原理。 本篇的主角Matrix,是一個一直在後臺默默工作的勞動模範,雖然我們所有看到View背後都有著Matrix的功勞,但我們卻很少見到它,本篇我們就看看它是何方神聖吧。 由於Goog

定義View進階-PathMeasure

可以看到,在經過 Path之基本操作 Path之貝塞爾曲線 和 Path之完結篇 後, Path中各類方法基本上都講完了,表格中還沒有講解到到方法就是矩陣變換了,難道本篇終於要講矩陣了? 非也,矩陣這一部分仍在後面單獨講解,本篇主要講解 PathMeasure 這個類與 Path 的

定義View進階-Path之貝塞爾曲線

在上一篇文章Path之基本操作中我們瞭解了Path的基本使用方法,本次瞭解Path中非常非常非常重要的內容-貝塞爾曲線。 一.Path常用方法表 為了相容性(偷懶) 本表格中去除了在API21(即安卓版本5.0)以上