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

나는 위의 방법을 사용하여 내가 만들려고하는 주 메뉴에 대한 이미지를로드했습니다. 이미지에는 4 개의 영역이 있으며 각 영역은 앱의 특정 기능을 호출하는 데 사용됩니다. 이제는 해당 분야에서 터치 인터페이스를 구현하려고합니다. 그 목적을 위해 픽셀 범위를 정의하는 방법을 알고 있지만 이미지에 OnTouchListner를 구현하는 방법을 놓치고 있습니다. 이 점에 대해 도와주세요.LinearLayout에서 OnTouchListener 구현 - 안드로이드 개발

답변

4

가 있습니다 :

@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

@NickT에 감사드립니다. 이것은 정확하게 내가 원하는 것입니다. 필자는 Android 개발을 처음 접했기 때문에 이미지에 리스너를 구현하는 방법이 불분명했습니다. 다시 한번 감사드립니다. – Rafay

-3

이 코드를 onCreate()에 넣기 만하면됩니다.

i.setOnTouchListener(this); 

을하고 청취자를 들어,이 같은 일이 (단지 원리를 설명) : 이미지가 네 개의 사각형 분기 (말) 다음에서 onCreate에서

으로 분할 된 경우

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

그는 다른 영역의 이미지를 클릭하고 싶습니다. 그는이 방법을 달성 할 수 없었습니다. – Knickedi

+0

예. 내가 구현하려고하는 것입니다. – Rafay