android学习笔记(一)

Android学习笔记
一、 Android环境
1.环境简介
2.环境搭建
3.Android项目结构说明

二、用户界面设计
1.UI界面控制
简介:
用户界面设计时Android应用开发的一个重要内容。在进行用户界面设计时,首先要了解页面中的UI元素如何呈现给用户,也就是如何控制UI界面,Android提供了4种控制UI界面的方法

方法分类:
1. 使用XML布局文件控制UI界面
Android提供了一种非常简单、方便的方法用于控制UI界面。该方法采用XML文件来进行界面布局,从而将布局界面的代码和逻辑控制的java代码分离开来,使程序的结构更加清晰、明了。
具体步骤:
(1) 在Android应用的res/layout目录下面编写XML布局文件,可以采用任何符合java命名规则的文件名,创建后R.java会自动收录布局资源的。
(2) 在Activity中使用以下Java代码显示XML文件中布局的内容
setContentView(R.layout.main)
注:main是XML布局文件的文件名
通过上面两个步骤就可以轻松实现布局并显示UI界面的功能。

具体事例:

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:backgourd="@drawable/background">


android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/title"
style="@style/text"/>

android:id="@+id/startButton"
android:layout_gravity="center_horizontal|center_vertical"
android:text="@string/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/text"/>


此布局管理器采用的是帧布局(FrameLayout)并且添加了两个TextView组件,第一个用于显示文件,第2个用于在窗体的正中间位置显示开始游戏按钮
在布局管理文件main.xml中通过设置布局管理器的android:backgourd属性可以为窗体设置背景图片,通过设置具体组件的style,可以为组件设置样式,使用android:layout_gravity="center_horizontal|center_vertical"可以让该组件在帧布局中居中显示
修改res/values目录下的string.xml文件,并在该文件中添加一个用于定义开始按钮内容的常量,名为start,内容为“单机开始游戏…”如下图:


Hello World, XMLLayoutActivity!
1.2
使用XML布局文件控制UI界面
单机开始游戏...

string.xml文件用于定义应用程序中的字符串常量。其中,meiyige子元素都可以定义一个字符串常量,常量名称有name属性指定,常量内容写在起始标签和结束标签之间
为了改变窗口中文字的大小,需要为TextView组件添加style样式属性,用于指定应用的样式,具体的样式需要在res/values目录中创建的样式文件中指定,如创建一个名为styles.xml的样式文件,并在该文件中创建一个名称为text的样式,用于指定文字的大小和颜色,具体内容如下:




在主活动(MainActivity)中,应用以下代码,指定活动应用的布局文件:
setContentView(R.layout.main);
具体运行结果如下:


2. 在代码中控制UI界面
简介:
Android支持像Java Swing那样完全通过代码控制UI界面,也就是所有的UI界面通过new关键字创建出来,然后将UI组件添加到布局管理器中,从而实现用户界面
具体步骤:
(1) 创建布局管理器,可以使帧布局、表格布局、线性布局和相对布局,并设置布局管理器的属性
(2) 创建具体组件,可以使TextView、ImageView、EditText和Button等Android提供的组件,并设置组件的布局和各种属性
(3) 将创建的组件添加到布局管理其中

特点:
完全通过代码控制UI界面虽然比较灵活,但是其开发过程比较繁琐,而且不利于高层次的解耦,因此不推荐采用这种方式控制UI界面。

具体事例:
package com.caillc;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.TextView;

public class JavaLayoutActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);

// 创建布局管理器
FrameLayout frameLayout = new FrameLayout(this);
setContentView(frameLayout);

// 创建TextView组件
TextView tv = new TextView(this);
tv.setText("在代码中控制UI界面");
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);
tv.setTextColor(Color.rgb(25, 255, 25));

// 添加组件到布局管理器
frameLayout.addView(tv);

// 创建按钮组件
TextView tw = new TextView(this);
tw.setText("点击进入游戏...");
tw.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);
tw.setTextColor(Color.rgb(25, 255, 25));

// 创建一个布局参数
LayoutParams params = new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;

// 设置布局参数
tw.setLayoutParams(params);

// 给组件添加时间监听器
tw.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

// 设置对话框
new AlertDialog.Builder(JavaLayoutActivity.this)
.setTitle("系统提示")
.setMessage("游戏有风险,进入需谨慎,真的要进入吗?")
// 设置对话框的内容
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,
int which) {
Log.i("3.1.2", "进入游戏");// 输入日志
}
})
.setNegativeButton("退出",
new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,
int which) {
Log.i("3.1.2", "退出游戏");
finish(); // 结束游戏
}
}).show(); // 显示对话框
}
});

//添加组件
frameLayout.addView(tw);
}
}

代码中有注释可以自己看
显示效果:

点击按钮:

点击“确定”对话框消失,点击退出直接退出应用

3. 使用XML和Java代码混合控制UI界面
简介:
完全通过XML布局文件控制UI界面,实现比较方便快捷,但是有失灵活;而完全采用java代码控制UI界面,虽然比较灵活,但是开发过程比较繁琐,鉴于两种方法的优缺点,可以融合两种方式,同时采用两种方式进行UI界面的控制。
使用XML和java控制UI界面,习惯上把变化小,行为比较固定的组件放在XML布局文件中,把变化较多,行为控制比较复杂的组件交给Java代码来管理

具体事例:
第一步修改main.xml文件:

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@drawable/background"
android:id="@+id/layout">

第二步在主活动中添加组件:
package com.caillc;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class JavaAndXMLActivity extends Activity {

private ImageView[] img = new ImageView[4];
private int[] imagePath = new int[] {
R.drawable.img1,
R.drawable.img2,
R.drawable.img3,
R.drawable.img4,
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

LinearLayout layout = (LinearLayout)this.findViewById(R.id.layout);

for(int i=0; i img[i] = new ImageView(this);
img[i].setImageResource(imagePath[i]);
img[i].setPadding(2, 2, 2, 2);
LayoutParams params = new LayoutParams(253,148);
img[i].setLayoutParams(params);
layout.addView(img[i]);
}
}
}
运行效果如下:


4. 开发自定义的View
简介:
在Android中所有的UI界面都是由View类和ViewGroup类及子类组合而成的,其中View是所有类的基类,而ViewGroup类是容纳这些UI组件的容器,其本身也是View类的子类。在ViewGroup类中,除了可以包含普通的View类外,还可以再次包含ViewGroup类。

操作步骤:
(1) 创建一个继承android.view.View类的View类,并且重写构造方法。
(2) 根据需要,重写相应的方法。
(3) 在项目的活动中,创建并实例化自定义的View类,将其添加到布局管理器中。
具体事例(无)
3.SDK中常用命令
2布局管理器
2.1简介
每个组件在窗体中都有具体的位置和大小,在窗体中摆放各种组件时很难进行判断。使用Android布局管理器可以很方便的控制各组件的位置和大小。
Android中提供了“线性布局管理器(LinearLayout)”、“表格布局管理器(TableLayout)”、“帧布局管理器(FrameLayout)”、“相对布局管理器(RelativeLayout)”和“绝对布局管理器(AbsoluteLayout)”。其中最后一种绝对布局管理器在Android2.0中被标记为已过期,可以使用帧布局或相对布局替代。
2.2线性布局
简介:
“线性布局管理器”是将放入其中的组件垂直或水平方向来布局,也就是控制放入其中组件横向或纵向排列。

特点:
在线性布局中,每一行(针对垂直排列)或每一列(针对水平排列)中,只能放一个组件,并且Android的线性布局不会换行,当组件排列到窗口边缘后,后面的组件将不会被显示出来。

使用说明:
1. 使用XML布局文件定义线性布局管理器
代码实例:

android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:id="@+id/layout">


代码分解说明:
XML属性 描述
linearLayout
在XML布局管理器中定义线性管理器时,需要使用标记,其基本的语法格式如下:
属性列表
>


android:orientation 用于设置布局管理器内组件的排列方式,其可选值有两种:horizontal:表示水平排列;
vertical:表示垂直排列;
android:gravity 用于设置布局管理器内组件的对齐方式,其可选值包括:
top: 靠上对齐
bottom: 靠下对齐
left: 靠左对齐
right: 靠右对齐
center_vertical: 垂直居中
fill_vertical:增加组件的垂直尺寸以在垂直方向填满容器。
center_horizontal: 水平居中
fill_horizontal: 增加组件的水平尺寸以在水平方向填满容器。
center: 垂直和水平方式都居中,不改变组件大小
fill:水平和垂直方向充满容器
clip_vertical:将组件的垂直方向的上下边向容器靠拢
clip_horizongtal: 将组件的水平方向的左右边向容器靠拢
这些属性也可以同时指定,各属性之间用竖线“|”隔开,如:
right|bottom:指定组件靠右下角对齐
android:
layout_width 设置组件的基本宽度,其值可选如下:
fill_parent:表示该组件的宽度与容器的宽度相同;
match_parent:与fill_parent的作用完全相同,从Android2.2开始推荐使用;
wrap_content:表示该组件的宽度恰好能包住组件的内容;
android:
layout_height 设置组件的基本高度,其值可选如下:
fill_parent:表示该组件的高度与容器的宽度相同;
match_parent:与fill_parent的作用完全相同,从Android2.2开始推荐使用;
wrap_content:表示该组件的高度恰好能包住组件的内容;
android:id 用于为当前组件指定一个id属性;在java代码中可以单独引用这个组件。为组件指定id后,在R.java文件中,会自动派生一个对应的属性,在java代码中,可以通过findViewById()方法来获取它
android:
backgroud 为组件设置背景,可以是背景图片,也可以是背景颜色,为组件指定背景图片时,可以将准备好的背景图片复制到目录res/drawable-hdpi或
res/drawable-ldpi或
res/drawable-mdpi下,然后使用下面代码进行设置引用:
android:background="@drawable/background"其中@drawable指的是上面的目录,而background则表示图片的名称。
如果想指定背景颜色,可以使用颜色值如:
android:background="#ffffff"
备注: 1.属性android:orientation和android:gravity是线性布局管理器支持的属性,其他几个属性都是android.view.View和android.view.ViewGroup支持的属性
2.属性android:layout_width和android:layout_height是ViewGroup.LayoutParams所支持的XML属性,对于其他的处理器同样适用。

具体事例:
代码:

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@drawable/background"
android:id="@+id/layout" >


在屏幕上添加完按钮后,还需要给按钮添加监听器,才能使按钮发挥其特有的用途。Android提供了两种添加单击事件的监听器的方法。
一种是java代码中完成。如在Activity的onCreate()方法中完成,具体做法如下:
public class Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//添加监听事件
Button btn = (Button)findViewById(R.id.login);
btn.setOnClickListener(new OnClickListener(){
@Override
Public void onClick(View v) {
//要实现的动作代码
}
});
}
}
另一种是在Activity中编写一个包含View类型参数的方法,并且将触发的动作代码置于此方法中,再通过XML属性:android:onClick=”myClick(方法名)”指定对应的方法名实现。如:
public void myClick(View view) {
//编写要执行的动作代码
}

2. 图片按钮
图片按钮与普通按钮使用的方法基本相同,只不过图片按钮使用标记定义,并且可以为其指定android:src属性,用于设置要显示的图片。
基本语法:
android:id=”@+id/imageButton1”
android:src=”@drawable/图片文件名”
android:background=”#000”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”>

图片按钮与普通按钮一样,也需要为其添加事件监听,其添加的方式和方法跟普通按钮一致,这里就不在赘述。


代码实例:

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

你可能感兴趣的:(android)