仿微信-界面动画(4)-PopupWindow/PopupMenue

来源:互联网 发布:韩国春雨面膜授权淘宝 编辑:程序博客网 时间:2024/06/01 21:29

PopupMenu代表弹出式菜单,它会在指定组件上弹出PopupMenu,默认情况下,PopupMenu会显示在该组件的下方或上方。PopupMenu可增加多个菜单项,并可为菜单项增加子菜单。

使用PopupMenu创建菜单的步骤非常简单,只要如下步骤即可。

调用new PopupMenu(Context context,View anchor)创建下拉菜单,anchor代表要激发该弹出菜单的组件。
调用MenuInflater的inflate()方法将菜单资源填充到PopupMenu中。
调用PopupMenu的show()方法显示弹出式菜单。
下面的实例示范了使用PopupMenu的功能和用法。

界面布局文件如下:

<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"    android:orientation="vertical"    ><Button  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_gravity="center"  android:onClick="onPopupButtonClick"  android:text="单击我" /></LinearLayout>

该实例的Activity的代入如下:

package org.crazyit.helloworld;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.PopupMenu;import android.widget.Toast;public class PopupMenuTest extends Activity {  PopupMenu popup=null;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.popup_menu_test);  }  public void onPopupButtonClick(View button)  {    //创建PopupMenu对象      popup=new PopupMenu(this,button);    //将R.menu.popup_menu菜单资源加载到popup菜单中    getMenuInflater().inflate(R.menu.popup_menu,popup.getMenu());    //为popup菜单的菜单项单击事件绑定事件监听器    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){      @Override      public boolean onMenuItemClick(MenuItem item) {        switch(item.getItemId())        {        case R.id.exit:          //隐藏该对话框          popup.dismiss();          break;        default:          //使用Toast显示用户单击的菜单项          Toast.makeText(PopupMenuTest.this, "您单击了【"+item.getTitle()+"】菜单项",Toast.LENGTH_SHORT).show();        }        // TODO Auto-generated method stub        return false;      }    });    popup.show();  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.popup_menu_test, menu);    return true;  }}

上面的程序中第一行粗体字代码创建了一个PopupMenu对象,第二行粗体字代码指定将该R.menu.popup_menu菜单资源文件填充到PopupMenu中,这样即可实现当用户单击界面按钮时弹出Popup菜单。

运行上面程序将看到如下效果:
这里写图片描述

转载于 http://www.cnblogs.com/wolipengbo/p/3398603.html

1 0
原创粉丝点击