實現popupWindow類似效果的activity
阿新 • • 發佈:2019-02-17
首先在清單檔案中對應的activity下設定主題:
<activity android:name="com.xingzhi.xingzhi_01.activity.CeShiActivity" android:screenOrientation="portrait" android:theme="@style/My_activity"></activity>
其中My_activity主題樣式如下:
<style name="My_activity" parent="android:Theme.Holo.Light.Dialog"> <itemname="android:windowFrame">@null</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style> 因為activity使用的樣式是dialog樣式,所以會預設攜帶了背景變暗的效果。 只是這樣會帶來一個問題,就是activity的佈局檔案中看的是寬度填充螢幕的,但是執行效果沒有填充整個手機螢幕。 這是因為dialog帶來的問題。解決辦法是:在activity的onCreate方法中新增如下程式碼:
WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; getWindow().setAttributes(layoutParams); 好了,以上就介紹完畢了。 不過如果單純的實現背景變暗效果,還可以使用下面的工具類程式碼來實現的:
public class WindowBackgroundAlphaUtils { /** * 設定新增螢幕的背景透明度 * @param bgAlpha */ public static void backgroundAlpha(Activity activity,float bgAlpha) { WindowManager.LayoutParams lp =activity.getWindow().getAttributes(); lp.alpha = bgAlpha; //0.0-1.0 activity.getWindow().setAttributes(lp); } }