Android开发基本知识总结,Android课件

Android开发基础教程

2015-4-13周一2CJ02

目录

1.什么是Android?

2.Android应用开发环境

3.Gradle

4.模拟器Emulator

5.开发一个安卓应用程序的步骤

6.关于多个模拟器的问题

7.安卓工程文件的结构

8.android界面文件---xml文件

9.android程序文件---java文件

10.界面布局方式

11.几个常用组件

12.Roast组件

13.对话框AlertDialog

14.几条重要的语句

15.监听器Listener

16.识别响应事件的组件

17.界面切换

18.界面之间的数据传递

19.Activity生命周期

20.多媒体播放

21.日志文件在程序调试中的使用

22.使用XML文件保存数据

23.使用TXT文件保存数据

24.使用数据库保存数据

25.时间组件

26.线程Thread

27.视频播放VideoView

28.MediaPlayer,SurfaceView和SurfaceHolder播放视频

29.录制音频MediaRecorder

30.菜单组件

1.什么是Android?

移动设备(常常指手机mobile)的操作系统,由google公司出品,是免费的, 最早是基于Linux平台的;目前已经推出的Android3.0是平板电脑上的操作系统。

其它的手机操作系统有:iPhone系统等。

手机厂商:三星(Samsung,宏达电(HTC),摩托罗拉(Motorola),华硕,索尼,Garmin等都支持iPhone 系统。

Android系统功能:自定义用户界面,支持蓝牙,多点触摸,具有导航功能和语音识别功能,结合了google 地图。

Android软件开发工具SDK 4.0。

Android系统特点:虚拟键盘,以WebKit为核心的WebView组件,可以使用HTML, javascript等。

2.Android应用开发环境

Eclipse+ADT+Android SDK。

ADT---Android开发工具插件(Android Plugs for Eclipse).

开发环境安装注意事项:关闭防毒软件,按顺序安装,保持网络畅通,比较耗时。特别说明,安装和运行需要高配置机器和高速网络,比较费时。

(1)安装Java JDK。甲骨文

网站:https://www.360docs.net/doc/5a5993832.html,/technetwork/java/javase/downloads/index.html

(2)安装Eclipse IDE。

网站:https://www.360docs.net/doc/5a5993832.html,

(3)安装Android开发工具插件ADT。

网站:https://https://www.360docs.net/doc/5a5993832.html,/android/eclipse

(4)安装Android SDK。

网站:https://www.360docs.net/doc/5a5993832.html,/sdk/index.html

也可以安装Android Studio IDE。

网站:https://www.360docs.net/doc/5a5993832.html,/

3.Gradle

Gradle就是可以使用Groovy来书写构建脚本的构建系统,支持依赖管理和多项目,类似Maven,但比之简单轻便。

国内恶略的网络环境就不提了.下面说一下怎么解决, 方法一就是翻墙, 自行百度.方法二就是下载

gradle-1.6-bin.zip离线包, 下载地址https://www.360docs.net/doc/5a5993832.html,/detail/zjilvufe/...

4.模拟器Emulator

用软件模拟一部真实的手机,新建模拟器,并配置模拟器

注意问题:(1)开发版本(2)分辨率

5.开发一个安卓应用程序的步骤

新建安卓工程---输入工程名称---选择工作文件夹---安卓版本---输入安卓应用名称application name和包名---编辑程序---装入(载入)程序到模拟器中

其中, Create activity:设置为允许,即程序可以交互操作。

运行安卓程序:run as application“

保存安卓工程,打开安卓工程

切换工作区

导入安卓工程:把已经存在的安卓工程-文件拷贝到当前工作文件夹中。

6.关于多个模拟器的问题

创建多个模拟器。选择其中一个模拟器---配置模拟器。

7.安卓工程文件的结构

Src:源程序所在文件夹

Gen:存放系统自动生成的源程序文件,其中最重要的是R.java。

Android版本:存放系统开发包。

Assets:存放外部资源;

Res:有3个文件夹,

Drawable:存放图标、图片,和其它资源文件。

有3个子文件夹。

Drawable-hdpi:存放高分辨率图片

Drawable-mdpi:存放高分辨率图片

Drawable-ldpi:存放低分辨率图片

Layout:程序界面文件,即XML文件。

Values:存放参数文件,文件形式仍为XML。

界面文件和程序文件是相互独立的,

8.android界面文件---xml文件

扩展名为xml, 设计时有2种方法:可视化,直接编辑代码

9.android程序文件---java文件

SetContentView(https://www.360docs.net/doc/5a5993832.html,yout.xml文件名称); //加载界面文件

FindViewByID(R.id.组件的ID号); //由资源索引号得到资源指针

注意:在android程序中,所有组件和资源都是通过资源索引号引用的,不是资源指针;资源索引号是

层次结构;函数FindViewByID返回值的类型由组件ID决定。

如何得到页面上组件的指针?得到后,就可以操作组件的属性等。

10.界面布局方式

选择以下界面布局方式之一:

布局方式:

LinearLayout, TableLayout表格布局,FrameLayout框架布局(网格布局), AbsoluteLayout, RelativeLayout

11.几个常用组件

布局组件

TextView:

txtview.setTextSize(12);

EditText:

得到EditText edittext_obj中的文字:

String s = edittext_obj.getText().toString();

if (s.equals(“anotherstring”)){……}

Button,

CheckBox,

GridView,

************************************************************************ ImageView

常用属性:

src,

scaleType:fixXY按组件大小显示图片, centerCrop按比例显示图片超出部分裁截Gallery画廊

ListView,

ListView listview = new ListView();

String[] songs = new String[]{“***”,”***”};

ArrayAdapter strlist = new ArrayAdapter(this,

https://www.360docs.net/doc/5a5993832.html,yout.simple_list_item_1, songs); //此处第2个参数的意义?

listview.setAdapter(strlist); //在ListView中显示列表数据

private ListView.onItemClickListener lstListener = new

ListView.onItemClickListener(){

@Override

public void onItemClick(AdapterView parent,View v, int position, long id){ // position为选择条目的序号

}

}

************************************************************************ LinearLayout:

layout.setBackgroundColor(Color.BLUE);

12.Roast组件

在button的响应事件中, 增加以下语句:

Toasttoast = Toast.makeText(FullscreenActivity.this, "这是一个对话框实例", Toast.LENGTH_LONG);

//或以下语句

//Toasttoast = Toast.makeText(getApplicationContext(), "这是一个对话框实例", Toast.LENGTH_LONG);

toast.setGravity(Gravity.CENTER, 0, 0);

toast.show();

13.对话框AlertDialog

//常用用法

AlertDialog.Builder myalterdlg = new AlertDialog.Builder(FullscreenActivity.this);

myalterdlg.setIcon(R.drawable.ic_launcher); myalterdlg.setTitle("这里是标题");

myalterdlg.setMessage("这里是显示文字"); myalterdlg.show();

/*上面的简写:

AlertDialog.Builder myalterdlg

= new AlertDialog.Builder(FullscreenActivity.this); myalterdlg.setIcon(R.drawable.ic_launcher); myalterdlg.setTitle("这里是标题");

myalterdlg.setMessage("这里是显示文字"); myalterdlg.show();*/

/*上面的复杂用法:

AlertDialog.Builder myalterdlg

= new AlertDialog.Builder(FullscreenActivity.this) .setIcon(R.drawable.ic_launcher)

.setTitle("这里是标题")

.setMessage("这里是显示文字")

.setPositiveButton("确定", new DialogInterface.OnClickListener(){ public void onClick(DialogInterfaced f1, int i){

// 此处进行处理

}

})

.setNegativeButton("否", new DialogInterface.OnClickListener(){ public void onClick(DialogInterfaced f2, int i){

// 此处进行处理

}

})

.setNeutralButton("取消", new DialogInterface.OnClickListener(){ public void onClick(DialogInterfaced f3, int i){

// 此处进行处理

}

})

.show();*/

14.几条重要的语句

1)加载界面文件activity_fullscreen.xml:

setContentView(https://www.360docs.net/doc/5a5993832.html,yout.activity_fullscreen);

注意:加载界面文件与界面切换的区别:******

2)获得当前界面上Button组件button1的id:

button1 = (Button)findViewById(R.id.button1);

3)获得当前程序

getApplicationContext();

4)退出当前界面, 返回主界面

finish();

5)系统常量

Color.BLUE, Menu.FIRST,

6)字符串函数

String s = “11111\r\n22222\r\n33333\r\n44444\r\n55555\r\n”;

String[] resultstring;

resultstring = s.split(“\r\n”);

7)系统函数

setTitle(“这里是标题”);

8)函数

int[] songnames = new int[]{R.raw.music1, R.raw.music2, R.raw.music3};

private File path = Environment.getExternalStorageDirectory(); //得到SD卡路经

Time t = new Time();

t.setToNow(); //设置为当日。

t.hour + t.second + t.minute

ImageView.setAlpha(50):设置透明色

//疑问:File对象+ ”/myfilename.txt”这个用法正确吗?

// File.getAbsolutePath(), File. getName ()的区别?

15.监听器Listener

事件驱动,消息传递。

如何给按钮(Button)设置监听器Listener?

在布局文件xml中, 增加button组件, id为button1

在程序文件java中, 在对应位置增加以下语句:

import android.widget.*;

private Button button1;

在onCreate中, 增加以下语句:

button1 = (Button)findViewById(R.id.button1);

/*这是第1种写法

//在onCreate中, 增加:

button1.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v){

//此处处理响应事件

}

});

*/

//这是第2种写法

//在onCreate中, 增加:

button1.setOnClickListener(button1listener);

button2.setOnClickListener(button1listener);

//在类中, 增加:

private Button.OnClickListener button1listener = newButton.OnClickListener(){ @Override

public void onClick(View v){

//此处处理响应事件

};

//这是一个监听器例子

// 在java文件onCreate事件中:

checkbox1 = (CheckBox)findViewById(R.id.checkBox1);

checkbox1.setOnCheckedChangeListener(checkedChangelistener);

// 在java文件类中:

private CheckBox.OnCheckedChangeListener checkedChangelistener =

new CompoundButton.OnCheckedChangeListener(){

@Override

public void OnCheckedChanged(CompoundButton cb, boolean isChecked){ // 进行处理

}

};

16.识别响应事件的组件

输入参数:View v

程序代码如下:

case(v.getId())

{

caseR.id.btn1:

//第一个按钮的处理事件

break;

……

}

17.界面切换

界面切换语句startActivity之后的语句不再执行。

1.调用用户另一界面

Intent in = new Intent();

in.setClass(FullscreenActivity.this, SecondActivity.class);

startActivity(in);

注意:FullscreenActivity.this也可以写成:getApplicationContext()取代主程序类。

2.调用系统界面

(1)浏览网页

Uri uri = Uri.parse(“https://www.360docs.net/doc/5a5993832.html, ”);

Intent in = new Intent(Intent.ACTIN_VIEW, uri);

startActivity(in);

(2)调用系统拨号界面

Uri uri = Uri.parse(“tel:130******** ”);

Intent in = new Intent(Intent.ACTIN_DIAL, uri);

startActivity(in);

(3)调用系统拨号功能

Uri uri = Uri.parse(“tel:130******** ”);

Intent in = new Intent(Intent.ACTIN_CALL, uri);

startActivity(in);

注意:需要在AndroidManifest.xml文件中进行设置,才可以自动拨号:

18.界面之间的数据传递

1.方法1:调用无返回参数

在第一个界面中:

Bundle bundle = new Bundle();

bndle.pushString(“name”, “David”);

bndle.pushInt(“age”, 22); //pushChar, putShort,put Boolean, pushChar等等

Uri uri = Uri.parse(“https://www.360docs.net/doc/5a5993832.html, ”);

Intent in = new Intent(Intent.ACTIN_VIEW, uri);

in.putExtras(bundle);

startActivity(in);

在第二个界面中:

Intent in = this.get Intent();

Bundle bundle = in. getExtras();

String studentName = bundle.getInt(); //getDouble, getShort, getIntArray等2.方法2:调用有返回参数

例1,在第一个界面中:

private static final int ACTIVITY_EDIT = 1;

Bundle bundle = new Bundle();

bundle.pushString(“name”, “David”);

Intent in = new Intent();

in.putExtras(bundle);

in.setClass(FullscreenActivity.this, SecondActivity.class);

startActivityForResult (in, ACTIVITY_EDIT);

注意:startActivityForResult后所有语句无效,不执行;在第一个界面中,第二个界面可以在不同位置被多次调用;在第一个界面中,在其它位置可以调用其它界面。

在第一个界面中,重写onActivityResult,接收所有被调用界面返回的参数(如果有):

@Override

protected void onActivityResult(int requestCode,int resultCode,Intent data)

{

super.onActivityResult(requestCode, r esultCode, data);

if (requestCode== ACTIVITY_EDIT) //此参数可以区分不同的调用

{

Bundle bundle = data.getExtras();

if (resultCode == RESULT_OK) //此参数可以判断有无返回参数

{

Bundle bundle = data.getExtras();

……

}

if (resultCode == RESULT_CANCELED)

{ ……}

……

}

}

问题:如何判断被调用界面是否传递返回参数?如何区分返回参数是由不同的被调用界面传递的?android的这种解决方法并不是完美的。

例2,在第二个界面中:

读取第一个界面传递的参数,省略;下面是向调用程序传递返回参数:

Bundle bundle = new Bundle();

bndle.pushString(“name”, “贺昌峰373780592”);

Intent in = new Intent();

in.putExtras(bundle);

setResult(RESULT_CANCELED); //传递参数返回

// 或setResult(RESULT_OK, i n); //不传递参数返回

finish();

注意:这时,第二个界面返回到第一个界面,可以不传递参数直接返回(RESULT_CANCELED),

相关文档
最新文档