android 页面底部弹出菜单(dialog)

列举两种方法:

方法一:使用dialog(背景会变暗)

private void showDialog(Context context, @LayoutRes int resource) {
    //设置要显示的view
    View view = View.inflate(context,resource,null);
    //此处可按需求为各控件设置属性
    view.findViewById(R.id.dialog_voicegame_share_cancel).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        }
    });
    Dialog dialog = new Dialog(context,R.style.dialog);
    dialog.setContentView(view);
    Window window = dialog.getWindow();
    //设置弹出窗口大小
    window.setLayout(WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
    //设置显示位置
    window.setGravity(Gravity.BOTTOM);
    //设置动画效果
    window.setWindowAnimations(R.style.AnimBottom);
    dialog.show();
}



R.style.dialog的设置参考android dialog style属性设置

更多用法参考Android实现底部对话框

 

方法二:使用PopupWindow(背景不变)

private void showPopupWindow(final Context context, @LayoutRes int resource) {
    //设置要显示的view
    View view = View.inflate(context,resource,null);
    //此处可按需求为各控件设置属性
    view.findViewById(R.id.dialog_voicegame_share_cancel).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        }
    });
    PopupWindow popupWindow = new PopupWindow(view);
    //设置弹出窗口大小
    popupWindow.setWidth(WindowManager.LayoutParams.FILL_PARENT);
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    //必须设置以下两项,否则弹出窗口无法取消
    popupWindow.setFocusable(true);
    popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));
    //设置动画效果
    popupWindow.setAnimationStyle(R.style.AnimBottom);
    //设置显示位置,findViewById获取的是包含当前整个页面的view
    popupWindow.showAtLocation(findViewById(R.id.activity_voicegame_share), Gravity.BOTTOM,0,0);
}


更多用法参考Android PopupWindow详解

 

以上两种方法都用到了动画效果,设置如下

在values/styles.xml中写入

<style name="AnimBottom" parent="@android:style/Animation">
    <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
    <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
</style>

在anim文件夹创建push_bottom_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>

在anim文件夹创建push_bottom_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="200"
        android:fromYDelta="0"
        android:toYDelta="50%p" />
</set>


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值