android PopupWindow实现从底部弹出或滑出选择菜单或窗口.docx
- 文档编号:15842776
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:16
- 大小:45.37KB
android PopupWindow实现从底部弹出或滑出选择菜单或窗口.docx
《android PopupWindow实现从底部弹出或滑出选择菜单或窗口.docx》由会员分享,可在线阅读,更多相关《android PopupWindow实现从底部弹出或滑出选择菜单或窗口.docx(16页珍藏版)》请在冰点文库上搜索。
androidPopupWindow实现从底部弹出或滑出选择菜单或窗口
androidPopupWindow实现从底部弹出或滑出选择菜单或窗口
本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。
弹出效果主要使用了translate和alpha样式实现,具体实习如下:
第一步:
设计弹出窗口xml:
Xml代码
xml version="1.0" encoding="utf-8"?
>
xmlns: android=" android: layout_width="fill_parent" android: layout_height="wrap_content" android: gravity="center_horizontal" android: orientation="vertical" > android: id="@+id/pop_layout" android: layout_width="fill_parent" android: layout_height="wrap_content" android: gravity="center_horizontal" android: orientation="vertical" android: layout_alignParentBottom="true" android: background="@drawable/btn_style_alert_dialog_background" >
xmlversion="1.0"encoding="utf-8"?
>
xmlns: android=" android: layout_width="fill_parent" android: layout_height="wrap_content" android: gravity="center_horizontal" android: orientation="vertical" > android: id="@+id/pop_layout" android: layout_width="fill_parent" android: layout_height="wrap_content" android: gravity="center_horizontal" android: orientation="vertical" android: layout_alignParentBottom="true" android: background="@drawable/btn_style_alert_dialog_background" > android: id="@+id/btn_take_photo" android: layout_marginLeft="20dip" android: layout_marginRight="20dip" android: layout_marginTop="20dip" android: layout_width="fill_parent" android: layout_height="wrap_content" android: text="拍照" android: background="@drawable/btn_style_alert_dialog_button" android: textStyle="bold" /> android: id="@+id/btn_pick_photo" android: layout_marginLeft="20dip" android: layout_marginRight="20dip" android: layout_marginTop="5dip" android: layout_width="fill_parent" android: layout_height="wrap_content" android: text="从相册选择" android: background="@drawable/btn_style_alert_dialog_button" android: textStyle="bold" /> android: id="@+id/btn_cancel" android: layout_marginLeft="20dip" android: layout_marginRight="20dip" android: layout_marginTop="15dip" android: layout_marginBottom="15dip" android: layout_width="fill_parent" android: layout_height="wrap_content" android: text="取消" android: background="@drawable/btn_style_alert_dialog_cancel" android: textColor="#ffffff" android: textStyle="bold" />
第二步:
创建SelectPicPopupWindow类继承PopupWindow:
Java代码
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;
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.alert_dialog, 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.AnimBottom);
//实例化一个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 dismiss(); } } return true; } }); } } importandroid.app.Activity; importandroid.content.Context; importandroid.graphics.drawable.ColorDrawable; importandroid.view.LayoutInflater; importandroid.view.MotionEvent; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.view.View.OnTouchListener; importandroid.view.ViewGroup.LayoutParams; importandroid.widget.Button; importandroid.widget.PopupWindow; publicclassSelectPicPopupWindowextendsPopupWindow{ privateButtonbtn_take_photo,btn_pick_photo,btn_cancel; privateViewmMenuView; publicSelectPicPopupWindow(Activitycontext,OnClickListeneritemsOnClick){ super(context); LayoutInflaterinflater=(LayoutInflater)context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMenuView=inflater.inflate(R.layout.alert_dialog,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(newOnClickListener(){ publicvoidonClick(Viewv){ //销毁弹出框 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.AnimBottom); //实例化一个ColorDrawable颜色为半透明 ColorDrawabledw=newColorDrawable(0xb0000000); //设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); //mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框 mMenuView.setOnTouchListener(newOnTouchListener(){ publicbooleanonTouch(Viewv,MotionEventevent){ intheight=mMenuView.findViewById(R.id.pop_layout).getTop(); inty=(int)event.getY(); if(event.getAction()==MotionEvent.ACTION_UP){ if(y dismiss(); } } returntrue; } }); } } 第三步: 编写MainActivity类实现测试: Java代码 import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; public class MainActivity extends Activity { //自定义的弹出框类 SelectPicPopupWindow menuWindow; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) this.findViewById(R.id.text); //把文字控件添加监听,点击弹出自定义窗口 tv.setOnClickListener(new OnClickListener() { public void onClick(View v) { //实例化SelectPicPopupWindow menuWindow = new SelectPicPopupWindow(Mai
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口 PopupWindow 实现 底部 弹出 选择 菜单 窗口