`
stephen830
  • 浏览: 2978122 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android开发中的UI控制(六)

 
阅读更多

android开发中的UI控制(六)

 

转载自 : http://www.android777.com/index.php/tutorial/androids-ui-control-f.html


      之前介绍了Android中的文本控制按钮控制列表控制 和其他一些有趣的控件 。大家应该对这些基本的控制控件有一些了解了,但是如何把这些控制控件合成在一个界面中,控制整体布局呢?这时候就需要了解Android中的布局管理控件。



在Android中几个常见的布局控制对象:LinearLayout、TableLayout、RelativeLayout、 FrameLayout和AbsoluteLayout(Deprecated),他们都继承了ViewGroup,作为各种不同布局管理模型的容器,它 们都提供了各自独到的功能。



FrameLayout:

FrameLayout是一个最简单的布局文件,它将子视图放在它的左上方,然后整个容器只能显示一个子视图,如果有多个子视图则他们会像卡片一样重叠在一起只有最上面的能被看到,不过如果你设置它的背景是透明的,则可以透过上面的卡片看到下面的内容。


下面代码:res\layout\layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >  
<ImageView  
    android:id="@+id/layout_imageview_01"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/js1"
    />
<ImageView  
    android:id="@+id/layout_imageview_02"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/js2"
    />
</FrameLayout>
 

(上面xml代码中的js1和js2对应于附件中的图片js1.jpg,js2.jpg)

 

上面代码将两个ImageView放到FrameLayout中,因为FrameLayout只能显示一个子视图,所以你只能看到前面第一个ImageView。


 

LinearLayout:

 

LinearLayout是一个最常用的基础布局对象。它通过设置orientation将内部的所有子视图以横向或纵向进行排列。你将多个横向的 LinearLayout以当成子视图放进一个纵向的LinearLayout中,这样就形成一个类似Table的布局,不过如果是这种情况,最好是用 TableLayout比较合适。

下面布局文件就是一个纵向布局的例子:

 

<?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="fill_parent"
    >  
  <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="姓名:"
  />
 
  <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="周杰伦"
  />
 
  <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="照片:"
  />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/js1"
  />
</LinearLayout>
 

视图效果如下:


 

       在LinearLayout中还可以设置内部子视图的方位(gravity)。 Gravity是一个排列属性,你可以通过设置它的值为left、center或right而达到将视图放在父视图的左边、中间或右边的地方。

 

 

 

 

TableLayout:

 

TableLayout布局管理对象会将容器内部的子节点按照行列进行排序,它就像是html中的<table>节点。在 TableLayout节点内部中声明<TableRow>将为table添加一行,<TableRow>中的子视图将排成N 列,如果<TableRow>内有N个子视图就将该行划分为N列。整个表的列是是根据表格每行中最多有多少列来决定的,假设整个表格中有2行 是3列,1行是4列则表格将分为4列。

 

还有一个需要注意的特性是:TableLayout默认会将所有的子节点当成它的一行数据,而且你可以放任意的View到TableLayout 中,默认它会将它的直接子节点当成一行,所以你可以定义任意View对象在TableLayout中,它们默认会各自占用一行,而且你对于 TableLayout的直接子节点设置 layout_width=”wrap_content”属性将不会生效,因为默认它会重写成fill_parent。

 

TableLayout还有一个特殊的属性:stretchColumns用来设置需要拉宽的列,因为有的列可能不会填满区域,为了布局的美观你可 以定义哪个列将进行拉宽。用逗号隔开的列值来指定哪些列需要拉宽,列值是从0开始的,如果你需要拉升第2和第3列你可以设置 stretchColumns=”1,2″。同样的道理,如果你需要紧缩一个列你可以使用:shrinkColumns来指定, 如果你要让某些列不可见,可以通过设置collapseColumns属性,这些的用法都跟stretchColumns一样。

 

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1"
    >  
    <TableRow>
	    <TextView
	    	android:text="Open..."
	    />
	    <TextView
	    	android:text="Ctrl-O"
	    	android:gravity="right"
	    />
    </TableRow>
    <TableRow>
	    <TextView
	    	android:text="Save As..."
	    />
	    <TextView
	    	android:text="Ctrl-Shift-S"
	    	android:gravity="right"
	    />
    </TableRow>    
</TableLayout>
 

 


 

 

RelativeLayout:

 

RelativeLayout是一个比较复杂、难用的布局管理对象,它是用定义各个视图相对的位置来管理布局。它一个好用的地方是嵌套的布局层次 少,假设你要做一个Table布局,使用LinearLayout来做的话内部使用多个LinearLayout来协作完成,这样整个视图对象的嵌套层次 就变多了,而手机因为处理器性能不高、内存也不多,所以当嵌套层次多时手机响应的速度就会变慢。而RelativeLayout就是用来弥补这个不足,它 不需要嵌套多个布局对象就可以完成复杂的布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#008000"
    >  
    <TextView
    	android:id="@+id/label"
    	android:text="Type here:"
    	android:layout_width="match_parent"
    	android:layout_height="wrap_content"
    	/>
    <EditText
    	android:id="@+id/entry"
    	android:layout_width="match_parent"
    	android:layout_height="wrap_content"
    	android:layout_below="@id/label"
    	/>	
    <Button
    	android:id="@+id/ok"
    	android:text="OK"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:layout_below="@id/entry"
    	android:layout_alignParentRight="true"
    	/>
    <Button
    	android:id="@+id/cancel"
    	android:text="Cancel"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:layout_toLeftOf="@id/ok"
    	android:layout_alignTop="@id/ok"
    	/>
</RelativeLayout>
 


  • 大小: 10 KB
  • 大小: 101.9 KB
  • 大小: 330.4 KB
  • 大小: 366 KB
  • 大小: 152.2 KB
  • 大小: 10.6 KB
  • 大小: 12.6 KB
分享到:
评论

相关推荐

    安卓Android源码——ui开发类库示例源码.zip

    6. **DialogFragment**:对话框在Android应用中广泛应用,DialogFragment是Android官方推荐的方式,它继承自Fragment,可以方便地管理和控制对话框的显示与消失。 7. **动画(Animation)**:Android支持属性动画...

    android 7.0 SystemUI

    在Android系统架构中,SystemUI位于应用层与系统服务层之间,它提供了通知中心、状态栏、快速设置面板、锁屏界面以及各种系统级别的交互控件。深入理解SystemUI的源代码对于开发者优化系统UI性能、自定义系统行为或...

    android 开发教程UI部分

    在Android开发中,UI部分是构建用户界面的关键,它决定了应用程序的外观和用户体验。本教程主要涵盖Android UI设计的基础知识。 1. 用户界面(UI)理解 用户界面是人与机器交互的桥梁,尤其在当前高度竞争的软件...

    android验证码界面ui实现

    在Android应用开发中,验证码界面UI的实现是一个常见的功能,主要用于身份验证或安全验证环节。本文将详细讲解如何在Android中实现一个具有60秒倒计时功能的验证码界面,以及如何通过PopupWindow来弹出这个界面。 ...

    [毕设季 android开发]第六讲:Android线程及UI更新

    在Android应用开发中,线程管理和UI更新是至关重要的部分,因为Android系统为每个应用程序分配一个主线程,也称为UI线程。主线程主要负责处理用户界面的交互,包括绘制和更新视图。然而,执行耗时的操作(如网络请求...

    老罗Android开发视频教程 (android常用UI编程) 26-33集源码

    在本资源中,"老罗Android开发视频教程 (android常用UI编程) 26-33集源码.zip"是一个包含Android应用开发教学内容的压缩文件。老罗,可能指的是知名的技术讲师罗永浩,以其通俗易懂的讲解风格而闻名。这个教程聚焦于...

    Android新手UI集合全

    在Android开发领域,UI设计是至关重要的一环,它直接影响到应用程序的用户体验和视觉吸引力。"Android新手UI集合全"这个资源包,显然为初学者提供了一整套的UI设计元素,帮助他们快速理解和实践Android应用界面的...

    Android8.1 SystemUI源码

    本文将深入探讨Android 8.1版本的SystemUI源码,介绍其结构、工作原理以及如何利用提供的gradle配置进行开发。 首先,让我们来看看`SystemUI`的构成。SystemUI组件主要由以下几个部分组成: 1. **StatusBar**:...

    android开发 获取UI十六进制颜色码 工具

    在Android开发过程中,UI设计是至关重要的一个环节,而颜色管理是UI设计中的核心部分。开发者经常需要知道屏幕上的各种UI元素所使用的具体颜色值,以便在代码中精确地重现这些颜色。本教程将详细介绍如何获取UI的...

    Android things简单的UI

    总之,Android Things提供了将Android的丰富UI开发经验应用于物联网设备的机会。通过理解如何在有限的硬件资源上构建和管理UI,开发者可以创造出功能强大且直观的物联网解决方案。sample-simpleui项目就是一个很好的...

    androidUI设计器

    Android UI 设计器是Android开发中的一个重要工具,它允许开发者直观地设计应用程序的用户界面,无需手动编写XML布局代码。这个工具极大地提升了开发效率,使得非程序员也能参与到UI设计中来,实现快速预览和调整...

    android 仿锤子UI布局

    在Android开发中,锤子手机以其独特的UI设计风格赢得了众多用户的喜爱。为了实现类似锤子UI的布局,开发者需要深入理解Android布局系统,并掌握一些特殊的设计技巧。本篇将主要探讨如何在Android中仿制锤子UI的格子...

    android项目整体UI框架

    在Android应用开发中,UI框架的设计是至关重要的,它直接影响到应用的用户体验和代码的可维护性。"android项目整体UI框架"这个主题主要涵盖了三个方面:自定义Android项目的底部任务栏、实用Fragment的切换以及项目...

    android 音乐开发 ui素材

    "android 音乐开发 UI素材"这个主题涉及到的是应用程序用户界面中的图形元素,尤其是针对音乐播放功能的按钮和布局设计。酷狗音乐和网易云音乐是两款在中国非常流行的音乐应用,它们的UI设计被广大用户所接受和喜爱...

    Android UI统一框架

    在Android开发中,UI设计和实现是至关重要的部分。为了提高代码的可维护性和复用性,开发者常常会构建一个统一的UI框架。这个框架旨在规范应用中的界面设计,简化多维度UI管理,减少代码冗余,提升开发效率。本文将...

    android模仿易信UI布局效果源码

    在Android开发中,模仿流行的移动应用UI布局是提升用户体验和设计水平的重要步骤。易信,作为一款在中国广受欢迎的即时通讯应用,其简洁而高效的设计风格深受用户喜爱。本源码项目专注于重现易信的UI布局,帮助...

    android UI 各种小例子

    在Android开发中,UI设计是至关重要的一环,它关乎到应用程序的用户体验和视觉吸引力。本压缩包中的"android UI 各种小例子"为初学者提供了丰富的实践资源,旨在帮助开发者掌握基本的Android用户界面设计技巧。每个...

    Android开发入门60个小案例+源代码

    在Android开发领域,初学者经常会面临许多挑战,如理解Android应用程序的基本架构、学习XML布局、掌握Java或Kotlin编程语言,以及如何与...在学习过程中,建议结合官方文档和其他教程,以全面、深入地学习Android开发。

    Android所有UI控件

    在Android开发中,UI(用户界面)控件是构建应用程序不可或缺的部分。它们为用户提供与应用交互的方式,使得信息展示和操作更加直观。Android系统提供了多种控件,涵盖各种功能,从简单的按钮到复杂的布局。本篇文章...

    原生android SystemUI源码

    总的来说,原生Android SystemUI源码是一个深度学习Android系统架构和用户界面设计的宝贵资源,通过它,开发者可以更深入地理解Android系统的工作原理,从而提高自己的开发技能和解决问题的能力。

Global site tag (gtag.js) - Google Analytics