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