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