提取Android API中的popuWindowmenu效果

  很久以前(大概三个月以前),我们做了一个项目,当时想要微信中的某一种效果,但是就是不知道叫神马名字。和老师探讨,它表示自己也不知道,没有办法,项目还是需要往下做,而且我还是很想要这个效果。最终,经过不懈努力,找到了这个效果叫什么名字。

  还是老套路,先上截图,你会更加明白是神马东西。第一张是没有点击按钮时的状态,第二张是点击按钮以后的状态。

需要童鞋们注意的是,这个效果需要API的版本支持。由于我没有android3.x所以只用了2.x和4.x来测试,结果是只能在4.x中进行。如果你自己有3.x的API那么就自己去测试。好了,下面是源代码。

  首先看看MainActivity.java文件中的代码:

 1 import android.annotation.SuppressLint;
 2 import android.app.Activity;
 3 import android.os.Bundle;
 4 import android.view.MenuItem;
 5 import android.view.View;
 6 import android.widget.PopupMenu;
 7 import android.widget.Toast;
 8 
 9 public class MainActivity extends Activity {
10 
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15     }
16 
17     @SuppressLint("NewApi")
18     public void onPopupButtonClick(View button) {
19         PopupMenu popup = new PopupMenu(this, button);
20         popup.getMenuInflater().inflate(R.menu.main, popup.getMenu());
21 
22         popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
23             public boolean onMenuItemClick(MenuItem item) {
24                 Toast.makeText(MainActivity.this,
25                         "Clicked popup menu item " + item.getTitle(),
26                         Toast.LENGTH_SHORT).show();
27                 return true;
28             }
29         });
30 
31         popup.show();
32     }
33 }

其实上面的东西也不需要怎么讲解,相信你自己能够看懂。下面是mainactivity.xml文件的内容。

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10 
11     <Button android:layout_width="wrap_content"
12             android:layout_height="wrap_content"
13             android:layout_gravity="center"
14             android:onClick="onPopupButtonClick"
15             android:text="popup_menu_button" />
16 
17 </RelativeLayout>

简单的说其实就一个Button按钮然后添加一个事件。还有一个文件就是menu文件夹下面的main.xml文件,代码如下:

 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
 2 
 3 
 4     <item android:id="@+id/search"
 5           android:icon="@android:drawable/ic_menu_search"
 6           android:title="popup_menu_search" />
 7     <item android:id="@+id/add"
 8           android:icon="@android:drawable/ic_menu_add"
 9           android:title="popup_menu_add" />
10     <item android:id="@+id/edit"
11           android:icon="@android:drawable/ic_menu_edit"
12           android:title="popup_menu_edit">
13         <menu>
14             <item android:id="@+id/share"
15                   android:icon="@android:drawable/ic_menu_share"
16                   android:title="popup_menu_share" />
17         </menu>
18     </item>
19 </menu>

这样基本就结束工作了,说实话,这个效果的确比较不错,但是原生的东西怎么来说都不是那么美观,如果你自己有时间和能力,可以自己去美化这个例子。

  很简单的一个官方原生例子,希望对你有帮助。

原文地址:https://www.cnblogs.com/linzhichao86/p/Android_PopuWindow.html