触摸(而不是单击)侦听器

时间:2012-08-08 14:57:39

标签: ontouchlistener

最近两天我试图在Android API7中编写简单的拖放功能,但所有的时间我都有问题。现在有触控听众。我使用onTouchListener,但只有当我在UI元素上按屏幕时才调用onTouch方法。当我在另一个地方按屏幕然后我用指定的onTouchListener将我的手指移动到元素上方时没有任何事情发生。为什么? 可以使用android的任何监听器,它可以在UI元素所在的位置点击屏幕而无法触摸触摸事件吗? Thanx求救,因为我今天疯了;)

1 个答案:

答案 0 :(得分:0)

onTouchListener仅用于视图。 U可以将它用于任何布局(LinearLayout for ex)。如果您的布局带有“fill_parent”参数,它将适用于您的所有屏幕。你还需要控制你的ACTION_DOWN,UP和MOVE参数。也许这个样本可以帮助你:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;

public class main extends Activity implements OnTouchListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    LinearLayout ll =(LinearLayout)this.findViewById(R.id.ll);
    ll.setOnTouchListener(this);
}

@Override
public boolean onTouch(View v, MotionEvent event)
{
    int action=event.getAction();
    StringBuilder str=new StringBuilder();
    str.append("\nActrion type: ");

    switch(action)
    {
        case MotionEvent.ACTION_DOWN: str.append(«ACTION_DOWN\n»);break;
        case MotionEvent.ACTION_MOVE: str.append(«ACTION_MOVE\n»);break;
        case MotionEvent.ACTION_UP: str.append(«ACTION_UP\n»);break;
    }

    Log.v(«Mytag», str.toString());
    return true;
}
}