activity实现dialog样式笔记

1.YourActivity集成Activity

2.设置Style

<style name="MyToolsAddAvatar" parent="@android:style/Theme.Dialog">
        <!-- 是否悬浮在activity上 -->
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowBackground">@android:color/white</item>
        <!-- 透明是否 -->
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:background">@null</item>
        <!-- 设置没有窗口标题、dialog标题等各种标题 -->
        <item name="android:windowNoTitle">true</item>
        <item name="android:title">@null</item>
        <item name="android:dialogTitle">@null</item>
        <!-- 点击 dialog Activity 周围是否关闭弹窗 true 关闭(默认为true) false 为不关闭 -->
        <item name="android:windowCloseOnTouchOutside">true</item>
    </style>

3.设置布局内容显示的位置

/**
     * 更改dialog样式activity在屏幕中显示的位置
     */
    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        //即设定DecorView在PhoneWindow里的位置
        View view = getWindow().getDecorView();
        WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
        lp.gravity = Gravity.LEFT | Gravity.TOP;
        lp.x = 0;
        lp.y = 0;
        lp.width = 100;
        lp.height = 100;
        getWindowManager().updateViewLayout(view, lp);
    }
  @Override
    public void onStart() {
        super.onStart();
        Window window = getDialog().getWindow();
        if (window != null) {
            //设置 window 的背景色为透明色.
            window.setBackgroundDrawableResource(android.R.color.transparent);
            WindowManager.LayoutParams attributes = window.getAttributes();
            //在这里我们可以设置 DialogFragment 弹窗的位置
            attributes.gravity = Gravity.BOTTOM;
            /*为什么这里还要设置 window 的宽高呢?
            因为如果 xml 里面的宽高为 match_parent 的时候,window 的宽高也必须是 MATCH_PARENT,否则无法生效!*/
            attributes.width = ViewGroup.LayoutParams.MATCH_PARENT;
            attributes.height = ViewGroup.LayoutParams.MATCH_PARENT;
            //设置 DialogFragment 的进出动画
            attributes.windowAnimations = R.style.DialogAnimation;
            window.setAttributes(attributes);
        }
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值