你的位置:首页 > 操作系统

[操作系统]控制对话框风格的activity的显示大小与位置


  项目开发的需要,因为到现在项目接近完工,用户提出对条件筛选方式进行修改,为做到最小的改动实现用户的需求,各种百度,对于对话框风格大家普遍使用PopupWindow,但由于之前开发设计时使用的是activity对话框方式,所以今天就为大家介绍一下,如何通过activity实现与PopupWindow相同的效果,废话不多讲现在开始干货。

  实现对话框风格的activity,我们需要在AndroidManifest.

<activity  android:name=".product.MyselfPayProduct"  android:screenOrientation="portrait"  android:theme="@android:style/Theme.Dialog" >

  不过这样的对话框风格往往无法满足我们的需要,显示的效果不那么令人满意,第一点就是如何控制对话框的大小:

//窗口对齐屏幕宽度Window win = this.getWindow();win.getDecorView().setPadding(0, 0, 0, 0);WindowManager.LayoutParams lp = win.getAttributes();lp.width = WindowManager.LayoutParams.MATCH_PARENT;lp.height = WindowManager.LayoutParams.WRAP_CONTENT;lp.gravity = Gravity.TOP;//设置对话框置顶显示win.setAttributes(lp);

  将这个控制语句添加在我们的对话框activity的onClick()方法中,这样我们的对话框就可以宽度与屏幕一样宽了,lp.gravity = Gravity.TOP;//设置对话框置顶显示,android默认对话框居中显示,我们可以通过这句代码设置对话框的显示位置。

  到这里是不是已经达到你的满意了呢?下面在给大家介绍一下,如何通过activity实现微信右上角点击加号的显示效果。做这个显示效果,我们需要通过在布局文件中通过android:layout_marginTop="50dp"这样来调整对话框的位置,Android默认弹出框效果非常难看,为了达到更好的显示效果,我们这里添加一个显示的动画效果:

进入动画:

<?"1.0" encoding="utf-8"?><set "http://schemas.android.com/apk/res/android" >  <scale    android:fromXScale="1.0"    android:interpolator="@android:anim/accelerate_decelerate_interpolator"    android:toXScale="1.0"     android:fromYScale="0.0"    android:toYScale="1.0"    android:duration="200"    android:pivotX="0"    android:pivotY="10%"    /></set>

退出动画:

<?"1.0" encoding="utf-8"?><set "http://schemas.android.com/apk/res/android" >  <scale    android:fromXScale="1.0"    android:interpolator="@android:anim/accelerate_decelerate_interpolator"    android:toXScale="1.0"     android:fromYScale="1.0"    android:toYScale="0.0"    android:duration="200"    android:pivotX="0"    android:pivotY="10%"    /></set>

  android动画文件一般置于res的anim文件夹下,默认该文件夹不存在,需要我们手动添加。

  下面我们需要把我们的动画添加的android的样式文件:style.

<resources>  <!--    Base application theme, dependent on API level. This theme is replaced    by AppBaseTheme from res/values-vXX/styles.-->  <style name="AppBaseTheme" parent="android:Theme.Light">    <!--      Theme customizations available in newer API levels can go in      res/values-vXX/styles.while customizations related to      backward-compatibility can go here.    -->  </style>  <!-- Application theme. -->  <style name="AppTheme" parent="AppBaseTheme">    <!-- All customizations that are NOT specific to a particular API-level can go here. -->      </style>    <!-- 没有标题 -->  <style name="notitle" parent="AppBaseTheme">     <item name="android:windowNoTitle">true</item>  </style>    <!-- 类似对话框效果 -->  <style name="MyDialogTopRight">     <item name="android:windowBackground">@android:color/transparent</item>     <item name="android:windowIsTranslucent">true</item>     <item name="android:windowNoTitle">true</item>     <item name="android:windowAnimationStyle">@style/Anim_scale</item>   </style>    <style name="Anim_scale" parent="@android:style/Animation.Activity">    <item name="android:activityOpenEnterAnimation">@anim/scale_in</item>    <item name="android:activityOpenExitAnimation">@anim/scale_out</item>    <item name="android:activityCloseEnterAnimation">@anim/scale_in</item>    <item name="android:activityCloseExitAnimation">@anim/scale_out</item>  </style>  </resources>

  最后我们需要修改一下我们在AndroidManifest.

android:theme="@style/MyDialogTopRight"

  到这里我们就完美实现了activity的对话框风格显示。

 




深圳到日本旅游深圳去日本旅游报价办理日本旅游签证跟团日本旅游需要多少钱几月份去日本旅游最好洛阳白云山彩云山庄电话?白云山彩云山庄多少钱? 洛阳白云山祥云宾馆价格?白云山祥云宾馆住一晚多少钱? 洛阳白云山农家宾馆推荐?白云山农家宾馆一晚多少钱? 洛阳白云山景区宾馆介绍?白云山景区宾馆多少钱? 香港赤柱跳蚤市场好玩吗?香港赤柱跳蚤市场怎么去? 澳门玫瑰圣母堂好玩吗?怎么去? 香港哪里有影视城吗?具体地址在那里? 去澳门那里买戒指好?澳门有哪些珠宝店? 泰国容易得什么疾病啊?怎么样防止?医疗设备怎么样啊? 马尔代夫维斯瑞岛Viceroy Maldives Resort 的房间设施如何? 马尔代夫最近天气怎么样? 泰国哪个时候最适合旅游?什么时候是最佳的旅游季节? 在三亚凤凰花海看“花花”世界 春色满园关不住三里洋渡的油菜花 深圳小梅沙三八节有什么活动?三八妇女节小梅沙海洋世界活动介绍? 2015三八节小梅沙海洋世界女士免费吗?深圳小梅沙三八妇女节门票价格? 08055C103KAZ2A Datasheet 08055C103KAZ2A Datasheet TAJA336K004RNJ Datasheet TAJA336K004RNJ Datasheet 08055C153KAZ2A Datasheet 08055C153KAZ2A Datasheet 大溪地度假村 大溪地度假村 大溪地度假村 贵州省旅游景点 贵州省旅游景点 贵州省旅游景点 鼓浪屿 攻略 鼓浪屿 攻略 鼓浪屿 攻略