zoukankan      html  css  js  c++  java
  • 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());

  • 相关阅读:
    【java】之位运算^,&,<<,>>,<<<,>>>总结
    【java】之算法复杂度o(1), o(n), o(logn), o(nlogn)
    【springboot】之自动配置原理
    【git】之使用shell脚本提交代码
    【linux】之日志查看
    【mysql】字段类型和长度的解释
    老生常谈:++a与a--区别
    关于tr:hover变色的问题
    服务器端渲染VS浏览器端渲染
    HTTP状态码302、303、307区别
  • 原文地址:https://www.cnblogs.com/xgjblog/p/3940206.html
Copyright © 2011-2022 走看看