我有一个包含不同部分的大图像。我想要的是当用户触摸ImageView的不同部分时,应该打开不同的PopUps。例如,请参见下图:
在这张图片中,我想要的是当用户点击第一个方块时,弹出窗口1应该打开,方块2弹出窗口应该打开。如何实现这一目标。 此外,我希望ImageView仍然可以进行缩放和平移。请帮忙。
答案 0 :(得分:0)
你好,你可以关注我的这篇文章。我想我的答案会帮助你::
popup window from android options menu not working
为此我编辑了代码。你可以这样跟着。如果按钮是图像并用以下替换按钮:
在onCreate()
中Button btn1=(Button) findViewById(R.id.btn1);
Button btn2=(Button) findViewById(R.id.btn2);
btn1.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
initiatePopupWindow1();
}
})
btn2.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
initiatePopupWindow2();
}
})
在onCreate()之外
private PopupWindow pwindo1,pwindo2;
private void initiatePopupWindow1() {
try {
// We need to get the instance of the LayoutInflater
LayoutInflater inflater = (LayoutInflater) PopupActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.popup,(ViewGroup)
findViewById(R.id.popup_element));
pwindo1 = new PopupWindow(layout, 350, 350, true);
pwindo1.showAtLocation(layout, Gravity.CENTER, 0, 0);
btnClosePopup = (Button) layout.findViewById(R.id.btn_close_popup);
btnClosePopup.setOnClickListener(cancel_button_click_listener);
} catch (Exception e) {
e.printStackTrace();
}
}
private void initiatePopupWindow2() {
try {
// We need to get the instance of the LayoutInflater
LayoutInflater inflater = (LayoutInflater) PopupActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.popup,(ViewGroup)
findViewById(R.id.popup_element));
pwindo2 = new PopupWindow(layout, 350, 350, true);
pwindo2.showAtLocation(layout, Gravity.CENTER, 0, 0);
btnClosePopup = (Button) layout.findViewById(R.id.btn_close_popup);
btnClosePopup.setOnClickListener(cancel_button_click_listener);
} catch (Exception e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
你可以使用(虽然它似乎不是你想要实现的最佳方式,但你仍然可以拥有一个图像)
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
并且event.getX()和event.getY()将为您提供点击的坐标
例如
if(event.getX() == 100 and event.getY() == 100)
{ // show your popup}
但如果您有多张图片,则会出现问题 你必须知道这些盒子会出现在什么位置,如果要放大图像,你可能会遇到问题