獲取控制元件在螢幕中的座標
阿新 • • 發佈:2019-01-29
1.核心函式
getLocationOnScreen //獲取在當前螢幕內的絕對座標 (注意這個值是要從螢幕頂端算起,包括了狀態列和通知欄的高度)
getLocationInWindow //獲取在整個視窗內的絕對座標,感覺安卓裡面沒有視窗的概念,測了幾組資料和上邊函式效果類似
getLeft , getTop, getBottom, getRight, 這一組是獲取相對在它父親裡的座標
2.核心程式碼
int[] location = new int[2] ; view.getLocationInWindow(location); //獲取在當前視窗內的絕對座標 view.getLocationOnScreen(location);//獲取在整個螢幕內的絕對座標 location [0]--->x座標,location [1]--->y座標
3.自己寫的例子
activity_main.xml
activity程式碼<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btn" android:layout_width="200dp" android:layout_height="100dp" android:text="按鈕"/> <Button android:id="@+id/btn1" android:layout_marginTop="80dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按鈕"/> </LinearLayout>
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getButtonLocation(); } public void getButtonLocation() { final Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int[] position = new int[2]; //btn.getLocationInWindow (position);//相對於視窗的座標 btn.getLocationOnScreen (position);//相對於螢幕的座標 Toast.makeText(getApplicationContext(),"距離左邊螢幕距離:"+position[0]+"距離上邊螢幕距離:"+position[1],Toast.LENGTH_SHORT).show(); } }); final Button btn1 = (Button) findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int[] position = new int[2]; btn1.getLocationOnScreen (position);//相對於螢幕的座標 Toast.makeText(getApplicationContext(),"距離左邊螢幕距離:"+position[0]+"距離上邊螢幕距離:"+position[1],Toast.LENGTH_SHORT).show(); } }); } }
執行結果:(我在電視機上測的,沒有狀態列和標題欄)
距離左邊螢幕距離:0 距離上邊螢幕距離:0距離左邊螢幕距離:0 距離上邊螢幕距離:180