实现微信透明弹窗

本文介绍了如何实现微信式的透明弹窗效果,包括定义动画、设置样式以及调整布局属性,最终达到从底部弹出并带有半透明背景的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步定义动画


<?xml version="1.0" encoding="utf-8"?>




<set xmlns:android="http://schemas.android.com/apk/res/android" >


    <translate
        android:duration="300"
        android:fromYDelta="100%p"
        android:toYDelta="0" />


    <alpha
        android:duration="300"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />


</set>

第二部





    <style name="DataSheetAnimation" parent="@android:style/Animation.Dialog">
        <item name="android:windowEnterAnimation">@anim/push_up_in</item>
    </style>

第三部


<?xml version="1.0" encoding="utf-8"?>
<resources>


    <style name="MMTheme.DataSheet" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <!-- <item name="android:background">@drawable/</item> -->
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:windowAnimationStyle">@style/DataSheetAnimation</item>
    </style>


</resources>


半透明颜色值是

 <color name="transparent">#66000000</color>



最后一步

final Dialog dlg = new Dialog(context, R.style.MMTheme_DataSheet);//加载动画和半透明背景

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.alert_dialog_menu_layout, null);
final int cFullFillWidth = 10000;          //沾满屏幕宽
layout.setMinimumWidth(cFullFillWidth);



Window w = dlg.getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
lp.x = 0;
final int cMakeBottom = -1000;
lp.y = cMakeBottom;
lp.gravity = Gravity.BOTTOM;
dlg.onWindowAttributesChanged(lp);
dlg.setCanceledOnTouchOutside(true);



dlg.setContentView(layout);
dlg.show();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值