android 获取控件在屏幕中的坐标
今天,簡單講講android如何獲取控件在屏幕中的坐標。
這個其實也很簡單,但是昨天做一個功能時,需要功能控件的坐標做一些邏輯操作時,居然不知道怎么做。所以在網上查找了資料后,解決了這個問題。這里記錄一下。
getLocationOnScreen ,計算該視圖在全局坐標系中的x,y值,(注意這個值是要從屏幕頂端算起,也就是索包括了通知欄的高度)//獲取在當前屏幕內的絕對坐標
getLocationInWindow ,計算該視圖在它所在的widnow的坐標x,y值,//獲取在整個窗口內的絕對坐標 (不是很理解= =、)
getLeft , getTop, getBottom, getRight, 這一組是獲取相對在它父親里的坐標
如果在Activity的OnCreate()事件輸出那些參數,是全為0,要等UI控件都加載完了才能獲取到這些。
package xiaosi.location;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView;public class LocationActivity extends Activity {/** Called when the activity is first created. */private ImageView t = null;private Button button = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);t = (ImageView)findViewById(R.id.l);button = (Button)findViewById(R.id.button);button.setOnClickListener(new buttonListener());} public class buttonListener implements OnClickListener{public void onClick(View v){int[] location = new int[2];t.getLocationOnScreen(location);int x = location[0];int y = location[1];System.out.println("x:"+x+"y:"+y);System.out.println("圖片各個角Left:"+t.getLeft()+"Right:"+t.getRight()+"Top:"+t.getTop()+"Bottom:"+t.getBottom());}} }
xml文件如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/button"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="button"/><ImageViewandroid:id="@+id/l"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/a" /> </LinearLayout>
輸出結果是:
那如果需要打開activity時獲取控件的位置怎么辦?其實也很簡單。
如果在Activity的OnCreate()事件輸出那些參數,是全為0,要等UI控件都加載完了才能獲取到這些。
在onWindowFocusChanged(boolean hasFocus)中獲取為好
即覆寫Activity的onWindowFocusChanged(boolean hasFocus)方法
XXX_Activity:
android 獲取控件在屏幕中的坐標就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 获取控件在屏幕中的坐标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android studio 查找文件在
- 下一篇: android 使用photoshop