完成效果:点哪儿, 哪儿弹出窗口
1、写一个xml布局文件用来当作点击后的弹窗,
在Activtity中用onTouchEvent方法,通过参数MotionEvent.getX/getY来获取对应的xy轴坐标:
public int x, y;
Viewvv;
Viewview;
PopupWindowpop;
//手机屏幕大小
intxX, yY;
privateDisplayMetrics dm;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.popup_activity);
vv= getLayoutInflater().inflate(R.layout.popup_activity, null);
initPopupWindow();
// 获取当前手机分辨率
dm= new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
xX= dm.widthPixels / 2;
yY= dm.heightPixels / 2;
}
//实现onTouchEvent方法
publicboolean onTouchEvent(MotionEvent event) {
//如果是按下操作
if(event.getAction() == MotionEvent.ACTION_DOWN) {
//获取点击后的x_y轴坐标
x= (int) event.getX();
y= (int) event.getY();
showXY(x,y);
}
returnsuper.onTouchEvent(event);
}
privatevoid showXY(int x, int y) {
//y-=60;
//判断当前的popupwindow是否正在显示,如正在显示,会清除后在对当前坐标位置显示
if(pop.isShowing()) {
pop.dismiss();
pop.showAtLocation(vv,Gravity.CENTER, x - xX+88, y - yY+44);
//pop.showAsDropDown(view, x, y);
}else {
//这是第一次点击!(小编对天发誓!)
//y+=60;
pop.showAtLocation(vv,Gravity.CENTER, x - xX+88, y - yY+44);
//pop.showAsDropDown(view, x, y);
}
}
重写Activity中的initPopupWindow方法,实例化PopupWindow,showAsDropDown,参数中传入x,y轴坐标,便能根据坐标点显示
private void initPopupWindow() {
//填充布局
view= this.getLayoutInflater().inflate(R.layout.popup_window, null);
//用来将当前布局设置为wrapcontent
pop= new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
//允许在外点击消失
pop.setOutsideTouchable(true);
}
好了,到此完成全部的操作,是不是觉得很简单呢?哈哈哈~跟着兄弟连王老师的步伐走就是这么简单!
添加QQ:1981812120 获取更多安卓新知识!
小报~ 听说兄弟连安卓春季班优惠力度极大哟~快快联系我深入了解吧