本章主要介绍popupWindow从底部向上弹出并实现背景变灰和点击屏幕消失的效果
1. activity 代码
public class MainActivity extends Activity implements OnDismissListener {
private PopupWindow popupwindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void dianji(View view) {
showPopup(view);
}
private void showPopup(View view) {
initPopup();
popupwindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
showBackground(0.7f);
}
private void initPopup() {
View popupwindow_view = View.inflate(MainActivity.this, //popupWindow的布局
R.layout.aty_popup, null);
popupwindow = new PopupWindow(popupwindow_view,LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, true); //创建popupWindow的创建
popupwindow.setAnimationStyle(R.style.popup_animation); //设置popupWindow的样式 也就是动画效果
popupwindow.setOnDismissListener(this); //popupWindow销毁的监听
popupwindow.setOutsideTouchable(true); //设置点击窗口外边窗口消失
ColorDrawable dw = new ColorDrawable(0xffffff);
popupwindow.setBackgroundDrawable(dw);
}
// 更改背景颜色
public void showBackground(float alpha) {
WindowManager.LayoutParams params = getWindow().getAttributes();
params.alpha = alpha;
getWindow().setAttributes(params);
}
@Override
public void onDismiss() {
showBackground(1.0f);
}
}
2.style代码
<style name="popup_animation">
<item name="android:windowEnterAnimation">@anim/popup_bottombar_in</item> <!-- 进入动画 -->
<item name="android:windowExitAnimation">@anim/popup_bottombar_out</item> <!-- 退出动画 -->
</style>
3.anim 代码
popup_bottombar_in.xml
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromYDelta="100%"
android:toYDelta="0.0"
>
</translate>
popup_bottombar_out.xml
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromYDelta="0.0"
android:toYDelta="100%"
>
</translate>