【问题标题】:Implementing OnTouchListener on LinearLayout - Android Development在 LinearLayout 上实现 OnTouchListener - Android 开发
【发布时间】:2011-09-23 19:45:00
【问题描述】:
public class UnitConverterActivity extends Activity implements OnTouchListener {
/** Called when the activity is first created. */
LinearLayout mLinearLayout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mLinearLayout = new LinearLayout(this);

    ImageView i = new ImageView(this);
    i.setImageResource(R.drawable.mainmenu);
    //i.setAdjustViewBounds(false);
    i.setScaleType(ScaleType.FIT_XY);
    i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    mLinearLayout.addView(i);
    setContentView(mLinearLayout);
    //setContentView(R.layout.main);
}

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
    // TODO Auto-generated method stub
    return false;
}
}

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

【问题讨论】:

    标签: android android-widget touch-event ontouchlistener android-linearlayout


    【解决方案1】:

    如果您的图像被分成四个矩形区域(比如说)

    然后在 onCreate 中有:

    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;
    }
    

    【讨论】:

    • 非常感谢@NickT。这正是我所要求的。由于我是 Android 开发的新手,我不清楚如何在图像上实现侦听器。再次感谢。
    【解决方案2】:

    只需将此代码放在 onCreate() 中。

    i.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
          //your code
      }
    }
    

    【讨论】:

    • 他想点击不同区域的图片,这种方式是做不到的……
    • 是的,这就是我想要实现的
    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多