日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 获取控件在屏幕中的坐标

發布時間:2024/4/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:

@Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);int[] location1 = new int[2] ;view.getLocationInWindow(location1); //獲取在當前窗口內的絕對坐標int[] location2 = new int[2] ;view.getLocationOnScreen(location2);//獲取在整個屏幕內的絕對坐標//do something}


android 獲取控件在屏幕中的坐標就講完了。


就這么簡單。



總結

以上是生活随笔為你收集整理的android 获取控件在屏幕中的坐标的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。