上下观古今,起伏千万途。这篇文章主要讲述Android 底部弹出Dialog(横向满屏)相关的知识,希望能为你提供帮助。
项目中经常需要底部弹出框,这里我整理一下其中我用的比较顺手的一个方式(底部弹出一个横向满屏的dialog)。
效果图如下所示(只显示关键部分):
文章图片
步骤如下所示:
1.定义一个dialog的布局(lay_share.xml)
文章图片
文章图片
1 < ?xml version="1.0" encoding="utf-8"?> 2 3 < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4android:layout_width="match_parent" 5android:layout_height="match_parent" 6android:background="@color/white" 7android:orientation="vertical"> 8 9< LinearLayout 10android:layout_width="match_parent" 11android:layout_height="wrap_content" 12android:gravity="center_vertical" 13android:orientation="horizontal" 14android:paddingBottom="@dimen/padding_15" 15android:paddingTop="@dimen/padding_15"> 16 17< View 18android:layout_width="0dp" 19android:layout_height="0dp" 20android:layout_weight="1" /> 21 22< TextView 23android:layout_width="wrap_content" 24android:layout_height="wrap_content" 25android:drawablePadding="@dimen/padding_5" 26android:drawableTop="@mipmap/ic_weixin_share" 27android:gravity="center" 28android:text="微信" 29android:textColor="@color/color_999999" 30android:textSize="@dimen/text_14" /> 31 32< View 33android:layout_width="0dp" 34android:layout_height="0dp" 35android:layout_weight="1" /> 36 37< TextView 38android:layout_width="wrap_content" 39android:layout_height="wrap_content" 40android:drawablePadding="@dimen/padding_5" 41android:drawableTop="@mipmap/ic_circle_share" 42android:gravity="center" 43android:text="朋友圈" 44android:textColor="@color/color_999999" 45android:textSize="@dimen/text_14" /> 46 47< View 48android:layout_width="0dp" 49android:layout_height="0dp" 50android:layout_weight="1" /> 51 52< TextView 53android:layout_width="wrap_content" 54android:layout_height="wrap_content" 55android:drawablePadding="@dimen/padding_5" 56android:drawableTop="@mipmap/ic_weibo_share" 57android:gravity="center" 58android:text="微博" 59android:textColor="@color/color_999999" 60android:textSize="@dimen/text_14" /> 61 62< View 63android:layout_width="0dp" 64android:layout_height="0dp" 65android:layout_weight="1" /> 66< /LinearLayout> 67 68< View 69android:layout_width="match_parent" 70android:layout_height="0.5dp" 71android:layout_marginLeft="@dimen/padding_10" 72android:layout_marginRight="@dimen/padding_10" 73android:background="@color/color_c9c9c9" /> 74 75< TextView 76android:id="@+id/tv_cancel" 77android:layout_width="match_parent" 78android:layout_height="wrap_content" 79android:gravity="center" 80android:padding="@dimen/padding_15" 81android:text="取消" 82android:textColor="@color/color_666666" 83android:textSize="@dimen/text_18" /> 84 < /LinearLayout>
View Code2.定义弹出框弹出动画(dialog_enter.xml)
文章图片
文章图片
1 < ?xml version="1.0" encoding="utf-8"?> 2 < set xmlns:android="http://schemas.android.com/apk/res/android"> 3< translate 4android:duration="300" 5android:fromYDelta="100%p" 6android:toYDelta="0" /> 7 < /set>
dialog_enter.xml3.定义弹出框隐藏动画(dialog_exit.xml)
文章图片
文章图片
1 < ?xml version="1.0" encoding="utf-8"?> 2 < set xmlns:android="http://schemas.android.com/apk/res/android"> 3< translate 4android:duration="300" 5android:fromYDelta="0" 6android:toYDelta="100%p" /> 7 < /set>
dialog_exit.xml4.定义动画style
文章图片
文章图片
1 < !--弹出框动画--> 2< style name="share_animation" parent="android:Animation"> 3< item name="android:windowEnterAnimation"> @anim/dialog_enter< /item> 4< item name="android:windowExitAnimation"> @anim/dialog_exit< /item> 5< /style>
View Code5.定义对话框样式
文章图片
文章图片
1 < !-- 对话框样式 --> 2< style name="dialog_bottom_full" parent="android:style/Theme.Dialog"> 3< item name="android:windowBackground"> @android:color/transparent< /item> 4< item name="android:windowNoTitle"> true< /item> 5< item name="android:windowIsFloating"> true< /item> 6< item name="android:windowContentOverlay"> @null< /item> 7< item name="android:scrollHorizontally"> true< /item> 8< /style>
View Code【Android 底部弹出Dialog(横向满屏)】6.最后,在需要从底部弹出dialog的地方,直接调用showDialog()方法
文章图片
文章图片
1 /** 2* 显示分享弹出框 3*/ 4private void showDialog() { 5if (mShareDialog == null) { 6initShareDialog(); 7} 8mShareDialog.show(); 9} 10 11/** 12* 初始化分享弹出框 13*/ 14private void initShareDialog() { 15mShareDialog = new Dialog(this, R.style.dialog_bottom_full); 16mShareDialog.setCanceledOnTouchOutside(true); 17mShareDialog.setCancelable(true); 18Window window = mShareDialog.getWindow(); 19window.setGravity(Gravity.BOTTOM); 20window.setWindowAnimations(R.style.share_animation); 21View view = View.inflate(this, R.layout.lay_share, null); 22view.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() { 23@Override 24public void onClick(View view) { 25if (mShareDialog != null & & mShareDialog.isShowing()) { 26mShareDialog.dismiss(); 27} 28} 29}); 30window.setContentView(view); 31window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); //设置横向全屏 32}
View Code大功告成!
收工!
推荐阅读
- AndroidBLE开发的各种坑
- android 查看当前正在运行的进程
- Tray - a SharedPreferences replacement for Android
- AndroidManifest.xml权限大全
- Android项目中JNI技术生成并调用.so动态库实现详解
- androidJNI开发
- Android体系结构及activity生命周期
- Android系统中自定义按键的短按双击长按事件
- Android基础性能检测与分析