您的位置:首页 > 移动开发 > Android开发

Android 创建指定位置和大小的PopupWindow,带进入和退出动画

2016-03-17 17:09 537 查看
效果截图:



功能代码比较简单,就不描述了,直接上代码。

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: