android 对话框弹出位置和透明度详解

 更新时间:2016年9月20日 19:59  点击:1841
本文章来给大家介绍android 对话框弹出位置和透明度详解,有需要的同学可参考,本文章总结了各种在安卓开发中话框弹透明实现方法,各位同学可参考。


分析

1、调整对话框后面的背景的透明度

2、将对话框头部去掉

3、将对话框自身的圆角白色边框替换为直角5px的白色边框

4、设置对话框内部背景。

 

先来看一个效果

AlertDialog dialog = new AlertDialog.Builder(this).setTitle("title")
.setMessage("message").create();
Window window = alertDialog.getWindow();
window.setGravity(Gravity.TOP); //window.setGravity(Gravity.BOTTOM);
alertDialog.show();


透明的对话框
默认显示的对话框是不透明的,但我们可以通过设置对话框的alpha值将其变成透明或半透明效果。我们都知道。颜色由R(红)、G(绿)、B(蓝)组成。除此之外,还会有一个A(透明度,Alpha)来描述颜色。在颜色的描述中,如果该值为0表示完全透明,如果该值为255,表示不透明。
通过设置Windows的alpha属性也可以设置对话框的透明度。但alpha的取值范围是从0到1.0。如果该属性值为0,表示完全透明,如果该值为1.0,表示不透明(也就是正常显示的对话框)。下面的代码通过将alpha的值设为0.3,为了更清晰地显示透明的对话框和非透明的对话框。在本例中加了一个背景图像,将同时显示了两个对话框(一个是半透明的,另一是不透明的)。


复制代码 代码如下:
// 显示透明的对话框
AlertDialog alertDialog = new AlertDialog.Builder(this).setMessage(
"透明对话框").setPositiveButton("确定", null).create();
Window window = alertDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
// 设置透明度为0.3
lp.alpha = 0.6f;
window.setAttributes(lp);
alertDialog.show();

 


我们在使用某些应用时会发现当弹出对话框或某些模式窗口时,后面的内容会变得模糊或不清楚。实际上,这些效果也很容易在OPhone中实现。为了实现这个功能,我们只需要设置Wndow对象的两个标志即可,代码如下:

 


去掉白边框

设置style,

    <style name="myDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
<!–        <item name="android:background">@drawable/bg_sel</item>–>
        <item name="android:windowBackground">@drawable/bg_sel</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>

将此style方在构造方法中。

4、设置对话框内部背景,

自定义一个dialog模板视图,里面只有两个linearlayout,所有的View都添加到里面的linearlayout中即可。

如下代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:padding="5px">
    <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:id="@+id/linearLayout" android:background="#90333333"/>
</LinearLayout>

实现由下至上弹出并位于屏幕底部的提示框:

1. button.setOnClickListener(new OnClickListener() {
2.@Override 3.public void onClick(View arg0) { 4. // TODO Auto-generated method stub 5. AlertDialog dialog = new AlertDialog.Builder(TestAndroid1Activity.this) 6. .setTitle("title").setMessage("message").create(); 7. Window window = dialog.getWindow();
8. window.setGravity(Gravity.BOTTOM); //此处可以设置dialog显示的位置 9. window.setWindowAnimations(R.style.mystyle); //添加动画 10. dialog.show();
11.}
12.);
styles.xml

1.<?xml version="1.0" encoding="utf-8"?>
2.<resources>
3.
4. <style name="mystyle" parent="android:Animation"> 5. <item name="@android:windowEnterAnimation">@anim/dialog_enter</item> //进入时的动画 6. <item name="@android:windowExitAnimation">@anim/dialog_exit</item> //退出时的动画 7. </style>
8.</resources>

位于 res/anim/dialog_enter.xml

1.<?xml version="1.0" encoding="utf-8"?>
2.<set xmlns:android="http://schemas.android.com/apk/res/android"> 3.
4. <translate
5. android:fromYDelta="100%p" %p指相对于父容器 6. android:duration="600" 7. />
8.</set>
位于 res/anim/dialog_exit.xml

1.<?xml version="1.0" encoding="utf-8"?>
2.<set xmlns:android="http://schemas.android.com/apk/res/android"> 3.
4. <translate
5. android:toYDelta="100%p" 6. android:duration="600" //持续时间 7. />
8.</set>
此处只是做了垂直位移的效果,自己还可以试试别的效果。

<alpha /> 透明度

<rotate /> 旋转

<scale /> 缩放

在进行Android界面开发的时候,你想给TextView加个边框,找了半天发现没有这个属性,是不是有点蛋疼呢。下面就总结一下有哪些方法能够实现边框效果。

1.嵌套一层,利用内容的margin或者padding的留白加容器的背景来实现边框效果。

其实这个道理很简单,很早的时候那时候我们还用table做html页面布局的时候,我们就是使用cellspacing来实现table的边框的。现在我们也利用同样的想法来实现。

Android下实现边框效果 方案一

Android下实现边框效果 方案一

其中padding产生留白,就形成类似边框的效果。

<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="2px" android:background="#f00">
    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello world!" android:background="#000"></TextView>
</LinearLayout>

当然内部的容器也是需要有颜色的,如果想实现内部透明的效果则需要将内部View的背景色跟背景的颜色保持一致,这是不太方便的地方。

2.使用9-patch(九宫格)的背景图片来实现边框效果。

做一个有边框的9-patch图片,作为要有边框的View的背景图即可。这样你还可以控制哪边有边框,哪边无边框,这种方法是比较好的一种方法,而且没有多余的View嵌套。另外你还可以实现圆角边框等效果。

Android下实现边框效果 方案二

Android下实现边框效果 方案二

如果你还不了解关于9-patch的内容,请移步。你需要做一个有边框的png图片,使用sdk的tools文件夹下的draw9patch.bat工具,你可以轻松生成9-patch图片。工具用起来很简单。左侧和顶部的线用于扩展重复显示的内容,右侧和底部的线用于控制内容显示的位置。在这里我要先感谢国家,我们现在已经可以自由的访问Android开发者站点。

3.利用shape的stroke来实现边框效果。

当然你可以使用shape中的stroke来实现border的效果。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <stroke android:width="1dp" android:color="#f00" />
</shape>

然后你可以引用这个shape作为背景就可以实现边框效果。关于更多关于shape的内容请移步。

最终的效果展示:

当然还有很多其他的变通方法,比如你也可以添加一个view把宽度设置为1dp,作为边框。这个就需要你在实际开发中变通使用了。

在WAP开发的朋友可能会碰到过如果我们使用html标准来写网站不会自动适应手机屏幕了,会留很多的空,那么要怎么手机网站宽度自动适应手机屏幕呢,下面大家看看。

方法一:

 代码如下 复制代码

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" /> 

在网页的<head>中增加以上这句话,可以让网页的宽度自动适应手机屏幕的宽度。

其中:

width=device-width :表示宽度是设备屏幕的宽度

initial-scale=1.0:表示初始的缩放比例

minimum-scale=0.5:表示最小的缩放比例

maximum-scale=2.0:表示最大的缩放比例

user-scalable=yes:表示用户是否可以调整缩放比例


如果是想要一打开网页,则自动以原始比例显示,并且不允许用户修改的话,则是:

 代码如下 复制代码

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 

方法二:

把这段

<!DOCTYPE ........>替换为这段

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">注:此方法在iPhone下横屏时宽度会超过屏幕宽度出现滚动条,解决方法就是加上方法一的代码

最近准备学android开发,我们尝试来安装android sdk,但是很不好,安装是提示找不到JDK了,我的系统是 64位的 Win7,已经装了 jdk-6u23-windows-x64.exe 了,但安装 Android SDK 的时候报错,说找不到系统安装的 JDK,该怎么办呢?

错误提示:

Can also create symbolic link if you don't want to copy the files. (requires administrator privileges):
mklink C:/Windows/SysWOW64/java.exe C:/Windows/System32/java.exe

mklink C:/Windows/SysWOW64/javaw.exe C:/Windows/System32/javaw.exe

右击桌面的“计算机”,选择“属性”(也可在控制面板中打开“系统”),选择“高级系统设置”,在“系统属性”下中,选择“高级”页面里的“环境变量”。

2013161855256907.jpg 

在系统环境变量中找到JAVA_HOME的变量,没有请新建一个JAVA_HOME项,将设置 JAVA_HOME 变量的值为

 代码如下 复制代码
C:/Program Files/Java/jdk1.7.0_10

,这是JDK的安装路径,根据自己安装路径和版本的请自己修改。
然后再新建或者修改下面几个变量值:
将 CLASSPATH 变量 设置值为:

 代码如下 复制代码

.;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar

将 PATH 变量 值 在原有值的末尾加上英文半角的分号 ; 然后加上

 代码如下 复制代码
C:/Program Files/Java/jdk1.7.0_10/bin

这个值同样请根据自己安装路径和版本的不同自行修改

 

最近开始学Android开了,但是在我在Android手机无法调试时出现Device HT843KV11551 requires that applications explicitely declare themselves as debuggable in their manifest. Application \'com.test\' does not have the attribute debuggable set to TRUE in its manifest and cannot be debugged.了,下面我记录一下。

错误提示

Device 'HT843KV11551' requires that applications explicitely declare themselves as debuggable in their manifest.

Application 'com.test' does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.

解决办法

Android.manifest 文件中添加Debug项目,在可视化界面选择application选项卡然后将Debugable的值设置为true

点击查看原图

编辑源码的添加方式则是在<application 字段中增加一个属性:android:debuggable="true"

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • iOS设置UIButton文字显示位置和字体大小、颜色的方法

    这篇文章给大家分享了iOS如何设置UIButton的文字显示位置和字体的大小、颜色,文中给出了示例代码,相信对大家的学习和理解很有帮助,有需要的朋友们下面来一起看看吧。...2020-06-30
  • 删除条目时弹出的确认对话框

    复制代码 代码如下: <td> <a href="/member/life/edit_ppt/<?php echo $v->id;?>" class="btn">编辑</a> <a href="javascript:;" onclick="if(confirm('您确定删除这条记录?')){location.href='/member/life/d...2014-06-07
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • 用Intel HAXM给Android模拟器Emulator加速

    Android 模拟器 Emulator 速度真心不给力,, 现在我们来介绍使用 Intel HAXM 技术为 Android 模拟器加速,使模拟器运行度与真机比肩。 周末试玩了一下在Eclipse中使...2016-09-20
  • 基于JavaScript获取鼠标位置的各种方法

    这篇文章主要介绍了基于JavaScript获取鼠标位置的各种方法 ,需要的朋友可以参考下...2015-12-18
  • Android判断当前屏幕是全屏还是非全屏

    在安卓开发时我碰到一个问题就是需要实现全屏,但又需要我们来判断出用户是使用了全屏或非全屏了,下面我分别找了两段代码,大家可参考。 先来看一个android屏幕全屏实...2016-09-20