Android 高手进阶教程:[10]PopupWindow

2024-11-20 04:23:56

1、下面是核心代码:viewplaincopytoclipboardprint?packagecom.android.tutor;importandroid.app.Activity;importandroid.content.Context;importandroid.os.Bundle;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.Button;importandroid.widget.PopupWindow;publicclassPopupWindowDemoextendsOnClickListener{privateButtonbtn;ActivityimplementspublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);btn=(Button)findViewById(R.id.btn);btn.setOnClickListener(this);}@OverridepublicvoidonClick(Viewv){ContextmContext=PopupWindowDemo.this;if(v.getId()==R.id.btn){LayoutInflatermLayoutInflater=(LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);Viewmusic_popunwindwow=mLayoutInflater.inflate(R.layout.music_popwindow,null);PopupWindowmPopupWindow=newPopupWindow(music_popunwindwow,LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);mPopupWindow.showAtLocation(findViewById(R.id.main),Gravity.RIGHT|Gravity.BOTTOM,0,0);}}}packagecom.android.tutor;importandroid.app.Activity;importandroid.content.Context;importandroid.os.Bundle;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.Button;importandroid.widget.PopupWindow;publicclassPopupWindowDemoextendsActivityimplementsOnClickListener{privateButtonbtn;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);btn=(Button)findViewById(R.id.btn);btn.setOnClickListener(this);}@OverridepublicvoidonClick(Viewv){ContextmContext=PopupWindowDemo.this;if(v.getId()==R.id.btn){LayoutInflatermLayoutInflater=(LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);Viewmusic_popunwindwow=mLayoutInflater.inflate(R.layout.music_popwindow,null);PopupWindowmPopupWindow=newPopupWindow(music_popunwindwow,LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);mPopupWindow.showAtLocation(findViewById(R.id.main),Gravity.RIGHT|Gravity.BOTTOM,0,0);}}}

2、需要强调的是这里PopupWindow必须有某个事件触发才会显示出来,不然总会抱错,不信大家可以试试!随着这个问题的出现,就会同学问了,那么我想初始化让PopupWindow显示出来,那怎么办了,不去寄托于其他点击事件,在这里我用了定时器Timer来实现这样的效果,当然这里就要用到Handler了,如果大家不理解的可以返回Android高手进阶教程(九)之----AndroidHandler的使用!!看一看,加深了解:下面是核心代码:viewplaincopytoclipboardprint?packagecom.android.tutor;importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.content.Context;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.PopupWindow;publicclassPopupWindowDemoextendsActivity{privateHandlermHandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:showPopupWindow();break;}};};publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//createthetimerTimertimer=newTimer();timer.schedule(newinitPopupWindow(),100);}privateclassinitPopupWindowextendsTimerTask{@Overridepublicvoidrun(){Messagemessage=newMessage();message.what=1;mHandler.sendMessage(message);}}publicvoidshowPopupWindow(){ContextmContext=PopupWindowDemo.this;LayoutInflatermLayoutInflater=(LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);Viewmusic_popunwindwow=mLayoutInflater.inflate(R.layout.music_popwindow,null);PopupWindowmPopupWindow=newPopupWindow(music_popunwindwow,LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);mPopupWindow.showAtLocation(findViewById(R.id.main),Gravity.CENTER,0,0);}}packagecom.android.tutor;importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.content.Context;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.PopupWindow;publicclassPopupWindowDemoextendsActivity{privateHandlermHandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:showPopupWindow();break;}};};publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//createthetimerTimertimer=newTimer();timer.schedule(newinitPopupWindow(),100);}privateclassinitPopupWindowextendsTimerTask{@Overridepublicvoidrun(){Messagemessage=newMessage();message.what=1;mHandler.sendMessage(message);}}publicvoidshowPopupWindow(){ContextmContext=PopupWindowDemo.this;LayoutInflatermLayoutInflater=(LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);Viewmusic_popunwindwow=mLayoutInflater.inflate(R.layout.music_popwindow,null);PopupWindowmPopupWindow=newPopupWindow(music_popunwindwow,LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);mPopupWindow.showAtLocation(findViewById(R.id.main),Gravity.CENTER,0,0);}}效果如下图:

Android 高手进阶教程:[10]PopupWindow
猜你喜欢