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

我已經使用上述方法爲我正嘗試創建的主菜單加載圖像。該圖像有四個區域,每個區域將用於調用應用程序的特定功能。現在我正試圖在這些區域實現觸摸界面。我知道如何爲此目的定義像素範圍,但是我很遺憾如何在圖像上實現OnTouchListner。在這方面請幫助我。在LinearLayout上實現OnTouchListener - Android開發

回答

4

如果你的圖像分成四個矩形季度(比如說)

那麼的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

非常感謝@NickT。這正是我所要求的。由於我是Android開發新手,我不清楚如何在圖像上實現Listener。再次感謝。 – Rafay

-3

只需將此代碼放入onCreate()。

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

他想點擊不同區域的圖片,他不能這樣做...... – Knickedi

+0

雅是我正在努力實現 – Rafay