在项目中,弹出分享面板时,觉着使用Dialog比使用Popuwindow更好,所以使用Dialog弹出分享的面板,但是发现在小米Note3手机上,弹出的dialog的宽度老是和屏幕的宽度有一些距离,高度也是。
在搜索使用了百度和google上的大部分代码测试之后,发现还是没有解决问题。。。终于让我看到一篇博客。。。。彻底解决了这个问题。。。但是那个博客我忘记收藏了。。。SORRY!
所以写下来代码记录一下吧。希望可以帮到和我遇到同样问题的人。。。
我没有设置Dialog的样式什么的。就是写个自定义的Dialog。只是在它show之后,添加了一些属性设置。。
代码设置如下:
ShareDialog mShareDialog = new ShareDialog(DetailActivity.this, shareBtnListener);
mShareDialog.show();//这里替换成你自己的dialog就行了。。
// 设置宽度为屏宽、靠近屏幕底部。
Window window = dialog.getWindow();
//设置dialog弹出的动画,从屏幕底部弹出 window.setWindowAnimations(R.style.take_photo_anim);
//最重要的一句话,一定要加上!要不然怎么设置都不行! window.setBackgroundDrawableResource(android.R.color.transparent);
WindowManager.LayoutParams wlp = window.getAttributes();
Display d = window.getWindowManager().getDefaultDisplay();
//获取屏幕宽
wlp.width = (int) (d.getWidth());
//宽度按屏幕大小的百分比设置,这里我设置的是全屏显示
wlp.gravity = Gravity.BOTTOM;
if (wlp.gravity == Gravity.BOTTOM)
wlp.y = ;
//如果是底部显示,则距离底部的距离是
window.setAttributes(wlp);
take_photo_anim 的代码
<!--分享面板的弹出动画-->
<style name="take_photo_anim" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/pop_enter_anim</item>
<item name="android:windowExitAnimation">@anim/pop_exit_anim</item>
</style>
在res下面新建anim文件夹,pop_enter_anim.xml
<?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>
pop_exit_anim.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="0"
android:toYDelta="50%p" />
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
全文结束!