android界面UI之代码布局(不依赖layout下的xml文件)
- 格式:doc
- 大小:3.82 MB
- 文档页数:4
Android应用资源---布局资源类型(Layout)布局资源定义了UI的Activity或组件的界面架构。
文件位置(FILE LOCATION):res/layout/filename.xml文件名被用作资源ID。
被编译资源的数据类型(COMPILED RESOURCE DATATYPE):资源指向一个View对象或其子类。
资源引用(RESOURCE REFERENCE):在Java代码中:yout.filename在XML中:@[package:]layout/filename语法(SYNTAX):<?xml version="1.0" encoding="utf-8"?><ViewGroup xmlns:android="/apk/res/android"android:id="@[+][package:]id/resource_name"android:layout_height=["dimension" | "fill_parent" | "wrap_content"]android:layout_width=["dimension" | "fill_parent" | "wrap_content"][V iewGroup-specific attributes] ><Viewandroid:id="@[+][package:]id/resource_name"android:layout_height=["dimension" | "fill_parent" | "wrap_content"]android:layout_width=["dimension" | "fill_parent" | "wrap_content"][V iew-specific attributes] ><requestFocus/></View><ViewGroup><View/></ViewGroup><include layout="@layout/layout_resource"/></ViewGroup>注意:根元素可以是ViewGroup或View类型的元素,也可以是<merge>元素,但是必须只有一个根元素,并且它必须包含xmlns:android属性,像上面显示的那样来指定XML的命名空间。
android界面UI之代码布局用代码来进行界面UI布局很繁琐,好处只能说是会熟悉组件的方法,另外对于有规律性的组件布局可以通过循环来减少代码的写作量。
一般来讲,一个Activity就是一个可视的人机交互界面。
每一个Activity都有一个默认的Window(该Window在Activity的attach方法中通过调用PolicyManager.makeNewWindo 创建),一般来讲,这个Window都是全屏的,当然也有例外,比如Dialog的Window就是非全屏的。
Activity也可以利用默认Window以外的其它的Window。
要想新创建一个窗口,可以调用WindowManager的addView方法,作为参数的view将作为在该窗口上显示的根view。
Window上可以布设若干个view,但其中只有一个view称为根view。
Window表示一个窗口,含一个View tree和窗口的layout 参数。
View tree的root View 可以通过getDecorView得到。
拥有它自己的一些属性,如标题栏。
通过上面的介绍,也可以看出必须在布设view前设置好windows的属性。
View是最基本的UI组件,表示屏幕上的一个矩形区域,Window里可见的内容,就是一层一层的View。
对于用layout中的xml文件来进行布局的方式,在常规的activity下是使用方法setContentView(int layoutResID)来将xml的内容解析成一个基本的View加载到window上,这个view就是本窗口的root view。
View中的各个组件的相对位置和参数属性在xml中进行设置。
具体的属性说明可以参考下面的这篇文章。
如果不采用xml的话,同样也可以在java文件中动态的布置视图view。
在普通activity下布置的代码逻辑为:1:设置最基础的Layout对象实例作为根View;2:对于组件child,先设置组件甲相对于其父view的LayoutParams属性params,然后再设置组件child本身的属性,最后父view调用addview(View child, LayoutParams params)即可将组件甲动态地加入父view中。
I. 简介在移动应用开发中,界面设计与布局是非常重要的环节。
使用Android Studio作为开发工具,可以轻松实现布局设计和界面编写。
本文将介绍如何使用Android Studio进行布局设计和界面编写的一些基本步骤和技巧。
II. 安装和设置首先,确保你已经在计算机上成功安装了Android Studio。
安装完成后,打开Android Studio,并选择新建项目。
接下来,选择适合你项目的最低API级别和目标API级别。
一般情况下,选择较高的最低API级别可以兼容更多的设备。
III. 布局设计在Android Studio中,布局设计使用的是XML语言来描述界面的结构和样式。
最常用的布局类型是LinearLayout和RelativeLayout,它们可以实现不同的屏幕布局。
布局文件可以通过拖拽和预览的方式进行设计。
1. 创建布局文件在项目的res目录下找到layout文件夹,右键点击选择“New -> Layout resource file”,然后命名文件并选择布局类型。
创建完成后,就可以在布局文件中添加和编辑各种视图组件。
2. 添加组件在布局文件中,可以通过在XML中添加组件来构建界面。
例如,可以使用TextView显示文本内容,使用Button添加按钮操作,使用ImageView显示图像等。
在XML中为每个组件设置ID和属性,以定义其在界面布局中的样式和位置。
3. 约束布局Android Studio还支持约束布局,它可以更灵活地定位和调整视图组件的位置。
通过拖拽和连接各个视图组件之间的边界和约束,可以进行更自由的布局。
约束布局的使用需要一些练习和对视图关系的理解。
IV. 界面编写在完成布局设计后,需要对界面进行编写,即为各个组件添加相应的功能和逻辑。
界面编写主要使用Java语言来实现。
1. 创建活动在项目的Java目录下,找到包名,右键点击选择“New -> Activity -> Empty Activity”,然后命名新的活动。
android控制ui界面的方法Android中控制UI界面的方法有多种,其中一些常见的方法如下:1. 使用布局文件:在Android中,UI界面通常使用布局文件来实现。
开发者可以使用XML文件来描述UI布局,再将其与代码进行绑定,从而实现UI控制。
在布局文件中可以定义各种UI元素,如TextView、Button、ImageView等,然后通过代码获取这些元素,对其进行操作,比如修改文本、更改颜色、隐藏显示等。
2. 使用View对象:View是Android中所有UI元素的基类,在代码中可以通过View对象来控制UI界面。
例如,可以通过findViewById()方法获取视图对象,然后对其进行操作。
3. 使用Handler:Handler是Android中的消息处理机制,可以用于在UI线程和后台线程之间进行通信。
开发者可以在后台线程中使用Handler向UI线程发送消息,从而控制UI界面。
例如,可以使用Handler来更新UI元素的状态。
4. 使用AsyncTask:AsyncTask是一种轻量级的异步任务处理方式,可以用于在后台线程中执行耗时操作,然后在UI线程中更新UI 界面。
开发者可以在AsyncTask中重写doInBackground()方法来实现后台操作,然后在onPostExecute()方法中更新UI界面。
5. 使用事件监听器:Android中的事件监听器可以用于在UI界面中响应各种事件,如点击、滑动、拖拽等。
开发者可以在代码中定义事件监听器,然后将其绑定到UI元素上,从而对UI界面进行控制。
例如,可以定义一个OnClickListener对象来监听按钮点击事件,然后在onClick()方法中实现对UI界面的控制。
AndroidUI界面编程概览Android UI界面编程常用控件Android UI界面编程概览本文主要对Android UI 用户界面开放的一些基本概念,均不做深入讲解,但可以快速浏览Android开放经常涉及到的一些基本概念和要素。
一、界面元素1. 窗口:Activity应用程序中每个屏幕显示都通过继承和扩展基类Activity实现分类:基本Activity,带内容的Activity(如ListActivity)2. 对话框:Dialog一种显示于Activity之上的界面元素,由Activity管理,用于显示一些临时信息和功能,它比Activity开销小1) 常用对话框:AlertDialog:信息对话框DatePickerDialog,TimePickerDialog:时间日期选择对话框ProgressDialog:进度对话框还可以设置对话框内容为我们自定义的View2) 相关函数:onCreateDialog():创建对话框的实现showDialog():需要显示的时候调用onPrepareDialog():更改已有对话框时调用3. 菜单:Menu一种显示于Activity之上的界面元素,由Activity管理,用于提供用户一些额外的选项和设置1) 常用菜单:Options Menu:按Menu键时从屏幕底部滑出的菜单Context Menu:用户通过在按件上长按调出它Android UI界面编程常用控件Submenu:用于给菜单分类,可被添加到其它菜单上,不能添加到子菜单上2) 相关函数:onCreateOptionMenu():创建菜单(onCreateContextMenu…)onOptionsItemSelected():处理菜单项的单击事件onPrepareOptionsMenu():动态更新4. 可视化控件:ViewView是可视化控件的基类1) 常用控件:TextView, ImageViewButton, CheckBox, RadioButton, ImageButton, ToggleButtonAnalogClock, DigitalClockEditText, List…2) 数据绑定:adapteradapter将控件(如List, GridView)和复杂数据(如数据,键表)绑定起来5. 其它界面元素标题栏二、layout布局的实现设置控件在屏幕上如何排布1. LinearLayout:线性的布局方式最常用,上下或左右的添加控件2. GridView:网格布局控件按照顺序依次填到每个格子里就好了,使界面很整齐3. TableLayout:表格布局以行列形式管理子控件,每行为一个TableRow,TableRow可添加子控件4. AbsoluteLayout:绝对坐标布局可以让子元素指定准确的x/y坐标值,并显示在屏幕上。
android中layout(布局)和menu(菜单)介绍在 Android 中各种布局的应⽤,以及菜单效果的实现各种布局⽅式的应⽤,FrameLayout, LinearLayout, TableLayout, AbsoluteLayout,RelativeLayout为指定元素配置上下⽂菜单,为应⽤程序配置选项菜单,以及多级菜单的实现1、各种布局⽅式的演⽰res/layout/main.xml代码<?xml version="1.0" encoding="utf-8"?><!--layout_width - 宽。
fill_parent: 宽度跟着⽗元素⾛;wrap_content: 宽度跟着本⾝的内容⾛;直接指定⼀个 px 值来设置宽layout_height - ⾼。
fill_parent: ⾼度跟着⽗元素⾛;wrap_content: ⾼度跟着本⾝的内容⾛;直接指定⼀个 px 值来设置⾼--><!--LinearLayout - 线形布局。
orientation - 容器内元素的排列⽅式。
vertical: ⼦元素们垂直排列;horizontal: ⼦元素们⽔平排列gravity - 内容的排列形式。
常⽤的有 top, bottom, left, right, center 等,详见⽂档--><LinearLayout xmlns:android="/apk/res/android"android:orientation="vertical" android:gravity="right"android:layout_width="fill_parent" android:layout_height="fill_parent"><!--FrameLayout - 层叠式布局。
第2章 Android常见界面布局《Android移动开发》学习目标/Target了解View与ViewGroup的简介,能够说出View与ViewGroup的作用和关联掌握界面布局在XML文件中与Java代码中的编写方式,能够独立编写界面布局掌握编写简单Android程序的步骤,能够编写一个HelloWorld程序掌握常见界面布局的特点及使用,能够搭建简单的界面布局章节概述/ Summary在Android应用中,界面由布局和控件组成。
布局好比是建筑里的框架,控件相当于建筑里的砖瓦。
针对界面中控件不同的排列位置,Android定义了相应的布局进行管理。
本章将针对Android界面中常见的布局进行详细地讲解。
01 02 03 04View视图界面布局编写方式界面布局的通用属性线性布局05 06相对布局表格布局07帧布局2.1View视图先定一个小目标!了解View与ViewGroup的简介,能够说出View与ViewGroup的作用和关联所有的UI元素都是通过View与ViewGroup构建的,对于一个Android应用的用户界面来说,ViewGroup作为容器盛装界面中的控件,它可以包含普通的View控件,也可以包含ViewGroup。
2.2界面布局编写方式2.2 界面布局编写方式先定一个小目标!掌握在XML文件中编写布局,能够搭建简单的布局界面掌握在Java代码中编写布局,能够搭建简单的布局界面2.2 界面布局编写方式在实现Android界面效果之前,我们首先需要编写界面布局,界面布局的编写方式有2种,第1种是在XML文件中编写布局,第2种是在Java代码中编写布局。
Ø在XML文件中编写布局:推荐此种方式编写布局u有效的将界面中的布局代码与Java代码隔离,使程序的结构更加清晰。
Ø在Java代码中编写布局u在Android中所有布局和控件的对象都可以通过new关键字创建出来,将创建的View控件添加到ViewGroup布局中,从而实现View控件在布局界面中显示。
Android UI设计无意中看到的几篇文章,想翻译出来分享给大家。
不过声明,翻译后的意思不一定能完全表达作者的意图,如果想看原文,请参考:/designing/story/understanding-user-interface-android -part-1-layouts到目前为止,我之前的几篇关于Android的文章都集中于向你展示如何解决An droid中的问题,而没有花太多的时间来讨论Android应用程序开发的视觉元素——UI设计。
在这篇和接下来的文章,我将带你穿越构建Android应用程序的UI元素。
文章的开始部分,我将讨论Android中的一些布局(Layouts)和一些在屏幕上摆放的构件(Widget)。
Android屏幕UI组件到这个时点,你已经看到Android应用程序最基本的单元式Activity。
Activity 用于显示应用程序的UI,它可能包含许多构件,如buttons, labels, text boxes 等。
一般,你会使用一个XML文件(例如,位于res/layout文件夹下的main. xml文件)来定义你的UI,它看起来像这样:<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/a pk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/></LinearLayout>在运行时,你在Activity 的onCreate 事件处理函数里加载XML UI ,使用Ac tivity 类的setContentView 方法:1 2 3 4 5 @Override public void onCreate (Bundle savedInstanceState ) { super .onCreate (savedInstanceState ); setContentView (yout .main ); } 在编译期间,XML 文件中的元素会编译成相应地Android GUI 类,并设定了指定的特性。
Android UI之——布局本章学习内容1.Android UI简介2.Android布局本章学习目标1.了解Android UI2.掌握Android各种布局1.1Android用户界面1.1.1Android用户界面简介一个Android应用由一个或多个Activity组成。
Activity是一个UI的容器,自身并不在用户界面中显示。
在具体编程之前,需要了解编程中将使用的UI基本元素以及它们之间的继承结构。
1.视图组件(View)在Android中,View类是一个最基本的UI类,几乎所有的高级UI组件都是继承View类而实现的。
第1章创建的HelloAndroid中使用的TextView(文本框)以及即将介绍的UI组件都是View类,如Button(按钮)、List(列表)、EditText(编辑框)、RadioButton(单选按钮)等。
一个视图(View)在屏幕中占据一块矩形区域,负责渲染该矩形区域或处理区域中发生的事件,如改变区域颜色或用户点击了该区域,并且可以设置区域是否可见、可获取焦点等。
2.视图容器组件(ViewGroup)一个ViewGroup对象是一个Android.view.ViewGroup的实例。
ViewGroup就是View的容器,负责添加ViewGroup的View进行布局。
当然,一个ViewGroup可以加入到另一个ViewGroup中。
由于ViewGroup继承自view.ViewGroup类,该类是一个抽象类,也是其他容器的基类。
3.布局组件ViewGroup的实现类较多,具体的实现方式将在后面章节中详细介绍。
4.布局参数名称为layout_something的XML布局属性,为视图定义适合于它驻留的ViewGroup的布局参数。
每个ViewGroup类实现一个扩展自youtParams的嵌套类。
这个子类包含为每个子视图定义大小和位置的属性类型,以适合于该视图组。
android界面UI之代码布局
用代码来进行界面UI布局很繁琐,好处只能说是会熟悉组件的方法,另外对于有规律性的组件布局可以通过循环来减少代码的写作量。
一般来讲,一个Activity就是一个可视的人机交互界面。
每一个Activity都有一个默认的Window(该Window在Activity的attach方法中通过调用PolicyManager.makeNewWindo 创建),一般来讲,这个Window都是全屏的,当然也有例外,比如Dialog的Window就是非全屏的。
Activity也可以利用默认Window以外的其它的Window。
要想新创建一个窗口,可以调用WindowManager的addView方法,作为参数的view将作为在该窗口上显示的根view。
Window上可以布设若干个view,但其中只有一个view称为根view。
Window表示一个窗口,含一个View tree和窗口的layout 参数。
View tree的root View 可以通过getDecorView得到。
拥有它自己的一些属性,如标题栏。
通过上面的介绍,也可以看出必须在布设view前设置好windows的属性。
View是最基本的UI组件,表示屏幕上的一个矩形区域,Window里可见的内容,就是一层一层的View。
对于用layout中的xml文件来进行布局的方式,在常规的activity下是使用方法setContentView(int layoutResID)来将xml的内容解析成一个基本的View加载到window上,这个view就是本窗口的root view。
View中的各个组件的相对位置和参数属性在xml中进行设置。
具体的属性说明可以参考下面的这篇文章。
如果不采用xml的话,同样也可以在java文件中动态的布置视图view。
在普通activity下布置的代码逻辑为:
1:设置最基础的Layout对象实例作为根View;
2:对于组件child,先设置组件甲相对于其父view的LayoutParams属性params,然后再设置组件child本身的属性,最后父view调用addview(View child, LayoutParams params)即可将组件甲动态地加入父view中。
以下是一段样例代码:
initWelPage 是作为根view的RelativeLayout对象,TextView类型的组件ady_gentle动态加载到initWelPage 的左上位置。
initWelPage = new RelativeLayout(_context);
initWelPage.setTag(initWelPage);
initWelPage.setBackgroundResource(R.drawable.desert);
setContentView(initWelPage);
youtParams layout = new youtParams(youtParams.FILL_PARENT, 280);
layout.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
layout.addRule(RelativeLayout.ALIGN_PARENT_TOP);
dy_gentle = new TextView(_context);
dy_gentle.setId(1);
dy_gentle.setBackgroundDrawable(null);
dy_gentle.setTextSize(30);
dy_gentle.setGravity(Gravity.LEFT);
dy_gentle.setTextColor(Color.YELLOW);
dy_gentle.setText(R.string.hello);
dy_gentle.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
initWelPage.addView(dy_gentle, layout);
如果对于有多层Layout对象相嵌套的布局,将子Layout对象同样看成子组件即可。
不过子Layout的属性,影响的是放置在子Layout中的组件相对于子Layout的位置信息。
同样有一段样例:描述的是以RelativeLayout型对象language_bg作为根view,RelativeLayout型对象lang_body放置在父对象language_bg的中间位置,RelativeLayout型
对象lang_part1位于父对象lang_body的顶部位置,ImageButton型对象language_cancel放
置于父对象lang_part1的右上方,最后把根view作为方法的返回值返回给调用方法的对象。
public View initPopWindow(Context _context)
{
language_bg = new RelativeLayout(_context);
language_bg.setTag(language_bg);
language_bg.setBackgroundColor(0xb0000000);
youtParams layout1 = new youtParams(800, 600);
layout1.addRule(RelativeLayout.CENTER_IN_PARENT);
lang_body = new RelativeLayout(_context);
lang_body.setTag(lang_body);
lang_body.setBackgroundColor(0xe0000000);
language_bg.addView(lang_body, layout1);
youtParams layout2 = new youtParams(youtParams.FILL_PARENT, youtParams.WRAP_CONTENT);
layout2.addRule(RelativeLayout.ALIGN_PARENT_TOP);
lang_part1 = new RelativeLayout(_context);
lang_part1.setTag(lang_part1);
lang_part1.setId(1);
lang_part1.setBackgroundColor(0xe0000000);
lang_body.addView(lang_part1, layout2);
youtParams layout3 = new youtParams(youtParams.WRAP_CONTENT, youtParams.WRAP_CONTENT);
layout3.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
language_cancel = new ImageButton(_context);
language_cancel.setTag(language_cancel);
language_cancel.setBackgroundColor(0x00000000);
language_cancel.setImageResource(R.drawable.cancel);
lang_part1.addView(language_cancel, layout3);
return language_bg;
}
PS:补充知识对象
WindowManager并不是整个系统的窗口管理器,而是所在应用进程的窗口管理器。
系统全局的窗口管理器运行在SystemServer进程中,是一个Service。
ViewRoot通过IWindowSession接口与全局窗口管理器进行交互。
将一个View add到WindowManager时,WindowManagerImpl创建一个ViewRoot来管理该窗口的根View。
并
通过ViewRoot.setView方法把该View传给ViewRoot。
ViewRoot用于管理窗口的根View,并和global window manger进行交互。
ViewRoot中有一个nested class:W,W是一个Binder子类,用于接收global window manager的各种消
息,如按键消息,触摸消息等。
ViewRoot有一个W类型的成员mWindow,ViewRoot
在Constructor中创建一个W的instance并赋值给mWindow。
ViewRoot是Handler的子类,
W会通过Looper把消息传递给ViewRoot。
ViewRoot在setView方法中把mWindow传给
sWindowSession。
ActivityThread.java中调用wm.addView(decor, l);把它加入到window manager proxy的mViews中,同时为这个decor view创建一个ViewRoot,ViewRoot负责协调decor view与
window manager直接绘图、事件处理。
ViewRoot中有IWindowSession和IWindow用来和window manger打交道和接收window manager传过来的消息,消息传过来后ViewRoot分发给decor view,再由decor view进行分
发。