簡體   English   中英

Android使用OnTouch檢測longClick位置

[英]Android using OnTouch to Detect longClick positions

好吧,我的目標是檢測長點擊的位置,我很困惑從何處開始,但是我嘗試使用OnTouch,因為它有助於檢測點擊的位置,我試圖使用計時器使它作為longClick運行,但它不會工作

 clickableObject.setOnTouchListener(new View.OnTouchListener() { @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){ if(!hold)startTime=System.currentTimeMillis(); } else if(motionEvent.getAction()==MotionEvent.ACTION_UP){ hold=false; } while(motionEvent.getAction()==MotionEvent.ACTION_DOWN&&System.currentTimeMillis()-startTime<=1500); if(System.currentTimeMillis()-startTime>1500) Toast.makeText(context, "done", Toast.LENGTH_SHORT).show(); return true; } }); /* 

當我單擊快捷鍵時,它可以正常工作,而我希望它只能在longClick上工作

一種更簡單的方法:

clickableObject.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            Toast.makeText(context, "done", Toast.LENGTH_SHORT).show();
            return true;
        }
    });

最終我找到了一個解決方案,我在OnTouch中使用longClick偵聽器創建了onTouchListener,我只獲得了位置

在OnLongListener中,我使用position的值

 @SuppressLint("ClickableViewAccessibility") public void getClickPositions(View clickableObject, final ClickPositions clickPositions){ clickableObject.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN) { if (clickPositions != null) clickPositions.getLastCordination(motionEvent.getX(), motionEvent.getY()); } return false; } }); } public interface ClickPositions{void getLastCordination(float left,float top);} public void showImageOptions(final View clickableObject, final ClickPositions clickPositions) { getClickPositions(clickableObject, new ClickPositions() { @Override public void getLastCordination(float left, float top) { x = left; y = top; } }); clickableObject.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Toast.makeText(context, String.valueOf(x) + ",", Toast.LENGTH_SHORT).show(); return false; } }); } 

然后我只調用函數showImageOption

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM