How to get a continuous Touch Event?

后端 未结 7 1653
死守一世寂寞
死守一世寂寞 2021-01-17 14:01

My class extends View and I need to get continuous touch events on it.

If I use:

public boolean onTouchEvent(MotionEvent me) {

    if(me.getAction()         


        
7条回答
  •  滥情空心
    2021-01-17 14:14

    Try this. It works to me:

    public static OnTouchListener loadContainerOnTouchListener() {
        OnTouchListener listener = new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            LinearLayout layout = (LinearLayout)v;
            for(int i =0; i< layout.getChildCount(); i++)
            {
                View view = layout.getChildAt(i);
                Rect outRect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
                if(outRect.contains((int)event.getX(), (int)event.getY()))
                {
                    Log.d(this.getClass().getName(), String.format("Over view.id[%d]", view.getId()));
                }
            }
    
        }
    

    Remember: the listener you´ll set must be a container layout (Grid, Relative, Linear).

    LinearLayout layout = findViewById(R.id.yourlayoutid);
    layout.setOnTouchListener(HelperClass.loadContainerOnTouchListener());
    

提交回复
热议问题