Android快速开发笔记.docx

上传人:b****4 文档编号:11529303 上传时间:2023-03-18 格式:DOCX 页数:34 大小:4.92MB
下载 相关 举报
Android快速开发笔记.docx_第1页
第1页 / 共34页
Android快速开发笔记.docx_第2页
第2页 / 共34页
Android快速开发笔记.docx_第3页
第3页 / 共34页
Android快速开发笔记.docx_第4页
第4页 / 共34页
Android快速开发笔记.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

Android快速开发笔记.docx

《Android快速开发笔记.docx》由会员分享,可在线阅读,更多相关《Android快速开发笔记.docx(34页珍藏版)》请在冰豆网上搜索。

Android快速开发笔记.docx

Android快速开发笔记

Android快速开发笔记

Android快速开发1

1.每创建一个activity,都要继承Activity,复写onCreate方法,并且要在manifest中进行注册;注意:

复习onCreate后,马上在super.onCreate()下面加上setContentView(R.layout.xml),指定当前class的布局文件,否则会报错;

2.Layout下的xml是布局文件,com下的class文件是程序文件,string中存放所有文字类对象等等;

3.使用控件,先要在布局文件的xml中声明,设定控件id用android:

id=”@+id/ID”。

然后在class程序文件中调用控件,首先声明控件,然后荣格findViewById的方法。

例如:

TextViewtextview=(TextView)findViewById(ID);

4.给上面的textview赋值,textview.getText(“”);可以直接写值,也可以使用R.string的形式调用声明的字符串。

5.使用Intent进行activity切换(在class中编写)【向另外的activity中传值】

1)创建内部类

ClassmyButtonListenerimplemtesonClickListener(view){

Intentintent=newIntent();

【Intent.putExtra(“名称”,值);】

Intent.setClass(当前activity.this,目标activity.class);

当前activity.this.startActivity(intent);

}

2)将监听器绑定到按钮上

myButton.setOnClickListener(newmyButtonListener());

6.在另外的activity接收上一个activity传递过来的值

String变量=intent.getStrngExtra(上一个activity传过来的名称);

7.获得当前act上用户输入的内容(取得editText控件中用户输入内容)

1)先同findById的方法得到取值控件;

2)String变量=控件.getText().toString();

8.编辑手机的MENU键功能

1)先在class中复写onCreateOptionsMenu(Menumenu)方法;

2)编辑方法中的内容,添加:

menu.add(0,menuId,1,”关于”);

menu.add(0,menuId,2,”退出”);

3)复写onOptionsItemSelectet(MenuItemitem)方法,为菜单加上操作;

编辑判断:

if(item.getItemId()==“menuId”){执行对应操作按钮的操作}

Android快速开发2——单选框、复选框、吐司提示的使用

1.同样作为控件,单选框、复选框的使用仍然遵循:

1)在layout的xml中声明;

2)在程序文件的class中通过findViewById获取;

3)编辑并绑定适当的触发器;

以上操作只针对单选框和复选框,吐司提示类似web的alert,不用另外声明。

2.在layout的xml中声明单选框时,需要声明两个部分:

1)先声明一个,用来区分同一个界面上,不同的单选按钮组;

2)在每一个内部,声明需要个数的

3.在程序文件的class使用时,无论是声明的RadioGroup,RadioButton,CheckBox,每一个控件都要进行声明并获得:

例如:

privateRadioGroupgp=null;

PrivateRadioButtonrb1=null;

PrivateRadioButtonrb2=null;

PrivateCheckBoxcb=null;

rg=(RadioGroup)findViewById();

rb1=(RadioButton)findViewById();

rb2=(RadioButton)findViewById();

cb1=(checkbox)findViewById();

cb2=(checkbox)findViewById();

4.编写单选框部分的代码

和按钮的触发器不同,要直接在控件上编写绑定的代码,然后复写对应的接口代码。

单选按钮的触发器,绑定在RadioGroup上,

5.编写复选框部分的代码

复选框的监听器好单选框有类似的部分,但复选框是在每一个控件上加监听器,也就是当前页面上有几个复选框,就要声明并绑定几个监听器。

6.吐司提示框的使用

吐司提示框,用户在进行操作时,界面上闪现并慢慢消失的提示,使用时在操作的代码部分加上toast代码即可,例如:

Toast.makeText(参数1,参数2,参数3).show();

参数1:

当前代码的activity名.this

参数2:

希望在提示中显示的内容

参数3:

Toast.LENGTH_LONG,也可以是Toast.LENGTH_SHORT

android快速开发3——状态条

一、状态条分多种,在xml的布局文件里进行设置,这里简述两种。

使用状态条,只需xml和class两个文件:

首先在布局文件的xml里声明控件

图中的style代表这个进度条的样子,这里的设置是横向滚动。

注意visibility要设置成gone,这样默认加载时暂时不可见。

style="?

android:

attr/progressBarStyle"

第二种,只是这里有区别,这样设置是默认的一个不断旋转的圈。

然后在class中进行设置:

本例中为了执行方便,还声明了一个按钮控件。

首先声明变量,然后通过findViewById获取到控件。

为按钮添加监听器,复习OnClick方法:

为了控制进度条的显示,要在开始声明一个私有变量,privateinti=0;

在onClick中设置进度条的动作:

当i==0时,点击开始使进度条能显示,当i<100时,不断的增加。

直到>100会隐藏。

在elseif中,bar1分两句,上一句是主进度,显示为实线,setSecondaryProgress为付进度,显示为虚线。

如果想调整进度条的尺寸,可以在xml中设置android:

max=”需要的数值”,然后在class中的elseif里调整i

这样进度条的尺寸就可以根据设置灵活调整了。

综上所述,进度条的设置,关键在于首先在xml中要使其不可见,即GONE,然后根据动作不断增加显示,后面具体需要和线程配合使用。

Android快速开发4——ListView控件的使用

ListView控件主要用来在屏幕上,以列表形式显示数据,帮助用户进行浏览操作。

使用方法相对复杂一些,主要包括class和两个布局文件xml。

首先编辑第一个xml文件(main)

基本就是要使用linearlayout进行一下嵌套,先竖着线性,然后每行里的内容再线性,此处贴出的例子均是确认正确的。

注意设置的排列方向为垂直。

Scrollbars表示当显示不全时,上下滚动。

第二个xml(user.xml)

这里实际上是每一行的布局,本例中在每一行中有两个textView显示内容,实际可根据情况选择其他控件。

最后编辑class文件,与普通activity不同的是,使用listView控件的activity要继承ListActivity,如下:

需要注意几个地方:

1继承ListActivity这个方法

2声明ArrayList和hashmap,并给其填充内容,具体情况可根据数据要求写循环操作。

3声明SimpleAdapter,其中包含4个部分的内容,最后要setListAdapter。

最后如果要操作list中的记录,需要复写onListItemClick方法,如下:

根据实际需要,在这里添加对应的功能代码。

Android快速开发5——使用handler控制进度条

1基本使用

Handler被用来处理程序的异步操作,也就是用来编写多线程相关的程序。

基本的使用方法非常简单,核心代码只在class中编写,有时候为了增加开始和结束功能,会在布局文件xml中添加按钮控件,以下只针对class中具体的调用进行说明。

先要声明Handler,然后声明匿名内部类Runnable,实例化一个updateThread,再复写他的run方法,实际的操作写在这个run方法里。

这里的例子比较简单,就是执行一个日志打印,其中handler.postDelayed是每3000ms执行一次updateThread。

如果不想有延迟时间,直接用handler.post即可。

以上是handler执行的异步操作,还需要开始和结束按钮使线程开始和结束。

实际就是给两个按钮添加监听:

开始执行,就是把updateThread这个实例post进handler。

当前为马上开始进行操作。

结束执行时,使用removeCallBacks将updateThread从handler中移除即可。

最后将两个监听器绑定到对应的按钮上,即可完成操作。

在实际项目中,根据用处和实际情况,在run中编写实际的代码即可。

2使用Handler控制进度条的方法

首先在布局文件中声明一个横向进度条,同样通过findViewById获取,并声明一个按钮,添加应有的绑定,本例是使用按钮开始线程,由线程控制进度条的运行。

与普通的使用一样,先要声明匿名内部类

这里声明的内部类是updateBarHandler

Bar1.setProgress(msg.arg1),由一个消息信息控制进度条的运行,这个消息msg来源于run中的代码。

同样的使用post把线程重新放进Handler实例中。

在Runnable中,首先声明一个i,并赋予初始值。

在run中:

Messagemsg=updateBarHandler.obtainMessage();一个消息队列的使用。

Msg.arg1=i;在消息队列的参数1中接收i。

然后每500ms让线程执行一次。

把msg放入到updateBarHandler的消息队列。

当i等于100时,将线程移除。

最后是按钮触发器的实际操作;

首先从控件不可见,到将执行线程放入handler,然后根据run的代码自动运行。

最后将触发器绑定到按钮上。

Android快速开发6——Handler与activity的线程分离

上一个文档的例子里,使用开始按钮和结束按钮控制屏幕后台的日志打印,直接调用run方法,实际上这个操作和activity是没有分开的,根据实际验证,这个线程的信息和activity的线程信息完全一样,因此说明二者互相干涉,没有做到真正的分离,但实际应用肯定不行,需要把复杂的耗时场的处理放在单独的线程中,因此就要使用下面介绍的方法。

本例只在class中编写代码,实际功能是利用一个线程在日志中打印字符串。

系统加载后自动运行单独的线程执行操作。

代码分下面两部分:

如上图:

加载了布局文件之后,声明HandlerThread对象,然后使用start方法,这样才能开始一个独立于activity的线程,并且只有在使用了start方法,后面才能使用looper。

MyHandler是后面声明的一个匿名内部类,实例化时使用handlerThread的getLooper()方法,保证当时间轮盘轮转到时,可以占用CPU时间。

然后再声明一个Message对象,同时从myHandler中接受消息信息。

在msg中传递数据,arg1和arg2用来传递简单的整型数据。

还可以使用Bundle传递相对复杂的对象,对象是一组键值对,可以包含整数或字符串等常用内容。

声明Bundle对象,直接在b中put需要传递的内容。

setData(b),将b存入,sendToTarget,发送到目标,实际就是myHandler。

下面是第二部分,

声明匿名内部类,并继承Handler。

注意构造函数的使用,最后复写handleMessage的方法。

其中声明Bundle后,使用msg.getData接收来自之前sendToTarget的内容。

通过键值名称接收数据。

B.getInt和b.getString。

根据当前实例,加载布局文件后直接执行,实际会放在其他操作之后,如此就可以使线程得到分离。

Android快速开发7——SQLite编程

SQLite是android框架自身包含的一个小型关系数据库系统,他支持基本的SQL语句以及基本的表操作功能,能够满足android编程中对数据的基本操作,是一种简便的数据解决方案。

SQLite本身占系统资源非常小,一共才几十kb,所以使用他处理数据,对系统资源本身的影响比较小,但是需要注意,出于各种原因,SQLite本身会存在一些让人莫名其妙的bug,故对于SQLite,仅限于处理简单的数据事务,不适合处理复杂的业务。

以下通过几个截图,说明具体使用方法:

整个开发过程分几部分,首先xml布局文件中,要有基本的按钮,以及其他需要的控件,并绑定对应的监听器,具体方法不再赘述。

其次,需要两个class文件,一个是SQLiteActivity.class,对应主界面的java文件,另一个是DatabaseHelper.class,一个助手类文件。

首先看这个助手类:

首先:

这个class需要继承一个SQLiteOpenHelper的方法,然后分别创建三个构造函数,其中三组构造函数的初始化赋值有所不同。

基本型包含全部的4个参数:

context,name,factory,version

Context就是activity对象;

Name就是要操作的表名;

Factury暂时传null;

Version为操作数据库的版本,是一个递增正数,若数据库有增删改的变化,需要给这个值;

只有context和name的构造函数,只用在初始化建表的时候;

包含context,name,version三个参数的构造函数,用在对表进行修改的时候;

紧接着要复写onCreate()和onUpgrade()两个方法:

onCreate()方法,包含的是建表等语句,只执行一次,使用两个参数的构造函数进行初始化。

onUpgrade()方法,在回调函数有版本号变化时执行,操作数据库的增删改操作。

以上基本的助手类就编写完成了。

下面是SQLiteActivity.class的编写:

首先要了解到,如何在命令行里操作sqlite库的文件。

在手机模拟器启动的情况下(不启动找不到),到adt工具的安装目录,找到sdk目录,进入“platform-tools”,找到adb.exe,执行adbshell,进入模拟器的linux环境,此时提示符变成“#”。

找到根目录的data文件夹,进入,再进入一层data目录,可以看到当前系统中所有开发和安装的com包文件。

当这个项目(com包中)执行过sqlite的建表文件,就会包含一个databases的目录,进入这个目录,就可以使用SQL语句直接操作表数据。

当进入了该目录后,执行sqlite3dbname,进入sql模拟状态,操作方法跟其他SQL工具一致。

.schema,查看当前库里有哪些表。

实际代码操作如下:

继承基本的activity类,然后在onCreate()方法中获取按钮等控件的使用,添加对应的点击响应,这些内容和其他控件的使用没有区别。

1下面是表的创建

在创建数据库按钮的匿名类中,复写onClick方法,回调函数,包含两个参数:

SQLiteActivity.this,就是当前的activity,后面的“”中的,是创建的表名。

只有在添加了后面getReadableDatabase()方法并执行后,才真正创建一个新表。

最后将这个操作绑定到对应的按钮点击监听器上即可。

2更新表结构

更新表结构时,回调函数使用3个参数,增加一个版本号,这样会调用那个upgrade()方法,如果里面有表结构的修改语句,则会对表结构进行修改。

3插入数据

插入数据的时候,先声明一个contentValues对象,实例化以后,向他put键值对,键名为表的字段,后面会根据字段类型自动判断传入的数据类型。

同样调用upgrade()的方法,之后使用db.insert将contentValues的值传入到这个表中,完成数据插入。

4更新数据

类似于插入数据,同样使用contentValues对象,调用getWritableDatbase方法,后面用db.update执行操作。

“id=?

”是条件语句

String[]{“1”}中,有几个“?

”条件,这里就跟几个成员。

5查询数据

查询数据,需要一个指针的方法,默认指向第一条记录的前面,使用cursor.moveToNext向下移动,类似rs.next的用法。

在cursor获取查询结果时:

“user”是表名;

“String[]{“id”,”name”}”是获取的表的字段;

“id=?

”是查询条件;

String[]{“1”}是查询条件的具体值,根据有几个条件,这里有几个成员;

最后的4个null,是查询时的几个设置,orderby、group等,具体可通过提示了解。

最后在获取具体值的时候,使用cursor得到要获取值的列的编号,但是获取编号又要使用该列的名称,因此完整的语句就是:

cursor.getString(cursor.getColumnIndex(“name”));

以上为使用sqlite进行的表结构新建、修改操作,表记录的增、改、查询操作。

如果只涉及查询,则只调用getReadableDatabase方法,如果涉及修改,则要调用getWritableDatabase方法。

Android快速开发8——文件下载

在android实现文件的下载,使用的是java的IO流,基本原理和思想与j2se、j2ee一致,以下为一个简单的样例,分为下载文本文件和任意类型文件。

本例中,包含一个xml布局文件和3个class文件,如上图,为这3个java文件,其中:

Download为对应xml的activity;

HttpDownloader为下载功能主要函数和方法;

FileUtils为封装的一些文件操作方法;

下面先看Download这个activity:

分别放置了两个按钮,一个用来下载文本文件,一个用来下载其他任意格式的文件。

在两个监听器里,分别绑定了两种方法,方法调用的参数如图中所标。

接下来是HttpDownloader.java文件,里面主要是两个监听器里绑定的方法

注意需要先声明一个URL类型的变量,以备下面使用。

以下是下载文本文件的详细代码:

本方法中,只有一个参数,就是要下载的文件的地址(包括文件名),返回的是一个文件流,使用时把这个文件流赋值给字符串变量。

以下是下载任意类型文件的代码:

这个方法用来下载任意格式的文件,比较实用,三个参数分别是:

urlStr:

被测文件的地址(包含文件名);

path:

存储到手机本地(SD卡的路径);

fileName:

保存到本地时的文件名;

返回值:

当下载出现异常失败时,返回-1,当本地指定路径已经存在该文件时,返回1,当下载成功时,返回0;

本方法中的getInputStreamFromUrl()方法,是本class文件中单独实现的一个方法,用来把从url中读取到的文件流,赋值给变量进行处理,代码如下:

以上的代码是两个下载按钮绑定的基本方法,其中包含了一些“在SD卡创建目录,创建文件,判断文件存在,写数据”的方法,封装到了另一个class文件FileUtils中。

首先声明String类型变量SDPATH,声明get方法,用构造函数给SDPATH赋值初始化,

Environment的方法可以让程序适应任意的手机环境,然后依次是4个文件操作方法:

基本代码编写完成后,因为本例中使用了网络访问和存储卡读写等操作,所以要在配置文件manifest上设置权限,才能正确使用:

至此,android的基本文件下载功能完成。

Android快速开发9——使用SAX处理XML文件

使用SAX处理XML文件,边读取边处理,本例包含3个文件:

1xml文件,2基本操作的activity,3MyContentHandler.java。

首先xml文件的内容中包含以下格式:

在activity中编写如下代码,在监听器中增加功能代码:

在onClick方法中增加上面代码:

先声明一个httpDownloader对象,然后调用文本下载的方法,将xml文件当做一个文本文件读入一个变量。

SAXParserFactory是这里的固定用法,然后用reader中的方法去处理具体的xml文件。

MyContentHandler是另一个编写的class,里面包含处理xml的具体方法。

Reader的parse方法,处理两个内部方法,InputSource和StringReader。

下面是MyContentHandler的代码:

首先以适配器模式,这个类要继承DefaultHandler类;

声明的变量用来存储xml中的每个元素。

tagName用来存储每个元素的标签名。

startDocument和endDocument用来处理开始的根节点。

startElement和endElement用例处理一级节点,本例为worker,具体代码为:

localName为不带前缀的名称(**:

),qName为带前缀的名称,attribute为标签属性(尖括号中值的部分)

首先把localName存入tagName待用,然后判断,当localName为预计的一级标签时,循环属性个数长度,把第序号个标签而定属性和值存起来。

当在结束标签中遇到worker时,结束处理,加了一个打印的方法,这个方法是在下面手写的。

具体处理标签字段中的值,由于每次已经把标签名存入tagName了,所以用if判断,当标签为指定名称时,将对应信息存入变量。

基本按格式固定用法。

最后是结束标签时打印的操作。

如此处理完先下载,后处理xml文件的操作(下载的方法参加相关部分)。

Android快速开发10——广播机制1

在程序运行时,使用广播的形式处理发送端不需要确认接收端的处理状态的情况,就像实际的广播一样,发出了信号,但接收端是否接收了,是否处理了,不在发送端的处理之中。

就好像UDP协议,只管发送数据,是否收到则不做考虑。

本例为广播机制最简单的使用,需要两个文件:

1基本界面的activity,2负责处理事件的class文件。

下面是负责处理事件的class文件,本例比较简单:

首先名称,要注意,需要放在manifest中进行注册用,用例区分多个不同的broadcast;

这个类要继承BroadcastReceiver这个类;

先声明构造函数publicTestReceiver(){写入需要的方法}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1