• 提取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>

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

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

  • 相关阅读:
    Hyperledger Fabric 1.0 从零开始(七)——启动Fabric多节点集群
    Hyperledger Fabric 1.0 从零开始(六)——创建Fabric多节点集群
    Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e
    Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理
    Hyperledger Fabric 1.0 从零开始(三)——环境构建(内网/准离线)
    Hyperledger Fabric 1.0 从零开始(二)——环境构建(公网)
    Hyperledger Fabric 1.0 从零开始(一)
    Springboot 多数据源配置,结合tk-mybatis
    使用mybatis-generator插件结合tk.mybatis自动生成mapper二三事
    使用IDEA创建一个springboot项目
  • 原文地址:https://www.cnblogs.com/linzhichao86/p/Android_PopuWindow.html
Copyright © 2020-2023  润新知