很久以前(大概三个月以前),我们做了一个项目,当时想要微信中的某一种效果,但是就是不知道叫神马名字。和老师探讨,它表示自己也不知道,没有办法,项目还是需要往下做,而且我还是很想要这个效果。最终,经过不懈努力,找到了这个效果叫什么名字。
还是老套路,先上截图,你会更加明白是神马东西。第一张是没有点击按钮时的状态,第二张是点击按钮以后的状态。
需要童鞋们注意的是,这个效果需要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>
这样基本就结束工作了,说实话,这个效果的确比较不错,但是原生的东西怎么来说都不是那么美观,如果你自己有时间和能力,可以自己去美化这个例子。
很简单的一个官方原生例子,希望对你有帮助。