自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

View與ViewGroup的位置參數(shù)、觸摸事件坐標(biāo)及手勢(shì)識(shí)別

開發(fā) 前端
「坐標(biāo)與手勢(shì)識(shí)別」了解MotionEvent中的坐標(biāo)對(duì)于識(shí)別和理解用戶的手勢(shì)(如滑動(dòng)、點(diǎn)擊、縮放等)至關(guān)重要。例如,通過比較連續(xù)觸摸事件的坐標(biāo)變化,可以識(shí)別出用戶是否在進(jìn)行滑動(dòng)操作,以及滑動(dòng)的方向和距離。

View與ViewGroup

View和ViewGroup是Android中最基本的UI組件,在構(gòu)建Android應(yīng)用程序的用戶界面時(shí)起著核心作用。

  1. 「View」:

定義:View表示屏幕上的一個(gè)獨(dú)立的可見元素。是Android平臺(tái)中用戶界面體現(xiàn)的基礎(chǔ)單位,是一個(gè)可見的矩形區(qū)域,可以響應(yīng)用戶的交互事件。

示例:TextView、ImageView、Button等都是View的具體實(shí)例。這些元素各自提供了特定的UI功能和交互方式。

繼承關(guān)系:View繼承自android.view.View類。

用途:View是布局中的實(shí)際頁面元素,構(gòu)成了用戶界面的基礎(chǔ)內(nèi)容。

  1. 「ViewGroup」:

定義:ViewGroup表示屏幕上的一個(gè)容器,能夠包含其他View或ViewGroup。是一種特殊的View,用于組織和管理其子View的布局和層次結(jié)構(gòu)。

示例:LinearLayout、RelativeLayout、FrameLayout等都是ViewGroup的具體實(shí)例。這些容器各自提供了不同的布局方式和管理策略。

繼承關(guān)系:ViewGroup繼承自View類。ViewGroup本質(zhì)上也是一個(gè)View,但具有額外的功能來容納和管理其他View。

用途:ViewGroup用于控制其內(nèi)部View的視圖結(jié)構(gòu),如控制子View的排列方向、間隔大小等。在Android中,布局是由View和ViewGroup共同組成的。

View位置參數(shù)

View的位置參數(shù)主要決定了其在屏幕上的具體位置和大小。

圖片圖片

  • 「top」:表示View左上角的縱坐標(biāo)。相對(duì)于其父容器(ViewGroup)的頂部邊緣的距離。
  • 「left」:表示View左上角的橫坐標(biāo)。相對(duì)于其父容器(ViewGroup)的左側(cè)邊緣的距離。
  • 「right」:表示View右下角的橫坐標(biāo)。相對(duì)于其父容器(ViewGroup)的左側(cè)邊緣的距離。View的寬度(width)可以通過right - left計(jì)算得出。
  • 「bottom」:表示View右下角的縱坐標(biāo)。相對(duì)于其父容器(ViewGroup)的頂部邊緣的距離。View的高度(height)可以通過bottom - top計(jì)算得出。
//View坐標(biāo)的四個(gè)參數(shù)的獲?。篻etLeft(),getTop(),getRight(),getBottom()
left = getLeft();
top = getTop();
right = getRight();
bottom = getBottom();

//View寬高的獲取
width = getWidth();
height = getHeight();

//坐標(biāo)和View寬高的關(guān)系
width = right-left;
height = bottom-top;

坐標(biāo)都是相對(duì)于其父容器的,也就是說,如果一個(gè)View被放置在一個(gè)具有不同位置的ViewGroup內(nèi)部,那么它的top、left、right和bottom值也會(huì)相應(yīng)地改變。

從Android 3.0開始,View還增加了以下幾個(gè)額外的參數(shù):

  • 「x」:表示View左上角的橫坐標(biāo)(包括任何平移變換)。這個(gè)值是通過left + translationX計(jì)算得出的。
  • 「y」:表示View左上角的縱坐標(biāo)(包括任何平移變換)。這個(gè)值是通過top + translationY計(jì)算得出的。
  • 「translationX」:表示View在水平方向上相對(duì)于其原始位置的偏移量。
  • 「translationY」:表示View在垂直方向上相對(duì)于其原始位置的偏移量。

這些額外的參數(shù)可以對(duì)View進(jìn)行更復(fù)雜的變換和動(dòng)畫效果,例如平移、旋轉(zhuǎn)等。

MotionEvent坐標(biāo)

MotionEvent的坐標(biāo)主要涉及到觸摸事件在屏幕上的具體位置,這些位置信息對(duì)于理解用戶的手勢(shì)和操作至關(guān)重要。

圖片圖片

  1. 「相對(duì)坐標(biāo)與絕對(duì)坐標(biāo)」

「相對(duì)坐標(biāo)」:通過getX()和getY()方法獲取的坐標(biāo)是相對(duì)于當(dāng)前消費(fèi)這個(gè)事件的視圖(View)的左上點(diǎn)的坐標(biāo)。坐標(biāo)是相對(duì)于觸發(fā)事件的特定View的,而不是整個(gè)屏幕。

「絕對(duì)坐標(biāo)」:通過getRawX()和getRawY()方法獲取的坐標(biāo)是相對(duì)于整個(gè)屏幕的,即屏幕左上角為原點(diǎn)(0,0)的坐標(biāo)系統(tǒng)。

  1. 「坐標(biāo)值的解釋」

當(dāng)觸摸事件發(fā)生時(shí),使用getX()和getY()來獲取觸摸點(diǎn)相對(duì)于當(dāng)前View左上角的x和y坐標(biāo)。例如,如果觸摸點(diǎn)位于View的中心,并且View的大小為200x200像素,那么getX()和getY()可能會(huì)返回接近100的值(假設(shè)沒有滾動(dòng)或變換)。

getRawX()和getRawY()將返回觸摸點(diǎn)相對(duì)于屏幕左上角的坐標(biāo)。無論觸摸點(diǎn)在哪個(gè)View上,getRawX()和getRawY()都將返回相同的值(只要觸摸點(diǎn)的屏幕位置沒有改變)。

  1. 「示例代碼」
@Override
public boolean onTouchEvent(MotionEvent event) {
    float x = event.getX(); // 獲取相對(duì)坐標(biāo)的x值
    float y = event.getY(); // 獲取相對(duì)坐標(biāo)的y值
    float rawX = event.getRawX(); // 獲取絕對(duì)坐標(biāo)的x值
    float rawY = event.getRawY(); // 獲取絕對(duì)坐標(biāo)的y值
    
    return true;
}
  1. 「坐標(biāo)與手勢(shì)識(shí)別」了解MotionEvent中的坐標(biāo)對(duì)于識(shí)別和理解用戶的手勢(shì)(如滑動(dòng)、點(diǎn)擊、縮放等)至關(guān)重要。例如,通過比較連續(xù)觸摸事件的坐標(biāo)變化,可以識(shí)別出用戶是否在進(jìn)行滑動(dòng)操作,以及滑動(dòng)的方向和距離。

責(zé)任編輯:武曉燕 來源: 沐雨花飛蝶
相關(guān)推薦

2012-02-28 14:07:17

Android觸摸屏手勢(shì)識(shí)別

2013-04-22 15:40:00

Android開發(fā)觸摸事件與點(diǎn)擊事件區(qū)別

2017-04-27 21:00:33

Android滑動(dòng)分析

2013-05-14 11:08:23

AIR Android觸摸事件鼠標(biāo)事件

2022-11-30 07:49:49

交互事件屏幕手勢(shì)識(shí)別

2010-09-10 10:09:26

Android

2013-05-21 11:20:37

Android游戲開發(fā)View手勢(shì)識(shí)別

2021-12-06 10:27:32

XWayland觸摸板手勢(shì)開發(fā)

2021-08-11 14:29:20

鴻蒙HarmonyOS應(yīng)用

2022-05-17 12:25:59

物聯(lián)網(wǎng)智能建筑樓宇自控

2016-12-08 22:59:47

觸摸事件android

2021-09-17 06:55:50

AndroidLayoutView

2024-06-20 11:11:07

2013-05-22 15:49:46

2013-04-15 15:22:06

2011-08-02 16:28:40

iPhone Web開發(fā) 事件

2017-01-11 18:44:43

React Nativ觸摸事件Android

2011-09-02 14:33:26

微軟手勢(shì)Metro Style

2023-03-10 16:40:21

Frameworkinput觸摸事件

2017-12-21 15:42:08

iOS傳遞機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)