我正在努力获得触摸屏功能。我想根据是否执行某些操作 用户向上或向下触摸屏幕。
这是我的代码
public class Sankhyaki extends Activity implements OnTouchListener, OnKeyListener {
float x = 0, y = 0;
public static final String TAG="Sankhayaki";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sankhyaki);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_sankhyaki, menu);
return true;
}
public boolean onTouch(View v, MotionEvent me)
{
x = me.getX();
y = me.getY();
switch ( me.getAction()) {
case MotionEvent.ACTION_DOWN:
System.out.println("\n ACTION DOWN");
Log.i(TAG, "DOWN");
Log.i(TAG,"DOWN");
Log.i(TAG, "x = " + x + "y = " + y );
break;
case MotionEvent.ACTION_UP:
System.out.println("\n ACTION UP");
Log.i(TAG, "UP");
Log.i(TAG, "x = " + x + "y = " + y );
break;
case MotionEvent.ACTION_MOVE:
System.out.println("\n ACTION MOVE");
Log.i(TAG, "MOVE");
Log.i(TAG, "x = " + x + "y = " + y );
break;
}
return false;
}
}
在模拟器上运行时,当我点击屏幕时我 在LogCat或控制台中看不到任何消息。我不确定我做错了什么。 只是因为我没有在Logcat或Console中看到任何Log消息, 看起来控件不会出现在开关盒中。
我无法验证我是否做得对。
我想在我之后才将更多代码放在开关盒中 确保控制进入开关盒,这里没有发生,
此处的任何信息都会有所帮助。
答案 0 :(得分:1)
您必须将自己的活动注册为听众。首先,在你的XML布局文件中,你需要一个root视图的id:android:id =“@ + id / your_view”
在你的onCreate()方法中,写下:
View v=findViewById(R.id.your_view);
v.setOnTouchListener(this);
答案 1 :(得分:0)
您需要在相应的视图中正确注册触摸事件处理程序...
http://developer.android.com/guide/topics/ui/ui-events.html
http://developer.android.com/reference/android/view/View.OnTouchListener.html
您需要在布局中的相应View项目上进行设置..
View v = findViewById(R.id.whateverView);
v.setOnTouchListener(new onTouchListener()
{
public void onTouch(View v, MotionEvent event)
{
//handle the event
}
});