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感到茫然。请帮助我。
答案 0 :(得分: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;
}
答案 1 :(得分:-3)
将此代码放在onCreate()中。
i.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//your code
}
}