国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Android進階之view坐標系全面詳解

移動開發(fā) Android
說到Android坐標系其實就是一個三維坐標,Z軸向上,X軸向右,Y軸向下。這三維坐標的點處理就能構成Android豐富的界面或者動畫等效果。

前言

首先祝大家國慶節(jié)快樂,玩的開心;

一、Android坐標系詳解

說到Android坐標系其實就是一個三維坐標,Z軸向上,X軸向右,Y軸向下。這三維坐標的點處理就能構成Android豐富的界面或者動畫等效果;

1、Android屏幕一些值的獲取

①獲取屏幕區(qū)域的寬高等尺寸獲取

  1. DisplayMetrics metrics = new DisplayMetrics(); 
  2. getWindowManager().getDefaultDisplay().getMetrics(metrics); 
  3. int widthPixels = metrics.widthPixels; 
  4. int heightPixels = metrics.heightPixels; 

②應用程序App區(qū)域寬高等尺寸獲取

  1. Rect rect = new Rect(); 
  2. getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); 

③獲取狀態(tài)欄高度

  1. Rect rect= new Rect(); 
  2. getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); 
  3. int statusBarHeight = rectangle.top

④View布局區(qū)域寬高等尺寸獲取

  1. Rect rect = new Rect(); 
  2. getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(rect); 

2、Android View絕對相對坐標系

View的靜態(tài)坐標方法

  • getLeft():返回View自身左邊到父布局左邊的距離;
  • getTop():返回View自身頂邊到父布局頂邊的距離;
  • getRight():返回View自身右邊到父布局左邊的距離;
  • getBottom():返回View自身底邊到父布局頂邊的距離;
  • getX():返回值為getLeft()+getTranslationX(),當setTranslationX()時getLeft()不變,getX()變;
  • getY():返回值為getTop()+getTranslationY(),當setTranslationY()時getTop()不變,getY()變;

3、手指觸摸屏幕時MotionEvent提供的一些方法

  • getX():當前觸摸事件距離當前View左邊的距離
  • getY():當前觸摸事件距離當前View頂邊的距離
  • getRawX():當前觸摸事件距離整個屏幕左邊的距離
  • getRawY():當前觸摸事件距離整個屏幕頂邊的距離

4、View寬高方法

  • getWidth()layout后有效,返回值是mRight-mLeft;
  • getHeight()layout后有效,返回值是mBottom-mTop;
  • getMeasuredWidth()返回measure過程得到的mMeasuredWidth值;
  • getMeasuredHeight()返回measure過程得到的mMeasuredHeight值;

5、Android View滑動相關坐標系

View的滑動方法

  • offsetLeftAndRight(int offset)|水平方向挪動View,offset為正則x軸正向移動,移動的是整個View,getLeft()會變的,自定義View很有用;
  • offsetTopAndBottom(int offset)|垂直方向挪動View,offset為正則y軸正向移動,移動的是整個View,getTop()會變的,自定義View很有用;
  • scrollTo(int x, int y)|將View中內容(不是整個View)滑動到相應的位置,參考坐標原點為ParentView左上角,x,y為正則向xy軸反方向移動,反之同理;
  • scrollBy(int x, int y)|在scrollTo()的基礎上繼續(xù)滑動xy。
  • setScrollX(int value)|實質為scrollTo(),只是只改變Y軸滑動。
  • setScrollY(int value)|實質為scrollTo(),只是只改變X軸滑動。
  • getScrollX()/getScrollY()|獲取當前滑動位置偏移量。

關于Android View的scrollBy()和scrollTo()參數傳遞正數卻向坐標系負方向移動的特性可能很多人都有疑惑,甚至是死記結論,這里我們簡單給出產生這種特性的真實原因—-源碼分析,如下:

  1. public void scrollTo(int x, int y) { 
  2.     if (mScrollX != x || mScrollY != y) { 
  3.        int oldX = mScrollX; 
  4.        int oldY = mScrollY; 
  5.        mScrollX = x; 
  6.        mScrollY = y; 
  7.        invalidateParentCaches(); 
  8.        onScrollChanged(mScrollX, mScrollY, oldX, oldY); 
  9.        if (!awakenScrollBars()) { 
  10.          postInvalidateOnAnimation(); 
  11.        } 
  12.    } 

View的該方法注釋里明確說明了調運他會觸發(fā)onScrollChanged()和invalidated()方法,那我們就將矛頭轉向invalidated()方法觸發(fā)的draw()過程,draw()過程中最終其實會觸發(fā)下面的invalidate()方法,如下:

  1. public void invalidate(int l, int t, int r, int b) { 
  2.     final int scrollX = mScrollX; 
  3.     final int scrollY = mScrollY; 
  4.     //scroller時為何參數和坐標反向的真實原因 
  5.     invalidateInternal(l - scrollX, t - scrollY, r - scrollX, b - scrollY, truefalse); 

核心就在這里

scrollTo()和scrollBy()方法特別注意:如果你給一個ViewGroup調用scrollTo()方法滾動的是ViewGroup里面的內容,如果想滾動一個ViewGroup則再給他嵌套一個外層,滾動外層即可

總結

 

  • view獲取自身坐標:getLeft(),getTop(),getRight(),getBottom()
  • view獲取自身寬高:getHeight(),getWidth()
  • motionEvent獲取坐標:getX(),getY(),getRawX(),getRawY()
  • 然后是motionEvent的方法:
  • getX():獲取點擊事件相對控件左邊的x軸坐標,即點擊事件距離控件左邊的距離
  • getY():獲取點擊事件相對控件頂邊的y軸坐標,即點擊事件距離控件頂邊的距離
  • getRawX():獲取點擊事件相對整個屏幕左邊的x軸坐標,即點擊事件距離整個屏幕左邊的距離
  • getRawY():獲取點擊事件相對整個屏幕頂邊的y軸坐標,即點擊事件距離整個屏幕頂邊的距離

 

責任編輯:武曉燕 來源: Android開發(fā)編程
相關推薦

2013-04-01 13:19:43

iOS定位與坐標算法

2021-08-17 13:41:11

AndroidView事件

2023-03-29 07:31:09

WebGL坐標系

2023-04-24 09:52:12

2011-08-08 17:17:55

Cocos2D 坐標 OpenglES

2011-06-24 17:38:09

Qt 坐標 事件

2021-08-25 07:43:17

AndroidSurfaceViewTextureView

2021-09-07 06:40:25

AndroidLiveData原理

2021-08-10 20:41:33

AndroidApp流程

2021-09-01 06:48:16

AndroidGlide緩存

2021-09-17 06:55:50

AndroidLayoutView

2021-09-16 06:44:04

Android進階流程

2013-05-20 17:33:44

Android游戲開發(fā)自定義View

2021-08-23 06:27:46

AndroidctivitysetContentV

2021-09-02 07:00:01

Glide流程Android

2021-09-30 07:36:51

AndroidViewDraw

2013-07-24 19:04:52

iOS開發(fā)學習CGRectInset

2011-08-09 16:25:16

Cocos2d視圖坐標

2021-08-11 17:15:17

AndroidActivity場景

2023-07-07 13:56:01

圖形編輯器畫布縮放
點贊
收藏

51CTO技術棧公眾號

91久久久亚洲精品| 男人和女人做事情在线视频网站免费观看 | hitomi一区二区三区精品| 国产99久久精品一区二区| 91综合国产| 亚洲精品之草原avav久久| 亚洲精品传媒| 欧美日韩午夜剧场| 午夜影院在线| 亚洲精品中文在线| 电影天堂爱爱爱爱| 亚洲人成电影网站色mp4| 日韩免费高清在线| 国产性天天综合网| 青青草精品视频在线观看| 福利电影一区二区| heyzo亚洲| 99国产麻豆精品| 国产精品无码专区av在线播放| 高清不卡一区二区| 97视频在线免费| 久久色在线观看| 色戒在线免费观看| 一区二区日韩av| 传媒在线观看| 亚洲成a人片在线观看中文| 曰韩少妇与小伙激情| 亚洲一区二区三区影院| 在线观看视频你懂的| 色婷婷国产精品久久包臀| 国产剧情在线观看| 日韩欧美国产wwwww| 国模精品视频| 国产小视频国产精品| 国产精品久久久久久久久久齐齐| 中文字幕精品久久久久| 韩国三级大全久久网站| 欧美在线激情网| 亚洲视频狠狠| 综合视频在线观看| 国产性色一区二区| 一级片在线观看| 欧美va日韩va| **国产精品| 国产精品视频xxx| 极品尤物久久久av免费看| 日韩在线国产| 国产日韩欧美综合在线| 在线欧美一级视频| 精品国精品国产尤物美女| 欧美高清你懂的| 国产精品wwwwww| 亚洲综合精品| 人妻熟女一二三区夜夜爱| 亚洲一区二区在线播放相泽| 免费a级毛片在线播放| 中文字幕日韩电影| 91影院成人| 中文字幕成人一区| 一区二区三区四区高清精品免费观看| 3p视频在线观看| 久久精品91久久香蕉加勒比| 久久麻豆精品| 成人在线免费观看视频网站| 国产精品成人免费| 欧美1234区| 亲子乱一区二区三区电影| 亚洲少妇诱惑| 五月天激情视频在线观看| 欧美日韩国产免费| 91久久精品无嫩草影院| 九色91在线视频| 国产精品欧美综合在线| 菠萝菠萝蜜在线观看| 国产做受高潮69| 日韩精品电影在线| 好男人社区在线视频| 精品久久久久久久久久久院品网 | 999久久久91| 一级黄色片播放| 亚洲福利视频三区| 综合在线影院| 成人免费在线视频网站| 高清国产午夜精品久久久久久| 美女免费免费看网站| 日韩www在线| 91亚洲人成网污www| 五月丁香综合缴情六月小说| 日韩欧美在线视频日韩欧美在线视频| 日韩成人在线电影| 日韩中文字幕一区| 欧美日韩激情视频| **精品中文字幕一区二区三区| 精品视频在线观看| 一区二区成人在线视频| 成人午夜亚洲| 欧美一区二区三区在线免费观看 | 日韩欧美xxxx| 日韩精品中文字幕一区| 日韩欧美一区二区三区在线视频 | 欧美视频综合| 97视频在线观看免费| 激情综合五月天| 在线观看的av| 国产在线不卡精品| 亚洲欧美一区二区久久| 四虎精品永久免费| 中文字幕精品在线播放| 日韩一区二区精品| 女人香蕉久久**毛片精品| 成人www视频网站免费观看| 亚洲色图日韩av| 久久精品亚洲| 成av人电影在线观看| 成人乱色短篇合集| 亚洲午夜国产一区99re久久| av男人一区| 日本888xxxx| 欧美精品在线第一页| 成人爱爱电影网址| www.一区| 国产最新免费视频| 久久精品亚洲精品| 久久精品一区蜜桃臀影院| 动漫一区二区三区| 国自产拍偷拍精品啪啪一区二区| 日韩av在线一区二区| 日本不卡高清视频| 国产蜜臀在线| 亚洲成人自拍视频| 亚洲国产成人在线视频| 天堂va蜜桃一区二区三区漫画版| 免费av在线播放| 日本高清久久一区二区三区| 91精品婷婷国产综合久久竹菊| 欧美激情1区2区3区| 九色在线播放| 国产日韩欧美一区二区三区四区 | 在线播放国产区| 成人激情视频小说免费下载| 亚洲精品videosex极品| 国产精品三p一区二区| 精品日韩久久久| 91福利视频网| 精品国产精品三级精品av网址| 大片网站久久| 蜜桃视频在线观看视频| 91久久中文字幕| 欧美日韩你懂的| 麻豆高清免费国产一区| 黄色污网站在线观看| 日本a在线天堂| 久99久在线视频| 亚洲欧美色一区| 在线免费观看日本欧美爱情大片| chinese偷拍一区二区三区| 色之综合天天综合色天天棕色| 亚洲国产一区二区三区四区| 国产乱人伦偷精品视频免下载 | 成人免费网站视频www| 国产欧美一区二区三区视频 | 狠狠色伊人亚洲综合成人| 国产精品迅雷| 午夜网站在线观看| 91日本在线视频| 欧美电影免费观看完整版| 国产aⅴ综合色| 欧美变态挠脚心| 国产视频网址在线| 中文字幕剧情在线观看一区| 久久av资源网站| 欧美日韩加勒比精品一区| 久久精品一本| 51亚洲精品| 99免在线观看免费视频高清| 青青草影院在线观看| 久久欧美在线电影| 欧美日韩视频一区二区| 成人毛片视频在线观看| 日韩中文在线电影| 国产精品极品美女在线观看| jlzzjlzz欧美| 亚洲激情图片| 2020久久国产精品| 亚洲第一中文字幕| 亚洲精品免费看| 久久成人av少妇免费| 青青操综合网| a√中文在线观看| 中文日本高清免费| 免费看日b视频| av色综合网| 欧美成人国产va精品日本一级| 日本电影亚洲天堂一区| 91在线视频观看| 欧美精品午夜| 精品福利网址导航| 超碰97国产精品人人cao| 日韩男人天堂| 久久久999视频|