popWindow显示有两种,相对某空件和自定义位置。
下面是相对于某控件,即在标题栏下弹出popwindow:
/**
* 创建PopupWindow
*/
protected void initPopuptWindow() {
view_pop = LayoutInflater.from(this).inflate(R.layout.pop_view, null);
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
popupWindow = new PopupWindow(view_pop, display.getWidth(),
display.getHeight(), true);
// 设置动画效果
popupWindow.setAnimationStyle(R.style.PopupAnimation);
popupWindow.showAsDropDown(ll_title);// 在标题栏正下方显示
WindowManager.LayoutParams params = getWindow().getAttributes();
params.alpha = 0.7f;
// getWindow().setAttributes(params);
// 点击其他地方消失
view_pop.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
closePopupWindow();
return false;
}
});
}
/***
* 获取PopupWindow实例
*/
private void getPopupWindow() {
if (null != popupWindow) {
closePopupWindow();
return;
} else {
initPopuptWindow();
}
}
/**
* 关闭窗口
*/
private void closePopupWindow() {
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
popupWindow = null;
WindowManager.LayoutParams params = getWindow().getAttributes();
params.alpha = 1f;
getWindow().setAttributes(params);
}
}
}
style中建立:PopupAnimation样式
<!-- popWindow 进入退出样式 -->
<style name="PopupAnimation" mce_bogus="1" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/push_top_in</item>
<item name="android:windowExitAnimation">@anim/push_top_out</item>
</style>
push_top_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<!-- 上下滑入式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="200"
android:fromYDelta="-50%p"
android:toYDelta="0" />
</set>
push_top_out.xml: