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);
}
}