效果截图:
功能代码比较简单,就不描述了,直接上代码。
MainAcvitity.java中,创建PopupWindow:
private PopupWindow popupWindow;
private void createPopupWindow(){
if(popupWindow == null){
View contentView = getLayoutInflater().inflate(R.layout.dialog_content,null);
popupWindow = new PopupWindow(contentView,mContentLayout.getMeasuredWidth()/2,
mContentLayout.getMeasuredHeight());
popupWindow.setFocusable(true);
popupWindow.setAnimationStyle(R.style.PopupWindowStyle);
popupWindow.setBackgroundDrawable(new ColorDrawable(0xffffff00));
popupWindow.setOutsideTouchable(false);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
WindowManager.LayoutParams wlp = getWindow().getAttributes();
wlp.alpha = 1.0f;
getWindow().setAttributes(wlp);
}
});
}
}
显示PopupWindow:
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createPopupWindow();
if(!popupWindow.isShowing()){
popupWindow.showAsDropDown(mTitleLayout,mContentLayout.getMeasuredWidth()/2,0);
WindowManager.LayoutParams wlp = getWindow().getAttributes();
wlp.alpha = 0.7f;
getWindow().setAttributes(wlp);
}else{
popupWindow.dismiss();
}
}
});
styles文件中:
<style name="PopupWindowStyle">
<item name="android:windowEnterAnimation">@anim/anim_left_in</item>
<item name="android:windowExitAnimation">@anim/anim_right_out</item>
</style>
动画文件如下,anim_left_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_decelerate"
>
<translate android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="400"
/>
<alpha android:duration="400"
android:fromAlpha="0"
android:toAlpha="1"/>
</set>
anim_right_out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_decelerate"
>
<translate android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="400"
/>
<alpha android:duration="400"
android:fromAlpha="1"
android:toAlpha="0"/>
</set>