Реализация OnTouchListener на LinearLayout - разработка Android - PullRequest
3 голосов
/ 23 сентября 2011
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 для изображенияПожалуйста, помогите мне в этом.

Ответы [ 2 ]

4 голосов
/ 24 сентября 2011

Если ваше изображение было разделено на четыре прямоугольные четверти (скажем)

тогда в 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;
}
0 голосов
/ 23 сентября 2011

Просто поместите этот код в onCreate ().

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