您的位置:首页 > 运维架构

PopupWindow的使用

2015-06-03 19:29 375 查看
在实际中,我们有时为了更炫的效果,而不会使用原生的Menu菜单弹出方式,其中,使用PopupWindow就是一种常用方式,下面用一个简单示例来演示,点击Menu菜单按钮,以动画的方式弹出一个PopupWindow窗口,代码如下:

Activity:

[java] view
plaincopy

package com.home.popupwindow;



import android.app.Activity;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.view.Gravity;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.WindowManager.LayoutParams;

import android.widget.Button;

import android.widget.PopupWindow;

import android.widget.Toast;



public class PopupWindowActivity extends Activity {

// 声明PopupWindow对象

private PopupWindow popupWindow;

// Activity布局View

private View rootView;

// PopupWindow布局View

private View contentView;

private Button cancelBtn;

private Button delBtn;



@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 根据布局文件加载rootView组件

rootView = getLayoutInflater().inflate(R.layout.main, null);

setContentView(rootView);

// 根据布局文件加载contentView组件

contentView = getLayoutInflater().inflate(R.layout.popup_content, null);



// 获得取消按钮组件

cancelBtn = (Button) contentView

.findViewById(R.id.popup_conent_btn_cancel);

// 获得删除按钮组件

delBtn = (Button) contentView.findViewById(R.id.popup_conent_btn_del);

delBtn.setOnClickListener(new OnClickListener() {



@Override

public void onClick(View v) {

Toast.makeText(PopupWindowActivity.this, "执行具体删除操作!",

Toast.LENGTH_LONG).show();

}

});

cancelBtn.setOnClickListener(new OnClickListener() {



@Override

public void onClick(View v) {

// 去掉PopupWindow

popupWindow.dismiss();

}

});

// 创建PopupWindow对象

popupWindow = new PopupWindow(this);

// 设置弹出窗口的内容

popupWindow.setContentView(contentView);

// 设置弹出窗口的宽度

popupWindow.setWidth(LayoutParams.MATCH_PARENT);

// 设置弹出窗口的高度

popupWindow.setHeight(LayoutParams.WRAP_CONTENT);

// 在点击PopupWindow窗口外面时可以让窗口消失

// popupWindow.setBackgroundDrawable(new BitmapDrawable());

// 在点击PopupWindow窗口外面时让窗口不会消失

popupWindow.setBackgroundDrawable(null);

// 设置弹出窗口可以获取焦点

popupWindow.setFocusable(true);

// 设置动画效果

popupWindow.setAnimationStyle(R.style.popup_anim_style);

}



@Override

public boolean onCreateOptionsMenu(Menu menu) {

popupWindow.showAtLocation(rootView, Gravity.BOTTOM, 0, 0);

return false;

}



}

PopupWindow的布局XML:

[html] view
plaincopy

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >



<Button

android:id="@+id/popup_conent_btn_del"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="删除" />



<Button

android:id="@+id/popup_conent_btn_cancel"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="取消" />



</LinearLayout>

styles中加上style:

[html] view
plaincopy

<style name="popup_anim_style">

<item name="android:windowEnterAnimation">@anim/popup_anim_in</item>

<item name="android:windowExitAnimation">@anim/popup_anim_out</item>

</style>

popup_anim_in动画:

[html] view
plaincopy

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" >



<translate

android:duration="1500"

android:fillAfter="true"

android:fromXDelta="0"

android:fromYDelta="200"

android:toXDelta="0"

android:toYDelta="0" />



</set>

popup_anim_out动画:

[html] view
plaincopy

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" >



<translate

android:duration="1500"

android:fillAfter="true"

android:fromXDelta="0"

android:fromYDelta="0"

android:toXDelta="0"

android:toYDelta="200" />



</set>
http://blog.csdn.net/beijingshi1/article/details/9464839
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: