在Android应用上,为了美观,和与IOS的统一性,众多的APP都模仿苹果使用底部弹出Dialog。
本人结合项目中使用过的,好用的实现方式分为两种:
1、自定义Dialog;
2、属性为 parent="android:Theme.Dialog" 的Activity;
两种方法的适用场景都很广泛,而且很适合直接复用(这也是为什么不用PopupWindow的原因)。
方式一主要代码:
ShareDialog.java
/**
* Created by yanjunhui
* on 2016/8/26.
* email:303767416@qq.com
*/
public class ShareDialog extends Dialog {
private static final String TAG = "ShareDialog";
public ShareDialog(Context context) {
super(context, R.style.simpleDialog);
init(context);
}
private void init(Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.dialog_share, null);
setContentView(view);
Window dialogWindow = getWindow();
dialogWindow.setWindowAnimations(R.style.dialogstyle);
WindowManager.LayoutParams lp = dialogWindow.getAttributes(); // 获取对话框当前的参数值
lp.width = context.getResources().getDisplayMetrics().widthPixels; // 宽度
dialogWindow.setAttributes(lp);
dialogWindow.setGravity(Gravity.BOTTOM);
}
}
styles.xml 文件
<style name="simpleDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@color/transparent</item>
</style>
<style name="dialogstyle" parent="android:Animation">
<item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="@android:windowExitAnimation">@anim/dialog_exit</item>
</style>
dialog_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:duration="400"/>
</set>
dialog_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:toYDelta="100%p" android:duration="400"/>
</set>
dialog_share.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/login_bg"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1.0"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="65dp"
android:layout_height="65dp"
android:background="@drawable/ic_wx" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:text="微信"
android:textColor="@color/char_black"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1.0"
android:orientation="vertical" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1.0"
android:orientation="vertical" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1.0"
android:orientation="vertical" />
</LinearLayout>
</LinearLayout>
实现方式二:
请自行参照另一篇博文:
http://104zz.iteye.com/blog/1685425