收集的。我只知道这三种弹出窗口方式, 有新方法的,麻烦提示一声,谢谢
1、PopupWindow
package com.zeng.alertdialog;
import android.app.Activity;
import android.os.Bundle;
import android.util.EventLog.Event;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;
public class PopupWindowsActivity extends Activity {
PopupWindow m_popupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.popup_main);
final Button btn_menu = (Button) findViewById(R.id.but_menu);
btn_menu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (m_popupWindow == null) {
LayoutInflater layoutInflater = getLayoutInflater();
View view = layoutInflater.inflate(R.layout.popup_menu,
null);
// PopupWindow弹出的窗口显示的view,第二和第三参数:分别表示此弹出窗口的大小
m_popupWindow = new PopupWindow(view, 100, 100);
// PopupWindow弹出的窗口显示的位置 ,第一个参数指在那个view上
// ,第二和第三参数分别表示距离此view的x和y的距离
m_popupWindow.showAsDropDown(btn_menu, 0, 0);
} else {
if (m_popupWindow.isShowing()) {
m_popupWindow.dismiss();
}else {
m_popupWindow.showAsDropDown(btn_menu, 0, 0);
}
}
}
});
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.i("zeng", "MotionEvent.ACTION_DOWN");
m_popupWindow.dismiss();
return true;
}
// 关闭m_popupWindow窗口
// return super.onTouchEvent(event);
return true;
}
}
2、ContextMenu
package com.zeng.alertdialog;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.Toast;
public class ContextMenuDemo extends Activity {
final int C_MENU_NEW = Menu.FIRST;
final int C_MENU_OPEN = Menu.FIRST + 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LayoutInflater infalter = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = infalter.inflate(R.layout.contextmenu, null);
registerForContextMenu(view);// 注册在这个View上 ,长按
setContentView(view);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, C_MENU_NEW, 0, "新建");
menu.add(0, C_MENU_OPEN, 0, "打开");
Log.i("zeng", "onCreateContextMenu");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Log.i("zeng", "onContextItemSelected");
switch (item.getItemId()) {
case C_MENU_NEW:
Toast.makeText(this, "新建成功", Toast.LENGTH_LONG).show();
break;
case C_MENU_OPEN:
Toast.makeText(this, "打开成功", Toast.LENGTH_LONG).show();
break;
}
return super.onContextItemSelected(item);
}
}