android PopupWindow例程
xxxx.xml
<?xmlversion="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFFFF">
<ImageViewandroid:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5px"/>
<LinearLayoutandroid:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextViewandroid:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textSize="35px"/>
<TextViewandroid:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textSize="14px"/>
</LinearLayout>
</LinearLayout>
MainPage.java
publicclassMainPageextends Activity {
finalprivate String LOG_TAG = "fpMainPage";
privateListViewlistView;
privateLinearLayoutlayout;
BroadcastReceiverHelperrhelper;
@Override
publicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
layout= newLinearLayout(this);
listView= newListView(this);
listView.setPadding(100, 130, 200, 130);
SimpleAdapteradapter = newSimpleAdapter(this,getData(),R.layout.xxxx,
newString[]{"title","info","img"},
newint[]{R.id.title,R.id.info,R.id.img});
listView.setAdapter(adapter);
layout.addView(listView);
setContentView(layout);
Resources res =getResources();
Drawabledrawable=res.getDrawable(R.drawable.bg5);
layout.setBackgroundColor(0xFFFFFFFF);
listView.setBackgroundDrawable(drawable);
rhelper=newBroadcastReceiverHelper(this);
rhelper.registerAction("android.intent.action.menulongpress");
}
privateList<Map<String, Object>>getData() {
List<Map<String, Object>> list = newArrayList<Map<String, Object>>();
Map<String, Object> map = newHashMap<String, Object>();
map.put("title", "g1");
map.put("info", "google1");
map.put("img",R.drawable.ic_launcher_home);
list.add(map);
returnlist;
}
publicclassBroadcastReceiverHelperextendsBroadcastReceiver{
Contextct=null;
BroadcastReceiverHelperreceiver;
publicBroadcastReceiverHelper(Context c){
ct=c;
receiver=this;
}
publicvoidregisterAction(String action){
IntentFilterfilter=newIntentFilter();
filter.addAction(action);
ct.registerReceiver(receiver, filter);
}
@Override
publicvoidonReceive(Contextcontext, Intentintent) {
if(intent.getAction().equals("android.intent.action.menulongpress")){
Log.d(LOG_TAG,"android.intent.action.menulongpressreceived!");
showFpPopWindow();
}
}
}
privatevoidshowFpPopWindow(){
LinearLayoutlayout2;
layout2 = newLinearLayout(this);
Button b = newButton(this);
Button b2 = newButton(this);
layout2.addView(b);
layout2.addView(b2);
layout2.setBackgroundDrawable(null);
b.setText("test pop.");
b2.setText("hello!");
PopupWindowpw = newPopupWindow(this);
pw.setContentView(layout2);
pw.setFocusable(true);
pw.setWidth(600);
pw.setHeight(100);
pw.showAtLocation(getWindow().peekDecorView(),Gravity.LEFT|Gravity.BOTTOM, 0, 0);
}
}
解析:长按menu后,PhoneWindow发送Broadcast:android.intent.action.menulongpress,接收到后,弹出PopupWindow。显示效果如下:
更多相关文章
- Android(安卓)EventBus 传递消息
- Android手机开发:开机自动启动程序
- Android:本地json文件解析
- Android(安卓)Activity设置全屏
- android很简单的天气预报例子和XML解析
- android studio Error:Unable to start the daemon process
- android studio Error:Unable to start the daemon process
- android SQLiteDatabase源码解析
- android三个选项的对话框