0

当用户长按 android 屏幕时,我尝试显示敬酒......但没有显示。为什么?简单的触摸显示敬酒“触摸”工作正常!错误在哪里?

public class MainActivity extends Activity {
  Handler handler = new Handler(); 

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

Runnable mLongPressed = new Runnable() { 
    public void run() { 
        Toast.makeText(getBaseContext(), 
                "Long press",
                Toast.LENGTH_LONG).show();
    }   
};

@Override
public boolean onTouchEvent(MotionEvent event){
    if(event.getAction() == MotionEvent.ACTION_DOWN)
        Toast.makeText(getBaseContext(), 
                " touch ",
                Toast.LENGTH_LONG).show();
        handler.postDelayed(mLongPressed, 1000);
    if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP))
        handler.removeCallbacks(mLongPressed);
    return super.onTouchEvent(event);
}
4

2 回答 2

1

您应该使用GestureDetector来确定长按,如下所示:

final GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
        public void onLongPress(MotionEvent e) {
            Toast.makeText(getBaseContext(), "Long press", Toast.LENGTH_LONG).show();
        }
    });

    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    };
于 2013-05-08T12:06:43.650 回答
0

片段:

public class MainActivity extends Activity implements OnLongClickListener {


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

    View yourView = (View) findViewById(R.id.longclickview);
    yourView.setOnLongClickListener(this);
}

@Override
public boolean onLongClick(View v) {
    Toast.makeText(getBaseContext(), 
            "Long press",
            Toast.LENGTH_LONG).show();
    return false;
}
于 2013-05-08T12:03:38.720 回答