- 什么是Activity
一个Activity通常就是一个单独的屏幕,它上面可以显示一些UI界面(User Interface),也可以实现与用户的交互,获得并处理用户在屏幕上的操作,比如:点击、长按等。
Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一。
在一个android应用中,往往是由多个Activity组成的。
/** * Android开发是基于SDK框架进行开发的,很多的操作SDk已经封装好了,直接是 使用就可以 * Activity 必须通过继承的方式来使用 * * Android使用MVC架构 * Control-Activity * View-AndroidUI * Mode-网络、本地、数据库等存取数据 * * @author Gang */ public class MainActivity extends Activity {
// Activity 创建时调用的方法,为Activity调用的第一个方法,可以简单的 认为是 // 应用程序的入口方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置Activity显示的界面。 // 通过R类,类似与指针、目录的类,找到对应的资源 // 解析XML资源为View对象,显示到屏幕上 setContentView(R.layout.activity_main); } } |
- 什么是布局Layout
Android的UI(UserInterface)界面是由很多的UI组件构成的,每个组件都有一定的排列方式,布局的作用就是按照一定的方式来排列每个UI组件的。
Android一共具有6种布局,分别是:
AbsoluteLayout 绝对布局(已过期,不建议使用)
RelativeLayout 相对布局
LinearLayout 线性布局
FrameLayout 帧布局
TableLayout 表格布局,是LinearLayout的子类
GridLayout 网格布局(4.0推出)
目前推荐使用RelativeLayout、LinearLayou、FrameLayout三种布局。
- LinearLayout的使用
线性布局控制其中的控件按照横向或纵向方式排列。
并且线性布局不会换行,当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。
线性布局的默认方向是水平方向(Horizontal)。
属性 |
介绍 |
可选项值 |
android:layout_width |
定义控件的宽度 |
fill_parent/match_parent wrap_content/绝对数值 |
android:layout_height |
定义控件的高度 |
|
match_parent |
“填充满”父容器 |
|
wrap_content |
根据容器内的东西决定组件的大小 |
|
android:orientation |
定义布局内控件或组件的排列方式 |
vertical 、 horizontal |
android:background |
设置控件的背景颜色或背景图片 |
android:background= "#ffffff" android:background= "@drawable/图片名称" |
android:id |
设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。 |
android:id = "@+id/id的名字" |
Android中使用的颜色是 ARBG 颜色
A代表透明度、R代表红色、B代表蓝色、G代表绿色,可以表现的形式如下:
#RGB #0F0
#ARGB #FF00 A透明度 0完全透明 F完全不透明 shape
#RRGGBB
#AARRGGBB
红色 #F00 #FF00 #FF0000 #FFFF0000
绿色 #0F0 #FF00 #00FF00 #FF00FF00
<!-- xmlns:android 为命名空间,相当于 Java的 import -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#FFCC00" >
</LinearLayout>
|
- 表单组件之-TextView
TextView是最基本的UI组件,主要的作用是在界面上来显示文字。有很多的组件是集成自TextView的,TextView所具有的属性,其子类都具有,TextView的用属性:
属性 |
介绍 |
可选项值 |
andorid:text |
设置文本的内容 |
|
android:textColor |
设置文本的颜色 |
|
android:textSize |
设置文本的字体大小 |
|
android:textStyle |
设置字体样式 |
normal 正常 bold 加粗 italic倾斜 |
android:gravity |
设置文本框内文本的对齐方式 |
top、bottom、left、right、center、fill、center_vertical、 center_horizontal、fill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如right|bottom |
android:autoLink |
给指定的文本增加可单击的超链接 |
none、web、email、phone、map和all。 |
android:drawableLeft |
用于在文本框左侧绘制图片 |
通过“@drawable/图片文件名”来设置。 |
android:drawableRight |
用于在文本框右侧绘制图片 |
|
android:drawableTop |
用于在文本框上部绘制图片 |
|
android:drawableBottom |
用于在文本框底部绘制图片 |
|
android:singleLine |
是否为单行 |
true/false |
android:lines="2" |
行数 |
|
android:ellipsize="marquee" |
如果TextView显示不了所有的文字的时候,使用...来省略显示不了的字. |
start,middle, end 在TextView的前面,中间,后面显示省略号 ,marquee 跑马灯方式显示 |
<TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:autoLink="web" android:background="#009933" android:drawableTop="@drawable/ic_launcher" android:gravity="center" android:text="www.baidu.com" android:textColor="#003399" android:textSize="20sp" android:textStyle="normal" /> <!--跑马灯效果 当字数比较多的情况下,可以以滚屏的方式显示出来 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是跑马灯效果这是跑马灯效果这是跑马灯效果这是跑马灯效果这是跑马灯效果" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" /> |
【备注:】sp、dp、dip、pt、px等单位的区别?
- dpi dpi指像素密度。dots per inch ,即每英寸内像素点的个数。它不是表示长度的单位。在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义范围。
- dip device independent pixels ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。
- dp 与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。
- sp scale independent pixel ,即与缩放比例无关的像素。在android中常用来表示文字大小。
- px 表示像素。因为同样是200px,但是在不同手机下显示的大小是不同的。
- pt point磅。1磅=1/74英寸
- 总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。
- 表单组件之-EditText
EditText是个输入框,主要的作用是获得用户输入的内容。它继承自TextView,拥有 TextView的所有属性。
属性 |
介绍 |
可选项值 |
<requestFocus /> |
获得焦点 显示光标 |
|
android:hint |
跟用户的输入提示 |
提示的字符串 |
android:textColorHint |
提示字体颜色 |
颜色 |
android:textCursorDrawable |
光标图片 |
@null与字体颜色一样 |
android:inputType |
输入框输入数据类型 |
textPassword,phone,不同的输入类型会弹出不同的键盘 |
android:imeOptions |
输入法右下角显示的文字 |
actionSend ,actionSearch等 |
android:imeActionLabel |
横屏时,输入法右边显示的按钮文字 |
显示的字符串,android:imeOptions="flagNoExtractUi"取消显示右边的按钮 |
setOnEditorActionListener |
输入法右下角点击的操作 |
|
addTextChangedListener |
输入内容发生变化时的操作 |
|
setError() |
设置错误提示,null时取消错误提示 |
|
3. Button 继承自TextView
为Button设置监听器(观察者模式)
1.设置同名方法: android:onClick="btnClick" public void btnClick(View v){ ... } (点击时调用) |
属性方式设置 属性所对应的值与方法的名字相同 调用所需 Button btn=(Button)findViewById(R.id.btn) |
2.设置监听器: 单独写一个实现OnClickListener接口的类 class BtnClickListener implements OnClickListener { @override Public void onClick(View v){ Toast.makeText(实参).show();} } |
创建子类方式设置 调用所需 Button btn=(Button)findViewById(R.id.btn) BtnClickListener l = new BtnClickListener(); btn.setOnClickListener(l); |
btn.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
} }); |
匿名内部类方式设置 |
btn.setOnClickListener(this)
|
|
public void onClick(View v) {....} |
1. 当按钮被点击的时候,调用这个方法 2. v 为被点击的组件(触发的组件) 3. 根据v.getId() 判断哪个组件被点击(可用switch语句进行操作) public void choice(View v){ String text=null; switch (v.getId()) { case R.id.radio0: text="选项A"; break;
|
4. Toast 提示
Toast.makeText(MainActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show();
edit.getText().toString()获取文本框中的内容 |
context 一般 Activty对象 因为Activity继承自 Context text 要显示的文字 duration 持续的时间 3000 建议使用Toast.LENGTH_SHORT |