zoukankan      html  css  js  c++  java
  • Android MotionEvent 坐标获取

    Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别

    getX()           :   是获取相对当前控件(View)的坐标

    getRawX()   :   是获取相对显示屏幕左上角的坐标

    演示示例代码

    Java代码:

    public class MainActivity extends Activity implements OnTouchListener {
    	private Button btn;
    	private int x = 0, y = 0;
    	private int rawX = 0, rawY = 0;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    
    		btn = (Button) findViewById(R.id.btn);
    		btn.setOnTouchListener(this);
    	}
    
    	@Override
    	public boolean onTouch(View view, MotionEvent event) {
    		int eventaction = event.getAction();
    
    		switch (eventaction) {
    		case MotionEvent.ACTION_DOWN:
    			break;
    
    		case MotionEvent.ACTION_MOVE:
    			x = (int) event.getX();
    			y = (int) event.getY();
    			rawX = (int) event.getRawX();
    			rawY = (int) event.getRawY();
    			
    			Log.e("homer", "x = " + x + "; y = " + y + "; rawX = " + rawX + "; rawY = " + rawY);
    			break;
    			
    		case MotionEvent.ACTION_UP:
    			break;
    		}
    
    		return false;
    	}
    }


    xml 代码:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        tools:context=".MainActivity" >
    
        <TextView
            android:id="@+id/txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="@string/hello_world" />
    
        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/txt"
            android:layout_centerInParent="true"
            android:text="button me" />
    </RelativeLayout>


    运行结果:

    结果说明:

    x,y  :  分别获取的相对Button控件的坐标 getX(), getY()

    rawX,rawY  : 分别获取的相对显示屏幕左上角的坐标 getRawX(), getRawY()

    总结: 

    getX() 是表示Widget相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕); getY(),getRawY()一样的道理

    参考推荐:

    Android 获取屏幕尺寸与密度

    Android的计量单位px,in,mm,pt,dp,dip,sp

    Bitmap 之 getPixels() 的 stride

  • 相关阅读:
    分支与循环(1)
    Python+selenium基本操作二
    python+selenium的八种定位方法
    变量与字符,数字连续
    Django虚拟环境拷贝到另一台电脑,不能直接使用的问题
    django部署到服务器使用manage.py runserver简单测试
    python中将main函数写成接口后main函数中的参数不能传递问题
    mac word2016尾部下划线不能显示
    简单的秒表实例
    Math.random理解练习
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3000902.html
Copyright © 2011-2022 走看看