1

我正在尝试获得触摸屏功能。我想根据用户是向上还是向下触摸屏幕来执行一些操作。

这是我的代码

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 或控制台中没有看到任何日志消息,所以看起来控制在 switch case 中没有进行。

我无法验证我是否做对了。

只有在我确定控制权进入开关盒后,我才想在开关盒中放入更多代码,而这里没有发生,

这里的任何信息都会有所帮助。

4

2 回答 2

1

您必须将您的活动注册为侦听器。首先,在您的 XML 布局文件中,您需要一个根视图的 id:android:id="@+id/your_view"

在你的 onCreate() 方法中,这样写:

View v=findViewById(R.id.your_view); 
v.setOnTouchListener(this);
于 2012-10-16T16:16:53.927 回答
0

您需要在适当的视图上正确注册触摸事件处理程序...

http://developer.android.com/guide/topics/ui/ui-events.html

http://developer.android.com/reference/android/view/View.html#setOnTouchListener(android.view.View.OnTouchListener )

http://developer.android.com/reference/android/view/View.OnTouchListener.html

您需要在布局中的适当视图项目上设置它..

View v = findViewById(R.id.whateverView);
v.setOnTouchListener(new onTouchListener()
{
    public void onTouch(View v, MotionEvent event)
    {
        //handle the event
    }
 });
于 2012-10-16T16:18:30.137 回答