<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应用之旅就完成了应用页面布局这一重大项目。
看十遍不如敲一遍。大家加油哈~~~
- <java基础>零起点学Android(五)之应用窗口
- <java基础>零起点学Android(三)
- <java基础>零起点学Android(六)
- <java基础>零起点学Android(一)大体介绍
- <java基础>零起点学Android(二)Intent 意图
- 零起点学Android(四)之Android四大组件
- Rookie零基础学java(五)之运算符练习
- 零基础学python(五)
- 零起点学VB做外挂(五)
- 零基础学Python之五开始真正编程
- 零基础学Android源码之Handler机制
- Rookie零基础学java(七)之流程控制
- Java 零起点
- 零基础学Qt4编程之删除布局内窗口部件的方法
- 零基础学Qt 4编程之中心窗口部件的使用总结
- 零基础学Qt4编程之删除布局内窗口部件的方法
- Android 编程基础,零基础必学。
- 零起点学 C++ 第二章
- com.atomikos.icatch.SysException: Error in init(): Log already in use
- hdu 4687 带花树求一般图最大匹配(模板)
- 二分图匹配(KM算法)n^4
- 数字签名与数字证书
- 关于cocos2dx坐标及几个重要函数说明
- <java基础>零起点学Android(五)之应用窗口
- java多线程学习资料网站集合
- Cavas的save()和restore()方法的运用
- ThinkPad E530 Fedora 20 下无线上网问题
- 特征选择
- ZOJ 3609 Modular Inverse(扩展欧几里德)
- 详解EBS接口开发之物料导入API
- ADB server didn't ACK
- nginx---日志管理