要在Imageview中打开触摸的PopUp窗口

时间:2014-01-08 09:35:20

标签: java android popup imageview zoom

我有一个包含不同部分的大图像。我想要的是当用户触摸ImageView的不同部分时,应该打开不同的PopUps。例如,请参见下图:

enter image description here

在这张图片中,我想要的是当用户点击第一个方块时,弹出窗口1应该打开,方块2弹出窗口应该打开。如何实现这一目标。 此外,我希望ImageView仍然可以进行缩放和平移。请帮忙。

2 个答案:

答案 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}

但如果您有多张图片,则会出现问题 你必须知道这些盒子会出现在什么位置,如果要放大图像,你可能会遇到问题