android 应用.docx
《android 应用.docx》由会员分享,可在线阅读,更多相关《android 应用.docx(51页珍藏版)》请在冰豆网上搜索。
![android 应用.docx](https://file1.bdocx.com/fileroot1/2023-1/31/19c1f69c-5e3a-40f2-b3a8-cde04e5565c2/19c1f69c-5e3a-40f2-b3a8-cde04e5565c21.gif)
android应用
Android手机项目实训暑期高级研修班
笔记
版本1.0
制作:
何福贵
修改:
张伟
日期:
2010-7-12
目录
一、文件要求:
3
二、androidsdk的配置4
三、android虚拟机的建立6
四、项目的添加8
五、新建demo实例14
六、开始编程15
七、做adk的关联18
八、添加list控件24
九、异常处理25
十、多界面的修改27
十一、网上下载的源代码的编译28
十二、页面的跳转29
十三、系统debug30
十四、layout布局32
十五、布局管理器34
十六、打开另外一个窗口及事件处理36
十九、添加新界面的流程39
二十、信息的传递与接收41
二十一、程序的整体分析43
二十二、java线程48
二十三、列表消息的处理49
二十四、模拟器管理50
二十五、activity的生命周期51
一、文件要求:
1、jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
2、android-sdk-windows-1.6_r1
3、eclipse_android_win7
共计825M。
二、androidsdk的配置
三、android虚拟机的建立
注意:
Name不能使用中文文件名。
四、项目的添加
注意:
Name可以使用中文名
注意:
如果出现错误,请先clear一下。
五、新建demo实例
很多类库都是从这里找到的。
六、开始编程
源代码存放在src目录下
Res存放的是资源,Layout存放的布局,R.layout.代表资源的大类;values存放的是相应的值。
七、做adk的关联
按ctrl+单击,出现类的说明及实例
类的文件名为Activety.class
注意:
Android严格区分大小写。
Ctrl+Shift+o自动导入库
packagecom.test;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
publicclassmainextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
finalstaticintMENU_ITEM_ABOUT=1;
finalstaticintMENU_ITEM_EXIT=2;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
menu.add(1,MENU_ITEM_ABOUT,1,"关于").setIcon(R.drawable.logo120dpi);
menu.add(1,MENU_ITEM_EXIT,1,"退出").setIcon(R.drawable.logo120dpi);
returnsuper.onCreateOptionsMenu(menu);
}
}
增加菜单:
八、添加list控件
publicclassmainextendsListActivity{
/**Calledwhentheactivityisfirstcreated.*/
finalstaticintMENU_ITEM_ABOUT=1;
finalstaticintMENU_ITEM_EXIT=2;
privateString[]mStrings={"玉树天气","地震咨询"};
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
setListAdapter(newArrayAdapter(this,
android.R.layout.simple_list_item_1,mStrings));
getListView().setTextFilterEnabled(true);
}
九、异常处理
注意:
找红色的地方,仔细查看会有提示出错的行数,具体见十三章。
快速注释:
Ctrl+shift+/
十、多界面的修改
1、新建一个类
2、修改AndroidManifest.xml
xmlversion="1.0"encoding="utf-8"?
>
android="
package="com.text.vi"
android:
versionCode="1"
android:
versionName="1.0">
icon="@drawable/icon"android:
label="@string/app_name">
name=".mailview"
android:
label="@string/app_name">
name=".NewsListView"
android:
label="@string/app_name">
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>
minSdkVersion="4"/>
注意:
android.intent.action.MAIN
程序入口函数
android.intent.category.LAUNCHER
生成桌面图标
十一、网上下载的源代码的编译
1、右键删除下面的R.java,必须把src下面的R.java删除,否则删除gen下面的无效
2、重新建立工程,注意虚拟机要选择同一个版本号,重新构建R.java
十二、页面的跳转
Intent的使用,比较关键。
protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
Log.v("========",mStrings[position]);
if(position==1){
Intentintent=newIntent(
this,
NewsListView.class
);
this.startActivity(intent);
}
}
十三、系统debug
右键可以调出显示行号
系统有数据未出始化,导致出错。
十四、layout布局
1、拖控件到layout,找属性,添加内容。
2、在AndroidManifest.xml中增加相应的类的定义
name=".about"
android:
label="@string/app_name">
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>
3、在入口处调用
publicclassaboutextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
}
}
4、第三方界面工具
DroidDraw是一个基于JavaSwing的Android界面设计器,我们可以通过它来生成复杂的AndroidLayoutXML文件,据作者介绍,Android的Layout和SwingLayout中有很好的对应,设计器的代码编写起来还是比较容易的。
属性设置,如果改为数字,可以自动跳到拨号处
十五、布局管理器
布局文件位置
大布局套小布局,可以水平和垂直排列。
布局管理器
系统
十六、打开另外一个窗口及事件处理
1启动另外一个窗口,其中AboutView为JAVA文件
caseMENU_ITEM_ABOUT:
Intentintent=newIntent(this,AboutView.class);
this.startActivity(intent);
break;
2事件处理
//获得界面的Button
Buttonbutton=(Button)this.findViewById(R.id.Button01);
//获得界面的Button的事件相应
button.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
finish();
}
});
name=".NewDetailView"
android:
label="@string/app_name">
对应代码
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(keyCode==event.KEYCODE_BACK)
{
excute();
}
returnfalse;
}
十九、添加新界面的流程
1、添加class类,加入源代码
publicclassnewdetailextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
}
}
2、添加layout布局
3、添加AndroidManifest.xml
二十、信息的传递与接收
1、新建一个Bundle类,构造并发送数据。
2、接收数据并显示数据
//TextView01=(TextView)findViewById(R.id.TextView01);
TextViewtextView=(TextView)this.findViewById(R.id.TextView01);
Bundledata=this.getIntent().getExtras();
intitem=data.getInt("Item");
Stringtitle=data.getString("title");
this.setTitle(title);
//TextView01.setText(mStrings[1]);
textView.setText(mStrings[item]);
二十一、程序的整体分析
1、系统分析
共四个页面,一个主页面,一个关于页面,一个信息列表页面,一个详细信息页面。
页面的主程序的启动
publicclassmailviewextendsListActivity{
/**Calledwhentheactivityisfirstcreated.*/
finalstaticintMENU_ITEM_ABOUT=1;
finalstaticintMENU_ITEM_EXIT=2;
privateString[]mStrings;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
mStrings=this.getResources().getStringArray(R.array.mStrings);
setListAdapter(newArrayAdapter(this,
android.R.layout.simple_list_item_1,mStrings));
getListView().setTextFilterEnabled(true);
}
AndroidManifest.xml
icon="@drawable/icon"android:
label="@string/app_name">
name=".mailview"
android:
label="@string/app_name">
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>
2、Active各页面的调用
About页面的调用
caseMENU_ITEM_ABOUT:
Intentintent=newIntent(
this,
about.class
);
this.startActivity(intent);
break;
新闻列表页面的调用
protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
Log.v("========",mStrings[position]);
//if(position==1){
Intentintent=newIntent(
this,
NewsListView.class
);
this.startActivity(intent);
//}
}
详细信息页面的调用
protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
//Log.v("========",mStrings[position]);
Intentintent=newIntent(
this,
newdetail.class
);
3、新闻列表页的处理及信息的传递
protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
//Log.v("========",mStrings[position]);
Intentintent=newIntent(
this,
newdetail.class
);
Bundledata=newBundle();
data.putInt("Item",position);
data.putString("title",mStrings[position]);
intent.putExtras(data);
this.startActivity(intent);
}
4、菜单的处理
首页菜单的调用
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
menu.add(1,MENU_ITEM_ABOUT,1,R.string.about).setIcon(R.drawable.smlnpatch240dpi);
menu.add(1,MENU_ITEM_EXIT,2,R.string.exit).setIcon(R.drawable.app_sample_code);
returnsuper.onCreateOptionsMenu(menu);
}
菜单的处理
publicbooleanonOptionsItemSelected(MenuItemitem){
switch(item.getItemId())
{
caseMENU_ITEM_ABOUT:
Intentintent=newIntent(
this,
about.class
);
this.startActivity(intent);
break;
caseMENU_ITEM_EXIT:
this.finish();
System.exit(0);
break;
}
returnsuper.onOptionsItemSelected(item);
}
5、系统按键的调用
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(keyCode==event.KEYCODE_BACK){
exceteExit();
}
returnfalse;
}
按键及对话框确定与取消的处理
protectedvoidexceteExit(){
newAlertDialog.Builder(mailview.this)
.setIcon(R.drawable.icon)
.setTitle(R.string.hello)
.setPositiveButton(R.string.ok,newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,intwhichButton){
/*UserclickedOKsodosomestuff*/
finish();
}
})
.setNegativeButton(R.string.cancel,newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,intwhichButton){
/*UserclickedCancelsodosomestuff*/
}
})
.show();
}
7、详细列表页的处理
信息的接收与显示
publicclassnewdetailextendsActivity{
privateString[]mStrings={"对不起,您只在注册时间起1小时后才有发帖权限,请返回","本人经过精心筛选的android开发必备教程,堪称最专业android开发书籍,和大家分享222222222","本人经过精心筛选的android开发必备教程,堪称最专业android开发书籍,和大家分享3333333333333"};
TextViewtextView;
finalstaticintMENU_ITEM_PREV=1;
finalstaticintMENU_ITEM_NEXT=2;
intitem;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
//TextView01=(TextView)findViewById(R.id.TextView01);
textView=(TextView)this.findViewById(R.id.TextView01);
Bundledata=this.getIntent().getExtras();
item=data.getInt("Item");
Stringtitle=data.getString("title");
this.setTitle(title);
//TextView01.setText(mStrings[1]);
textView.setText(mStrings[item]);
textView.setTextColor(0xffff0000);
8、其它信息
Ctrl+shift+o
自动导入库
Tab+shift
缩短空格
this.finish();
System.exit(0);
页面的退出
Res资源中的文件不能以数字开头
Layout中的文件夹名不能为以大写
批量添加注释ctrl+/
Orietation是设置垂直布局
包实际就是文件夹
二十二、java线程
publicclasslogoextendsActivity
impl