展会信息港展会大全

android PopupWindow实现从底部弹出或滑出选择菜单或窗口
来源:互联网   发布日期:2015-10-03 13:15:54   浏览:1873次  

导读:本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现,具体实习如下:第一步:设计弹出窗口xml...

本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现,具体实习如下:

第一步:设计弹出窗口xml:

Xml代码

xmlns:android=http://schemas.android.com/apk/res/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;

}

});

}

}

第三步:编写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(MainActivity.this, itemsOnClick);

//显示窗口

menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), 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:

break;

case R.id.btn_pick_photo:

break;

default:

break;

}

}

};

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港