1. 程式人生 > >android中獲取座標

android中獲取座標

整個座標系是以手機螢幕左上角為原點(0,0),如果在螢幕沒有滑動之前,這一理解肯定是ok的,但在滑屏之後,就會產生很多歧義和混淆,原因在於使用過程當中,很多方法的引數並非是參照螢幕,而是相對於父檢視,對這整個過程和後面自定義控制元件的座標變化帶來的各個引數變化來說理解起來就並不那麼適合了,最開始給人的感覺是越來越不清楚這個座標該怎麼設定,好像座標系總在發生變化,後來才慢慢在思維當中構建起檢視與檢視容器以及螢幕之間的關係。

android.view.View.layout(int l, int t, int r, int b)    layout的過程就是確定View在螢幕上顯示的具體位置,在程式碼中就是設定其成員變數mLeft,mTop,mRight,mBottom的值,這幾個值構成的矩形區域就是該View顯示的位置,
不過這裡的具體位置都是相對與父檢視的位置mLeft代表當前view.layout的這個view的左邊緣離它的父檢視左邊緣的距離,拿上面“子檢視2.layout(int l, int t, int r, int b) ”來說,它的父檢視便是子檢視1,2,3合起來形成的整個大矩形,那麼這裡將父檢視的左上角定為(0,0),那麼可以確定mLeft為一個子檢視寬度320,以此類推,mTop指當前view的上邊緣離父檢視上邊緣的距離。而以此為界,mRight所指的是當前view的右邊緣離父檢視左邊緣的距離,一眼可以看出值為640(mLeft+自己的寬度),mBottom也是指當前view的下邊緣離父檢視的上邊緣的距離。至於為何如此,大概是因為座標系的緣故,座標中的任何點都必須以(0,0)為起點,XY軸為衡量。

相關推薦

android獲取座標

整個座標系是以手機螢幕左上角為原點(0,0),如果在螢幕沒有滑動之前,這一理解肯定是ok的,但在滑屏之後,就會產生很多歧義和混淆,原因在於使用過程當中,很多方法的引數並非是參照螢幕,而是相對於父檢視,對這整個過程和後面自定義控制元件的座標變化帶來的各個引數變化來說理解起來就並不那麼適合了,最開始給人的感覺是越

給大家分享一個在Android獲取驗證碼的倒數計時器,已經封裝好了,直接引用就行。

獲取簡訊驗證碼後,倒數一分鐘,重新獲取 package com.example.tsx.mytest; import android.annotation.SuppressLint; import android.app.Activity; import andro

關於Android獲取包資訊之二

通過第一部分<<Android中獲取應用程式(包)的資訊-----PackageManager的使用(一)>>的介紹,對PackageManager以及 AndroidManife.xml定義的節點資訊類XXXInfo類都有了一定的認識。   

關於android 獲取應用程式的包資訊

 Android系統為我們提供了很多服務管理的類,包括ActivityManager、PowerManager(電源管理)、AudioManager(音訊管理) 等。除此之外,還提供了一個PackageManger管理類,它的主要職責是管理應用程式包。 通過它,我們就可以獲取應用程

Android獲取控制元件尺寸的時機

在Android開發的時候,我們通常要獲取控制元件的大小。在activity中獲取控制元件的大小,onCreate()方法獲取到的值往往是0,是因為在系統執行該方法的時候,控制元件還沒有繪製完成。而在activity獲取或失去焦點的時候會呼叫一個onWindowFocusCh

Android獲取TextView行數

專案中發現,如果直接通過TextView.getLineCount()方法獲取行數時,總是0,研究發現,setText()後立即呼叫getLineCount(), 這時TextView還未完成measure,要想正確的獲取TextView的行數有兩種方法 1.用ViewT

android獲取日期時間的幾種方式

日期時間的獲取方式如下所示: 1、使用SimpleDateFormat和Date類獲取日期時間 private String _GetYear(){ SimpleDateFormat sdf

Android獲取網路狀態的getConnectivityManager

在獲取網路狀態前記得加上此許可權: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 工具類如下: public class NetworkUtil { privat

Android 獲取簽名md5 和sha1

Win+R開啟執行視窗輸入cmd回車 然後輸入: keytool -v -list -keystore C:\Users\AAAA\Desktop\keystore.jks -alias nam

android獲取package的versionCode和versionName

//獲取當前軟體的版本getPackageInfo("系統中其他已經案子的軟體包名", PackageManager.GET_CONFIGURATIONS); //獲取系統日曆的版本資訊 packageInfo = getPackageManager().getPackag

Android獲取View寬高方法

Android開發中經常需要獲取控制元件的寬高,比如前不久我在寫一個圖片載入庫時,因為需要對Bitmap進行裁剪就遇到了需要獲取ImageView寬高的問題。 如果稍微瞭解過一下View的繪製過程,就會知道直接在onCreate()等生命週期回撥方法中獲取寬高,獲取到的值是0

Android獲取螢幕物理尺寸的方法

第一種方法 //獲取螢幕寬度 int screenWidth = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)

Android獲取不同語言目錄下的字串

首先建立兩個API: private final static String LAN_FR = "fr"; private final static String LAN_ES = "es"; Resources getResourcesB

Android獲取apk安裝包資訊的方法

public class TestActivity extends Activity {  @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setCon

Android獲取基於基站的經緯度資訊

目前獲取經緯度一共有兩種方法: 一是通過谷歌的地圖API來獲取經緯度,一般獲取的精確度比較的大,詳細請參考文章:http://www.shouyanwang.org/thread-32-1-1.html 還剩下的一種就是藉助移動的基站定位來獲取經緯度: 移動基站的定位必須藉助儲存卡,目前已經測試的,中國電信和

android獲取lac和cid的方法

直接上程式碼 TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 返回值

Android獲取ActionBar為null的問題

由於ActionBar是在android3.0以後引入的,所以必然出現相容的問題。有時候我們在獲取ActionCar的時候出現空指標問題。如果工程是要相容3.0以下的版本(Activity 繼承AppCompatActivity),那麼要import以下: import

Android獲取系統記憶體資訊以及程序資訊-----ActivityManager的使用(一)

                                                                                                         轉載請註明出處:http://blog.csdn.net/qin

詳解Android獲取SD卡和記憶體的空間資訊

建立一個新的Android工程,工程名字為《獲取儲存空間大小》,包名為:com.connect.storageSize 這裡使用預設生成的佈局檔案和Activity類。 修改佈局檔案activity_main.xml 佈局檔案第二部分: 編寫業務程式碼 業務程式碼第一部分: 業務程

Android獲取當前正在顯示的Activity

1.監聽Activity的生命週期在Application的onCreate方法中監聽Activity的生命週期 registerActivityLifecycleCallbacks(new Activ