您的位置:首页 > 移动开发 > Android开发

android PopWindow

2015-11-11 17:25 295 查看
欢迎大家访问我的博客点击打开链接
专注于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" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: