Android如何从屏幕上获取图像的精确坐标x和y值

时间:2014-04-29 10:35:43

标签: android image position touch coordinate

我有一个遥控器在屏幕上的图像,我希望当我点击任何特定按钮时,任何特定事件发生,意味着图像有一些按钮,当我确切触摸按钮保持在此图像时此时发生任何事件,我如何获得仅在图像上保持此按钮的位置,并且屏幕点x和y也在不同的屏幕中改变。我知道getX()和`getY()'用于查找触摸位置,但如何获取图像中的任何特定位置,请提前帮助我,谢谢。

see in the image ,when i touch on middle of image at that time any event ocurrs

在图像中看到,当我触摸图像中间时,任何事件都会发生。

1 个答案:

答案 0 :(得分:0)

试试这个:

anchorView.getLocationOnScreen(location);

location是一个数组:

 int location[] = new int[2];

anchorView是您的观点。

所以你的功能可能如下:

public getLocation(View anchorView){
 int location[] = new int[2];
 anchorView.getLocationOnScreen(location);

}

如果您想在该位置显示不同的视图,请执行以下操作:

 yourView.showAtLocation(anchorView, Gravity.NO_GRAVITY, 
                location[0], location[1] + anchorView.getHeight());

另请注意,您可以操作位置[0]和位置[1]中的值。祝你好运:)

修改

这是一个完整的例子,我用它来显示一个按钮下面的一个片段,只要点击该按钮就会发生这个过程:

public void showPopup(View anchorView) {

        View popupView = getLayoutInflater().inflate(R.layout.popup_layout, null);

        popupWindow = new PopupWindow(popupView, 
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);


        Button proceed = (Button)popupView.findViewById(R.id.button1);
        Button cancel = (Button)popupView.findViewById(R.id.button2);

        cb = (CheckBox)popupView.findViewById(R.id.checkBox1); 

        proceed.setOnClickListener(onProceed); 
        cancel.setOnClickListener(onCan); 

        popupWindow.setFocusable(true);


        popupWindow.setBackgroundDrawable(new ColorDrawable());

        int location[] = new int[2];


        anchorView.getLocationOnScreen(location);

        popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, 
                location[0], location[1] + anchorView.getHeight());

    }

上面会弹出一个弹出窗口,就在点击的视图下方。

popup_layout是将被夸大的XML布局文件。