android PopWindow
2015-11-11 17:25
295 查看
欢迎大家访问我的博客点击打开链接,
专注于android ios app 开发,大家一起学习,一起进步,今天记录一下PopWindow的使用,废话不多说了,直接上代码
专注于android ios app 开发,大家一起学习,一起进步,今天记录一下PopWindow的使用,废话不多说了,直接上代码
//PopWindow 类
public class SelectPicPopupWindow extends PopupWindow { private Button btn_take_photo, btn_pick_photo, btn_cancel; private View mMenuView; public SelectPicPopupWindow(Activity context, OnClickListener itemsOnClick) { super(context); LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMenuView = inflater.inflate(R.layout.popwindow, null); btn_take_photo = (Button) mMenuView.findViewById(R.id.btn_take_photo); btn_pick_photo = (Button) mMenuView.findViewById(R.id.btn_pick_photo); btn_cancel = (Button) mMenuView.findViewById(R.id.btn_cancel); // 取消按钮 btn_cancel.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 销毁弹出框 dismiss(); } }); // 设置按钮监听 btn_pick_photo.setOnClickListener(itemsOnClick); btn_take_photo.setOnClickListener(itemsOnClick); // 设置SelectPicPopupWindow的View this.setContentView(mMenuView); // 设置SelectPicPopupWindow弹出窗体的宽 this.setWidth(LayoutParams.FILL_PARENT); // 设置SelectPicPopupWindow弹出窗体的高 this.setHeight(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体可点击 this.setFocusable(true); // 设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.PopupAnimation); // 实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0xb0000000); // 设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); // mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框 mMenuView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { int height = mMenuView.findViewById(R.id.pop_layout).getTop(); int y = (int) event.getY(); if (event.getAction() == MotionEvent.ACTION_UP) { if (y < height) { dismiss(); } } return true; } }); } }
//PopWindow 在activity中的使用
menuWindow = new SelectPicPopupWindow(TimeFlashActivity.this, itemsOnClick); menuWindow.showAtLocation(findViewById(R.id.parent), Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); // 设置layout在PopupWindow中显示的位置
// 为弹出窗口实现监听类 private OnClickListener itemsOnClick = new OnClickListener() { public void onClick(View v) { menuWindow.dismiss(); switch (v.getId()) { case R.id.btn_take_photo: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); break; case R.id.btn_pick_photo: Intent intentPick = new Intent(Intent.ACTION_PICK); intentPick.setType("image/*");// 相片类型 startActivityForResult(intentPick, 2); break; default: break; } } };
//PopWindow 使用到的 进入和退出的动画PopupAnimation
<style name="PopupAnimation" parent="android:Animation"> <item name="android:windowEnterAnimation">@anim/popup_enter</item> <item name="android:windowExitAnimation">@anim/popup_exit</item> </style>
//@anim/popup_enter
<translate android:duration="400" android:fromYDelta="100%" android:toYDelta="0%" /> <alpha android:duration="400" android:fromAlpha="0.0" android:interpolator="@android:anim/decelerate_interpolator" android:toAlpha="1.0" />
//@anim/popup_exit
<translate android:duration="400" android:fromYDelta="0%" android:toYDelta="100%" /> <alpha android:duration="400" android:fromAlpha="1.0" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="0.0" />
相关文章推荐
- Android之Socket通信、List加载更多、Spinner下拉列表
- Android Mvc 实现
- Android之判断是否有网封装类
- 读Android Picasso源码有感
- Android使用UncaughtExceptionHandler捕获全局异常
- android之 MAT、DDMS 等内存查看工具
- Android6.0极其以上系统获取Dangerous系统权限问题及其解决方案
- android控件的事件传播机制
- Android四大组件之BroadCastReceiver
- android数据库相关几个小问题
- Android开发中,集成百度地图时,如何去除地图中的比例尺控件和缩放控件
- AndroidBinder进程间通信系统
- AndroidBinder进程间通信系统-android学习之旅(86)
- AndroidBinder进程间通信系统-android学习之旅(86)
- AndroidBinder进程间通信系统-android学习之旅(86)
- 关于universal-image-loader中的几种内存缓存策略
- 《android 学习》二、Activity的四种启动模式
- Android5.0源码分析—— Zygote进程分析
- android中tabhost学习
- android开发入门经验 ADT Bundle环境搭建