Проблема с функциональностью сенсорного экрана в Android
Я пытаюсь получить функциональность сенсорного экрана. Я хочу выполнить некоторые действия в зависимости от того, касается ли пользователь экрана вверх или вниз.
Вот мой код для этого
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 или Console. Я не уверен, что делаю что-то неправильно. просто потому, что я не вижу сообщений Log в Logcat или Console, похоже, что управление не происходит в случае коммутатора.
Я не могу проверить, правильно ли я это делаю или нет.
Я хочу поместить больше кода в корпус коммутатора только после того, как я уверен, что управление идет в корпус коммутатора, который здесь не происходит,
Любая информация здесь будет полезна.
2 ответа
Вы должны зарегистрировать свою деятельность в качестве слушателя. Прежде всего, в вашем XML-файле макета вам нужен идентификатор для корневого представления: android:id="@+id/your_view"
В своем методе onCreate() напишите это:
View v=findViewById(R.id.your_view);
v.setOnTouchListener(this);
Вам нужно правильно зарегистрировать обработчики сенсорных событий в соответствующих представлениях...
http://developer.android.com/guide/topics/ui/ui-events.html
http://developer.android.com/reference/android/view/View.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
}
});