Android獲得控件在屏幕中的座標

getLocationOnScreen ,計算該視圖在全局座標系中的x,y值,(注意這個值是要從屏幕頂端算起,也就是索包括了通知欄的高度)//獲取在當前屏幕內的絕對座標

getLocationInWindow ,計算該視圖在它所在的widnow的座標x,y值,//獲取在整個窗口內的絕對座標 (不是很理解= =、)

getLeft , getTop, getBottom, getRight, 這一組是獲取相對在它父親裏的座標

若是在Activity的OnCreate()事件輸出那些參數,是全爲0,要等UI控件都加載完了才能獲取到這些。

java

  1. package xiaosi.location;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. import android.widget.ImageView;
  8. public class LocationActivity extends Activity {
  9. /** Called when the activity is first created. */
  10. private ImageView t = null;
  11. private Button button = null;
  12. @Override
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. t = (ImageView)findViewById(R.id.l);
  17. button = (Button)findViewById(R.id.button);
  18. button.setOnClickListener(new buttonListener());
  19. }
  20. public class buttonListener implements OnClickListener{
  21. public void onClick(View v)
  22. {
  23. int[] location = new int[2];
  24. t.getLocationOnScreen(location);
  25. int x = location[0];
  26. int y = location[1];
  27. System.out.println("x:"+x+"y:"+y);
  28. System.out.println("圖片各個角Left:"+t.getLeft()+"Right:"+t.getRight()+"Top:"+t.getTop()+"Bottom:"+t.getBottom());
  29. }
  30. }
  31. }
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;
    @Override
    public 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());
		}
    }
}


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <Button
  7. android:id="@+id/button"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="button"/>
  11. <ImageView
  12. android:id="@+id/l"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:layout_gravity="center"
  16. android:src="@drawable/a" />
  17. </LinearLayout>
<?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" >

    <Button
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="button"/>
    <ImageView
        android:id="@+id/l"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/a" />
</LinearLayout>


相關文章
相關標籤/搜索