从屏幕底部弹出PopupWindow
最近因为要用到PopupWindow,所以,就在网上搜索了一下,发现挺多关于这样的文章,现在我把它们整理了一下。
1、Android PopupWindow 的使用技巧,http://www.cnblogs.com/sw926/p/3230659.html
2、Android PopupWindow 的使用和分析,http://www.cnblogs.com/mengdd/p/3569127.html
3、Android PopupWindow 实现从底部弹出或滑出选择菜单或窗口,http://104zz.iteye.com/blog/1685389
本文是整理上面三篇文章而成,绝大部分代码是使用第三篇的,如有不妥,请联系。
一、第一步就是创建布局文件
res/layout/finish_project_popupwindow.xml
<?xml version="1.0" encoding="utf-8"?>
二、第二步,设置PopupWindow弹出和淡出的动画效果
1、在res目录下建立一个文件夹anim,专门用于存储PopupWindow弹出和淡出的动画效果
(1)PopupWindow 弹出时的动画效果
res/anim/enter_anim.xml
<?xml version="1.0" encoding="utf-8"?>
(2)PopupWindow 淡出时的动画效果 res/anim/out_anim.xml
<?xml version="1.0" encoding="utf-8"?>
在
duration 表示弹出或者淡出的动画时间。在标签中表示PopupWindow透明度的变化,这样是为了比较好看。duration 同样表示时间。
(3)增加这样的Style
在res/valus/styles.xml 的
其中, - @anim/enter_anim
表示窗口弹出时的动画文件,@anim/ enter_anim 中enter_anim一定要和我们前面定义弹出动画的文件名一致,淡出的动画文件类似。
三、创建自定义类,继承PopupWindow
src/FinishProjectPopupWindow.java
import android.app.Activity;import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.PopupWindow;public class FinishProjectPopupWindows extends PopupWindow{private static final String TAG = "FinishProjectPopupWindows";private View mView;public Button btnSaveProject, btnAbandonProject, btnCancelProject;public FinishProjectPopupWindows(Activity context,OnClickListener itemsOnClick) {super(context); Log.i(TAG, "FinishProjectPopupWindow 方法已被调用"); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = inflater.inflate(R.layout.finish_project_popuwindow, null); btnSaveProject = (Button) mView.findViewById(R.id.popupwindow_Button_saveProject); btnAbandonProject = (Button) mView.findViewById(R.id.popupwindow_Button_abandonProject); btnCancelProject = (Button) mView.findViewById(R.id.popupwindow_cancelButton); // 设置按钮监听 btnCancelProject.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Log.i(TAG, "取消项目"); dismiss();} }); btnSaveProject.setOnClickListener(itemsOnClick); btnAbandonProject.setOnClickListener(itemsOnClick); //设置PopupWindow的View this.setContentView(mView); //设置PopupWindow弹出窗体的宽 this.setWidth(LayoutParams.MATCH_PARENT); //设置PopupWindow弹出窗体的高 this.setHeight(LayoutParams.WRAP_CONTENT); //设置PopupWindow弹出窗体可点击 this.setFocusable(true); //设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.Animation); //实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0xb0000000); //设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); }}
四、在Activity中设置弹出PopupWindow
private FinishProjectPopupWindows mFinishProjectPopupWindowmFinishProjectPopupWindow = new FinishProjectPopupWindows(MapFragmentActivity.this, itemsOnClick);// 显示PopupWindowmFinishProjectPopupWindow.showAtLocation(MapFragmentActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
其中 R.id.main 是 MapFragmentActivity 布局根目录的 id.
五、实现PopupWindow中按钮的监听
private OnClickListener itemsOnClick = new OnClickListener(){@Overridepublic void onClick(View v) {mFinishProjectPopupWindow.dismiss();switch(v.getId()){case R.id.popupwindow_Button_saveProject:Log.i(TAG, "保存线路");break;case R.id.popupwindow_Button_abandonProject:break;case R.id.popupwindow_cancelButton:mFinishProjectPopupWindow.dismiss();Log.i(TAG, "取消");break;} } };
更多相关文章
- android 5.0新特性学习--视图阴影
- Android使用NavigationView和Toolbar和DrawLayout实现侧滑菜单
- 在Unity顶部显示手机状态栏(iOS/Android)
- Android(安卓)中SwipeRefreshLayout刷新动画不显示的问题
- Android百度地图定位收索取周边在列表中展示并选择
- Android中关于Volley的使用(九)认识HurlStack(HttpClientStack)
- 关于Android(安卓)TabHost切换Tab字体的颜色背景颜色改变
- Android(安卓)添加动画的标签栏
- android完整权限