首页 > 代码库 > getHitRect获取点击控件的位置

getHitRect获取点击控件的位置


public  void getHitRect(Rect outRect)                  
Added in API level 1
Hit rectangle in parent‘s coordinates:找到控件占据的矩形区域的矩形坐标
Parameters
outRect: The hit rectangle of the view:控件占据的矩形区域


测试代码如下,根据代码可以很直观的知道这个函数的用法:

package com.sean.gethitrecttest;

import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    private TextView mTextView;
    private Button mButton;
    Rect Trect = new Rect();
    Rect Brect = new Rect();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextView = (TextView) this.findViewById(R.id.TextView01);
        mButton = (Button) this.findViewById(R.id.Button01);
        mButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                mTextView.getHitRect(Trect);
                mButton.getHitRect(Brect);

                Log.d("Lichking",
                        "---------TextView_left-------"
                                + String.valueOf(Trect.left));
                Log.d("Lichking",
                        "---------TextView_top-------"
                                + String.valueOf(Trect.top));
                Log.d("Lichking",
                        "---------TextView_right-------"
                                + String.valueOf(Trect.right));
                Log.d("Lichking",
                        "---------TextView_bottom-------"
                                + String.valueOf(Trect.bottom));

                Log.d("Lichking",
                        "---------Button_left-------"
                                + String.valueOf(Brect.left));
                Log.d("Lichking",
                        "---------Button_top-------"
                                + String.valueOf(Brect.top));
                Log.d("Lichking",
                        "---------Button_right-------"
                                + String.valueOf(Brect.right));
                Log.d("Lichking",
                        "---------Button_bottom-------"
                                + String.valueOf(Brect.bottom));

            }
        });

    }
}

布局图如下:只有居中的线性排列的一个TextView和一个Button


使用mTextView.getHitRect      (TRect)和mButton.getHitRect(BRect)调用这个函数之后,Trect和Brect就指图中的紫色和灰色矩形对象。
查看log如下:

从中我们知道了紫色TextView所占据矩形的第二象限顶点和第四象限顶点坐标为(247,373)和(293,405)
灰色Button所占据矩形的第二象限顶点和第四象限顶点坐标为(222,405)和(318,477)。


一个应用:判断是否点击到该控件上
boolean isHit = Trect.contains((int)event.getX(), (int)event.getY());

getHitRect获取点击控件的位置