popupwindow展示

  样式:

  layout:

popup_appinfo.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="wrap_content"
 4     android:layout_height="wrap_content"
 5     android:background="@drawable/pop_bg"
 6     android:orientation="horizontal" >
 7 
 8     <TextView
 9         android:id="@+id/tv_uninstall"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:layout_margin="3dp"
13         android:drawablePadding="3dp"
14         android:drawableTop="@drawable/ic_uninstall"
15         android:text="卸载"
16         android:textColor="@color/black"
17         android:textSize="16sp" />
18 
19     <TextView
20         android:id="@+id/tv_open"
21         android:layout_width="wrap_content"
22         android:layout_height="wrap_content"
23         android:layout_margin="3dp"
24         android:drawablePadding="3dp"
25         android:drawableTop="@drawable/ic_open"
26         android:text="打开"
27         android:textColor="@color/black"
28         android:textSize="16sp" />
29 
30     <TextView
31         android:id="@+id/tv_share"
32         android:layout_width="wrap_content"
33         android:layout_height="wrap_content"
34         android:layout_margin="3dp"
35         android:drawablePadding="3dp"
36         android:drawableTop="@drawable/ic_share"
37         android:text="分享"
38         android:textColor="@color/black"
39         android:textSize="16sp" />
40 
41     <TextView
42         android:id="@+id/tv_info"
43         android:layout_width="wrap_content"
44         android:layout_height="wrap_content"
45         android:layout_margin="3dp"
46         android:drawablePadding="3dp"
47         android:drawableTop="@drawable/ic_info"
48         android:text="信息"
49         android:textColor="@color/black"
50         android:textSize="16sp" />
51 
52 </LinearLayout>

  anim:

popup_enter.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:shareInterpolator="false" >
 4 
 5     <translate
 6         android:duration="400"
 7         android:fromXDelta="100%p"
 8         android:interpolator="@android:interpolator/overshoot"
 9         android:toXDelta="0" />
10 
11     <alpha
12         android:duration="400"
13         android:fromAlpha="0.2"
14         android:toAlpha="1.0" />
15 
16 </set>

popup_exit.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:shareInterpolator="false" >
 4 
 5     <translate
 6         android:duration="400"
 7         android:fromXDelta="0"
 8         android:interpolator="@android:interpolator/anticipate"
 9         android:toXDelta="50%p" />
10 
11     <alpha
12         android:duration="400"
13         android:fromAlpha="1.0"
14         android:toAlpha="0" />
15 
16 </set>

code:

Activity.java

......

 1     //显示popupwindow
 2     protected void showPopup(View itemView) {
 3         if (mPopupWindow == null) {//只需要初始化一次弹窗
 4             //初始化弹窗布局
 5             View view = View.inflate(this, R.layout.popup_appinfo, null);
 6 
 7             //设置按钮点击事件
 8             TextView tvUninstall = (TextView) view
 9                     .findViewById(R.id.tv_uninstall);
10             TextView tvOpen = (TextView) view.findViewById(R.id.tv_open);
11             TextView tvShare = (TextView) view.findViewById(R.id.tv_share);
12             TextView tvInfo = (TextView) view.findViewById(R.id.tv_info);
13             tvUninstall.setOnClickListener(this);
14             tvOpen.setOnClickListener(this);
15             tvShare.setOnClickListener(this);
16             tvInfo.setOnClickListener(this);
17 
18             //初始化弹窗对象
19             ////参1:布局; 参2,3:宽高; 参4:获取焦点
20             mPopupWindow = new PopupWindow(view,
21                     WindowManager.LayoutParams.WRAP_CONTENT,
22                     WindowManager.LayoutParams.WRAP_CONTENT, true);
23 
24             //设置背景;只有设置了背景,点击窗口外侧和返回键,弹窗才会消失
25             mPopupWindow.setBackgroundDrawable(new ColorDrawable());
26 
27             //设置动画样式
28             mPopupWindow.setAnimationStyle(R.style.PopupAnim);
29         }
30 
31         //显示在item正下方, 然后向上偏移一个item的高度
32         mPopupWindow.showAsDropDown(itemView, 60, -itemView.getHeight());
33     }

......

  1 //弹窗消失

 2 mPopupWindow.dismiss(); 

......

原文地址:https://www.cnblogs.com/rongsnow/p/5353439.html