比如我知道某个button在(100, 100) 的坐标处
我想通过这个坐标的值来触发butoon的单击动作,该怎么实现?

解决方案 »

  1.   

    点击屏幕的时候判断坐标是不是在这个button上。。如果是则相应事件
      

  2.   

    按钮在(100,100)处,和按钮的size组成一个长方形的坐标集合,只要判断点击的坐标是不是在这个集合里面就行了
      

  3.   

    判断哪个指标是不是在按钮所在的区域(楼上的已经说了),在的话执行事件监听器里面的onClick函数就达到效果了。来个例子
    public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // new MyToast(this,"测试提示消息!",800);
    Button btn = (Button) findViewById(R.id.btn);
    btn.setText("BUTTON");
    OnClickListener onClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
    new MyToast(MainActivity.this, "btn clicked !", Toast.LENGTH_LONG);
    }
    };
    btn.setOnClickListener(onClickListener);
    onClickListener.onClick(btn); //关键就是这里
    }
    }
      

  4.   

    呃,是不是我没表述清楚~~
    不然我这样问吧,我自己定义一个接口
    MyClickEvent(int x, int y);
    我调用这个接口。要怎么转换成onclick事件. 
      

  5.   

    onClick事件的本质貌似就是获得组件的坐标集合,然后判断点击事件是不是在这个集合集合之内,是则触发
      

  6.   

    嘿嘿,实现了~  
    从这个贴子学来的
    http://topic.csdn.net/u/20110511/09/4638a94d-9352-41ea-8be1-4b955ab24321.html由于事件都是通过dispatchTouchEvent 分发的.通过MotionEvent.obtain 实现一个自己的事件 然后传给dispatchTouchEvent就行了
    click事件是由一个ACTION_DOWN和一个ACTION_UP组成的。所以传了两个event实现了下面代码public void myClickEvent(float x, float y) {
    long firstTime = SystemClock.uptimeMillis();
    final MotionEvent firstEvent = MotionEvent.obtain(firstTime, firstTime,
    MotionEvent.ACTION_DOWN, x, y, 0);

    long secondTime = firstTime + 30;
    final MotionEvent secondEvent = MotionEvent.obtain(secondTime,
    secondTime, MotionEvent.ACTION_UP, x, y, 0); dispatchTouchEvent(firstEvent);
    dispatchTouchEvent(secondEvent);
    }