android中PopupWindow弹出式窗体菜单简单记录(11)

//PopupWindow和PopupMenu 的简单记录
public class MainActivity extends Activity {
	private PopupWindow popupWindow;
	private View contentView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// PopupWindow在Activity一运行就创建,只是要按菜单键才能显示出来
		createPopupWindow();// 初始化创建一个布局菜单方法
	}

	// PopupWindow采用自定义的一个布局,点击主菜单(Menu)才能显示出来
	private void createPopupWindow() {
		// 加载布局,下面会用到这里的一些参数,所以要使用布局生成器,在全局定义
		contentView = getLayoutInflater().inflate(R.layout.popwindows, null);
		// new PopupWindow(contentView, width, height, focusable)//要布局生成器、宽、高、聚焦
		popupWindow = new PopupWindow(contentView, LayoutParams.MATCH_PARENT,
				LayoutParams.WRAP_CONTENT);// 可以不写聚焦或者写为false

	}

	// popupWindow显示出来后,三个ImageView可以触发事件
	public void bntClick(View view) {
		switch (view.getId()) {
		case R.id.pop_back:
			// 回到Home
			Intent intent = new Intent();
			intent.setAction(intent.ACTION_MAIN);
			intent.addCategory(intent.CATEGORY_HOME);
			startActivity(intent);
			finish();
			break;
		case R.id.pop_share:
			Intent intent2 = new Intent();
			intent2.setAction(Intent.ACTION_CALL);
			intent2.setData(Uri.parse("tel:10086"));
			startActivity(intent2);
			break;
		case R.id.pop_collent:
			Intent intent3 = new Intent();
			intent3.setAction(Intent.ACTION_SENDTO);
			intent3.setData(Uri.parse("smsto:10086"));
			intent3.putExtra("sms_body", "吃饭了!!");
			startActivity(intent3);
			break;
		}
	}

	// PopupWindow通过menu菜单按钮来触发显示或隐藏
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		switch (keyCode) {
		// 判断是否是Menu键
		case KeyEvent.KEYCODE_MENU:
			if (popupWindow.isShowing()) {// 按菜单键,如果显示则 隐藏
				popupWindow.dismiss();
			} else {
				popupWindow.showAtLocation(contentView, Gravity.BOTTOM, 0, 0);
			}
			break;
		case KeyEvent.KEYCODE_BACK:
			if (popupWindow.isShowing()) {// 按返回键时,如果显示则 (隐藏)
				popupWindow.dismiss();
				return false;
			}
			break;
		}
		return super.onKeyDown(keyCode, event);
	}
         
	
}

//PopupWindow中的布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/pop_back"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="bntClick"
        android:src="@drawable/contentback" />

    <ImageView
        android:id="@+id/pop_share"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="bntClick"
        android:src="@drawable/contentshare" />

    <ImageView
        android:id="@+id/pop_collent"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="bntClick"
        android:src="@drawable/collectcontent" />

</LinearLayout>

运行效果图:点击菜单键才弹出

201937_453y_2541146.png

转载于:https://my.oschina.net/u/2541146/blog/608452

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值