3種類のポップアップウィンドウdialog,popupWindow,ContextMenu
収集した.私はただこの3種類のポップアップのウィンドウの方式だけを知っていて、新しい方法があって、面倒なヒントを与えて、ありがとうございます
1、PopupWindow
2、ContextMenu
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);
}
}