<java基础>零起点学Android(五)之应用窗口

来源:互联网 发布:淘宝大尺度买家秀18p 编辑:程序博客网 时间:2024/06/09 18:50

新建立的项目,都会有特别不专业的title,根本无法满足我们做应用软件美感的心。

所以们想要去隐藏titleBar(标题栏)Fullscreen(状态栏目),如何去做呢?

这里我们单纯介绍配置文件中如何去搞,代码同样也是可以实现的。

因为配置文件的出现就是为了简化代码的拼写,所以我们要顺应潮流。


废话不多说我们开始介绍如何去搞,

如果你想你的应用所有的activity都没有状态栏,就可以在AndroidManifest.xml配置文件中找application标签,

修改 android:theme属性的值"@style/AppTheme"变为"@android:style/Theme.NoTitleBar" 

这样标题就隐藏了,这里面的值对应的介绍。

Theme.NoTitleBar:除去标题栏

Theme.NoTitleBar.Fullscreen 除去标题栏和状态栏,也就是全屏

Theme.Dialog让Activity看起来像对话框

Theme.Wallpaper让用户的桌面背景变为窗口背景


好的,现在开始改改试试吧!

嘿嘿  是不是出错了?

原因是什么呢?新建的项目MainActivity基本上继承自ActionBarActivity

继承自 ActionBarActivity的类必须指定固定的集中Theme风格,

而这些 Theme 风格是需要导入V7中的 appcompat LIB库工程,

编译后再引用才能引用使用。将E:\android\adt-bundle-windows-x86-20131030\sdk\extras\android\support\v7\appcompat这个导入Eclipse中去。然后让你的工程添加这个lib,然后不能再用@android:style/Theme.NoDisplay这个了。要改成@style/Theme.AppCompat。然后运行。


 还有一种方法 把ActionBarActivity换成Activity


我就是用的后一种方法,第一种有点麻烦所以就没搞,现在你可以试试了,

当你测试过后又会觉得满足不了你,你会觉得怎么这么丑,你想改自定义的

样式,没问题Android同样会满足你的需求


在res文件下找到value,你肯定会看到value-v11 value-v14这个分别代表着不同的版本

value。v11就代表2.1 v14代表4.0后。

打开value  之后添加一个style标签,这样你就可以自己定义样式。

如下代码

</style>
      <style name="NottitlebarAnimationTheme" parent="@android:style/Theme">
        <item name="android:windowNoTitle">true</item>
         <item name="android:windowFullscreen">true</item>

<item name="android:windowBackground">@android:color/white</item>
    </style>

name 就是你在主配置文件中需要@style/+name,位置我想你应该知道!

parent就是继承的样式。

里面设置item就是设置样式的值

android:windowNoTitle 设置是否移除标签栏,设置ture就代表移除

android:windowFullscreen  这个是是否移除状态栏

android:windowbackground 这个是背景属性

android:windowContentOverlay这个就是设置状态栏下面的阴影,可以用任何资源代替状态栏阴影。里面@id就好

android:windowTitleBackgroundStyle 这个是设置标题视图的风格,同样可以设置成任何资源@乱七八糟的就好

android:windowTitleSize 看名字就知道不多说

android:windowTitleStyle 同上


上面是关于配置文件中设置窗体的技巧,现在我们介绍如何在代码中邪,

首先你要找到你的Activity 在他的oncreate方法里面的setContentView之前写下,

this.requestWindowFeature()方法。

参数传,Window.FEATURE_XXXXXXX

里面有一些特性以及含义,

Window.FEATURE_CUSTOM_TITLE将自定义布局资源设定为Activity的标题视图

Window.FEATURE_NO_TITLE将该标题视图从Activity移除

Window.FEATURE_PROGRESS在标题中使用一个确定式进度条

Window.FEATURE_INETERMINATE_PROGRESS在标题视图中使用一个小的非确定式(圆形那种进度条)进度指示器

Window.FEATURE_LEFT_ICON

Window.FEATURE_RIGHT_ICON  这两个简单的名字不用我说了吧。




切记,上文的设置一定要在加载布局文件那行代码前!




还有就是如果你在配置文件中设置,代码中却对同样的事情做了不同的修改,程序是优先于代码的。


title的部分告一段落,

下面我们介绍关于页面布局的内容,想必大家用手机都了解,手机应用每一个Activity中页面部分都是划分成一块一块的,我想你应该能懂,这就叫布局。在android中,布局我们都基本通过xml文件来设置它。

Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。



 LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少;如果是水平排列,那么将是一个单行N列的结构。如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个LinearLayout进行水平排列。


 FrameLayout是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。


AbsoluteLayout是绝对位置布局。在此布局中的子元素的android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置。屏幕左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个0代表纵坐标,向下移动,此值增大。


RelativeLayout是Android五大布局结构中最灵活的一种布局结构  RelativeLayout按照各子元素之间的位置关系完成布局。在此布局中的子元素里与位置相关的属性将生效。例如android:layout_below, android:layout_above等。子元素就通过这些属性和各自的ID配合指定位置关系。注意在指定位置关系时,引用的ID必须在引用之前,先被定义,否则将出现异常。
 RelativeLayout里常用的位置属性如下:
    android:layout_toLeftOf —— 该组件位于引用组件的左方
    android:layout_toRightOf —— 该组件位于引用组件的右方
    android:layout_above —— 该组件位于引用组件的上方
    android:layout_below —— 该组件位于引用组件的下方
       android:layout_alignParentLeft —— 该组件是否对齐父组件的左端
       android:layout_alignParentRight —— 该组件是否齐其父组件的右端
       android:layout_alignParentTop —— 该组件是否对齐父组件的顶部
       android:layout_alignParentBottom —— 该组件是否对齐父组件的底部
    android:layout_centerInParent —— 该组件是否相对于父组件居中
    android:layout_centerHorizontal —— 该组件是否横向居中
    android:layout_centerVertical —— 该组件是否垂直居中

TableLayout顾名思义,此布局为表格布局,适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。
TableRow是LinearLayout的子类,它的android:orientation属性值恒为horizontal,并且它的android:layout_width和android:layout_height属性值恒为MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是横向排列,并且宽高一致的。这样的设计使得每个TableRow里的子元素都相当于表格中的单元格一样。在TableRow中,单元格可以为空,但是不能跨列。


熟悉这些,你的android应用之旅就完成了应用页面布局这一重大项目。

看十遍不如敲一遍。大家加油哈~~~













0 0