在写笔记之前,我先把前些阶段我一直在学习Android的的一些想法先说下:当时买了一本《精通android 2.0》但是里面东西太多。虽说看了有些日子,但是感觉效率不是很高。
感觉自己以前学习的方法不是很对。当知道自己效率不高时果断改变学习方法。前些阶段刚接触Android的时候,感觉应该把基础掌握牢(前些面试的时候的感觉),所以在一味研究 基础。自己研究Android SDK的基本原理,当时探讨资源、ContentProvider和Intent。但是感觉还是懵懵懂懂,所以这次我们一个个来,然后再放到一起系统分析整合。
这里就不说Android的配置了,网上一大堆。重复来重复去也没意思。大家自己配置好。先简单了解下Android分解应用程序与各个模块的功能,如下图大概知道每个快的功能,网上很多。这里不说了。
在我分开说基本原理前,我先和大家分享Android的布局,因为这些对于后来举例说明都很有用,都会提到。所以开始吧。
了解了Android布局,发现它和SWING非常相似,在调用各个布局按钮、输入框、文本等信息时,调用的函数都相同。EditText、Button、CheckBox、TextViewRadioButton等。给大家一个简单的实例知道怎么调用输入就行。其实很简单。大家只要在res/layout/main.xml中进行配置就行。一个个调用就用。其他不用。但是Android提供给学习人员LinearLayout(水平或垂直组织其子控件)、TableLayout(以表格形式组织其子空间)、RelativeLayout(以与其他子空间或父控件相对的形式组织其子控件)和Framelayout(支持在布局中动态更改控件)四个布局管理器,大家单从表面的含义都能理解个大概。下面就一个说。
一、LinearLayout
这个是应用最广泛,也是大家在简历project时自动会生成的,其他的可能需要大家自己配置,所以可见他在以后编程应用之广泛。所以就着重介绍下:
这里简单给大家一个例子在res/layout/main.xml进行下面的配置
<?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="@string/hello"
/>
<EditText
android:id="@+id/edit"
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="文本"
/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮"
/>
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选项" />
<RadioButton
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选按钮" />
<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="时钟" />
</LinearLayout>
运行Android模拟器就可显示如下:
所以大家看到了其实和swing中调用几乎差不多。这里如果要是调用各个输入框或者按钮。我们只需获得它的ID在src下面的主函数中通过调用findViewById(R.id.所需的id名)就可以调用。
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
public class LayoutActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText editText = (EditText) findViewById(R.id.edit);
Button button = (Button) findViewById(R.id.button);
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
RadioButton radioButton = (RadioButton) findViewById(R.id.radioButton);
}
}
这里对一些必要的代码进行解析:
android:orientation=""
vertical: 表示垂直布局
horizontal:表示水平布局
android:layout_width=""
fill_parent: 表示填满父控件的空白
wrap_content: 表示大小刚好足够显示当前的控件里的内容
接下来还可能用到
android:gravity=""
right
left
center
top
bottom
center_vertical 表示纵向延伸
center_horizontal 表示横向延伸
还有很多如下面,大家最好一个个试一下(这下面也不全)
二、TableLayout
其实它和CSS中布局的Table很相近,就是表格,我把刚才就代码变一下:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout 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="@string/hello"
/>
<TableRow>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="文本"
/>
<EditText
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="输入框"
/>
</TableRow>
<TableRow>
<Button
android:
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮"
/>
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选项" />
<RadioButton
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选按钮" />
</TableRow>
<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="时钟" />
</TableLayout>
产生的结果就是:
通过结果大家和代码一分析便可知就是TableRow在作怪。就想到与table中row一行行的。其他的大体和线性的布局差不多。这里就不多说了。
在这里比较常用的代码解析
android:collapseColumns="1"
表示隐藏该TableLayout里的TableRow的列1,若有多个需要隐藏,用逗号隔开
android:stretchColumns="1"
表示列1为可伸展的列,若有多个需要伸展,用逗号隔开
android:shrinkColumns="0"
表示设置列0为可收缩的列,当可收缩的列太宽,以至于让其他列不全显示,会向纵向延伸空间。
android:background="@drawble/图片名"
设置View的背景图片
三、RelativeLayout
次布局管理器实现的是一种策略,让容器的中控件以相对于容器或容器的另一个控件的形式配置。
如:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="@string/hello"
/>
<TextView
android:id="@+id/userName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="用户名:"
/>
<EditText
android:id="@+id/nameText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/userName"
/>
<TextView
android:id="@+id/pwd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="密码:"
android:layout_below="@id/nameText"
/>
<EditText
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/pwd"
/>
</RelativeLayout>
运行后:
这个界面就是一个登录窗口,我们调用android:android:layout_below="@id/id名"标签就会在上一个标签的下方,这个功能在很多方面都得到了应用。除了
这个还有layout_above、layout_toRightOf、Layout _toLeftOf等。
常用的代码解析:
android:layout_centerInParent="true"
将当前控件放置于其父控件的横向和纵向的中央部分
判断都是用true 和 false
android:layout_below="@id/id名"
将当前控件放置于id引用为id名的控件下方
还有layout_above、layout_toLeftOf(左边)、layout_toRightOf(右边)
android:layout_marginLeft="20px"
在当前控件左边20像素额外的空间。
四、FrameLayout
这个布局主要是动态显示单一视图。但可以向其中填充很多项。将一个项设置为可见,而其余项设置为不可见。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/oneImag"
android:src="@drawable/one"
android:scaleType="fitCenter"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/twoImag"
android:src="@drawable/two"
android:scaleType="fitCenter"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/threeImag"
android:src="@drawable/three"
android:scaleType="fitCenter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
/>
</FrameLayout>
FrameLayout不会强制一次值像是一个控件。如果想局部中添加了许多控件,那么FrameLayout会简单的奖控件堆叠在一起,最后一个控件为与最顶端。这样可以建立一个而非常有趣得UI。
- 大小: 28 KB
- 大小: 37.8 KB
- 大小: 17.1 KB
- 大小: 34.2 KB
- 大小: 29.6 KB
分享到:
相关推荐
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
这篇“Android Training学习笔记——Navigation 参考源码(ListView版)”深入探讨了如何使用Navigation构建一个基于ListView的导航系统。我们将从以下几个方面来详细讨论这个主题: 1. **Navigation组件简介** ...
这篇“Android Training学习笔记”主要围绕这两个组件展开,旨在帮助开发者提升他们的Android应用设计能力。 RecyclerView是Android SDK提供的一种列表视图控件,取代了早期的ListView。RecyclerView的优势在于它的...
在Android开发中,获取网络图片并显示是一项基本但至关重要的任务。这通常涉及到网络请求、图片处理和UI组件的交互。下面将详细讲解这个过程,包括XML布局、Java代码实现以及必要的权限设置。 首先,我们需要在XML...
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
这篇"Android学习笔记——Http通信 源码"主要探讨了如何在Android应用中利用WebView控件加载网页以及使用ImageView控件加载网络图片,这两部分是Android应用与互联网交互的常见场景。 首先,我们来深入理解一下`...
这篇学习笔记将深入探讨这两个概念及其在实际应用中的使用。 首先,Canvas可以理解为画布,它是Android系统提供的用于在屏幕上绘制图形的对象。在Android中,我们可以通过Canvas来绘制各种形状,如线条、矩形、圆、...
这篇文章是基于“Android Training”系列的学习笔记,主要探讨了App Bar的设计原理和参考源码分析。下面将详细阐述App Bar的相关知识点。 首先,App Bar是Android设计指南中推荐的用户界面元素,它位于屏幕顶部,...
本篇文章将深入探讨`NavigationView`与`Navigation`组件的使用,结合Android Training的学习笔记,我们将理解其核心概念、功能以及如何在实践中应用。 `NavigationView`是Android Design Support Library的一部分,...
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
这篇“Android学习笔记”主要探讨了如何在模拟器中旋转屏幕方向、实现应用全屏显示以及理解窗口生命周期。这些概念对于创建用户友好且性能优良的Android应用程序至关重要。 首先,让我们详细讨论如何在Android...
例如,在`新版Android开发教程+笔记六--应用3、4 布局.pdf`中,可能会涵盖如何创建和使用布局管理器,如何在代码中动态添加和删除视图,以及如何利用Android Studio的布局编辑器(如Design和Blueprint视图)进行可视...
这份"Android开发笔记——UI基础编程"的资料集包含了两部分:新版Android开发教程+笔记七--基础UI编程1.pdf和新版Android开发教程+笔记七--基础UI编程2.pdf,将深入讲解Android应用程序中用户界面的设计与实现。...
标题中的“免费 android 应用 源代码——记事本”表明这是一份关于Android应用开发的资源,特别是一个记事本应用的源代码。记事本应用是Android平台上常见的学习示例,它通常涉及到基础的用户界面设计、数据存储以及...
在“Android学习笔记(九)——更复杂的进度对话框”中,我们将重点关注如何自定义和使用ProgressDialog。以下是一些关键点: 1. **创建进度对话框**: - 使用`ProgressDialog.show()`方法初始化一个进度对话框。...
在本篇“Android学习笔记15:绝对布局管理器AbsoluteLayout”中,我们将深入探讨一种允许开发者精确控制视图位置的布局方式——AbsoluteLayout。尽管在现代Android开发中已经不推荐使用,但在某些特定场景下,它仍然...
总之,这份"Android开发笔记——模拟器、应用教程"将引导你全面了解Android开发的核心技术和实践方法,无论你是初学者还是经验丰富的开发者,都可以从中受益。通过学习和掌握这些知识点,你将能够创建出高质量、适应...
Android学习笔记全全整理,是针对想要深入理解并掌握Android开发技术的学习者们的一份宝贵资源。这份笔记涵盖了从基础到高级的多个方面,旨在帮助读者建立起完整的Android知识体系。以下将详细介绍其中可能包含的...
《Android学习笔记》 在移动应用开发领域,Android操作系统占据着重要的地位,为开发者提供了丰富的API和工具,使得创建各种应用程序变得可能。本压缩包文件包含了一位学习者从第一天到第五天,以及一个特定项目...