Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在LinearLayout上实现OnTouchListener-Android开发_Android_Android Widget_Touch Event_Ontouchlistener_Android Linearlayout - Fatal编程技术网

在LinearLayout上实现OnTouchListener-Android开发

在LinearLayout上实现OnTouchListener-Android开发,android,android-widget,touch-event,ontouchlistener,android-linearlayout,Android,Android Widget,Touch Event,Ontouchlistener,Android Linearlayout,我已经使用上面的方法为我试图创建的主菜单加载了一个图像。该图像有四个区域,每个区域将用于调用应用程序的特定功能。现在我正在尝试在这些区域实现触摸界面。我知道如何为此定义像素范围,但我不知道如何在图像上实现OnTouchListner。请在这方面帮助我。只需将此代码放入onCreate() 如果你的图像被分割成四个四分之一的矩形(比如说) 然后在onCreate中,您可以: i.setOnClickListener(new OnClickListener() { @Override pub

我已经使用上面的方法为我试图创建的主菜单加载了一个图像。该图像有四个区域,每个区域将用于调用应用程序的特定功能。现在我正在尝试在这些区域实现触摸界面。我知道如何为此定义像素范围,但我不知道如何在图像上实现OnTouchListner。请在这方面帮助我。

只需将此代码放入onCreate()


如果你的图像被分割成四个四分之一的矩形(比如说)

然后在onCreate中,您可以:

i.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
      //your code
  }
}
对于你的听众来说,类似这样的事情(仅说明原则):

@覆盖
公共布尔onTouch(视图v、运动事件mev){
int width=v.getWidth();
int height=v.getHeight();
float x=mev.getX();
float y=mev.getY();
串味精;
如果(x<宽度/2){
如果(y<高度/2)
msg=“左上角四分之一”;
其他的
msg=“左下角四分之一”;
}否则{
如果(y<高度/2)
msg=“右上角四分之一”;
其他的
msg=“右下角四分之一”;
}
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
返回false;
}

他想点击不同区域的图像,但他无法通过这种方式实现……是的,这就是我想要实现的。非常感谢@NickT。这正是我想要的。由于我是Android开发新手,我不清楚如何在图像上实现侦听器。再次感谢。
i.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
      //your code
  }
}
i.setOnTouchListener(this);
@Override
public boolean onTouch(View v, MotionEvent mev) {
    int width = v.getWidth();
    int height = v.getHeight();
    float x = mev.getX();
    float y = mev.getY();
    String msg;
    if (x < width / 2) {
        if (y < height / 2)
            msg = "Top left quarter";
        else
            msg = "Bottom left quarter";

    } else {
        if (y < height / 2)
            msg = "Top right quarter";
        else
            msg = "Bottom right quarter";
    }
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    return false;
}