Android 学习开发指南.docx
《Android 学习开发指南.docx》由会员分享,可在线阅读,更多相关《Android 学习开发指南.docx(21页珍藏版)》请在冰豆网上搜索。
Android学习开发指南
Android开发
-Eclipse的工作目录
⏹打开Eclipse的时候首先弹出的对话框
⏹
⏹通过Workspace里面的路径,可以找到Eclipse项目存放之处
-Eclipse的导入项目
⏹File–>Import–>
-Eclipse的输出项目
⏹第一种
◆File->Export->
◆
⏹第二种
◆从PackageExplorer选中项目名->单击鼠标右键选择Copy->鼠标右键粘贴到其他存放之处
-Eclipse快捷键
⏹Alt+“/”自动匹配符合的关键字
-Android中.XML文件首布局属性必须有
-标签定义规范
⏹打完标签的开头,立即补上结尾
⏹布局模式必须以<布局关键字>为开头,>为结尾
◆例
⏹独立控件的可以有两种方式结尾
◆1.
◆2.
-黄色的波浪线
⏹可以运行,但android或者其他程序语言不推荐这么写代码
⏹在.java源程序中变量或者方法未使用
-红色的波浪线
⏹代码错误提示,需要更改正确
-main.xml与String.xml
⏹String.xml键值对
◆一:
国际化,只需要提供一个string.xml文件,把里面的汉字信息都修改为对应的语言(如,English),再运行程序时,android操作系统会根据用户手机的语言环境和国家来自动选择相应的string.xml文件,这时手机界面就会显示出英文。
这样做国际化非常的方便。
◆二:
为了减少应用的体积,降低数据的冗余。
假设在应用中要使用"我们一直在努力"这段文字10000次,如果在每次使用时直接写上这几个字,这样下来程序中将有70000个字,这70000个字占136KB的空间。
而由于手机的资源有限,其CPU的处理能力及内存是非常有限的,136KB对手机内存来说是个不小的空间,我们在做手机应用是一定要记住“能省内存就省内存”。
而如果将这几个字定义在string.xml中,在每次使用到的地方通过Resources类来引用该文字,只占用到了14B,因此对降低应用体积效果是非常有效地.当然我们可能在开发时可能并不会用到这么多的文字信息,但是,作为手机应用开发人员,我们一定要养成良好的编程习惯。
◆获取string.xml文件里面的值有几个不同的地方
●1.在AndroidManifest.xml与layout等xml文件里:
⏹android:
text="@string/resource_name"
●2.在activity里:
●方法一:
⏹this.getString(R.string.resource_name);
⏹方法二:
⏹getResources().getString(R.string.resource_name);
●3.在其他java文件(必须有Context或pplication)
⏹方法一:
⏹context.getString(R.string.resource_name);
⏹application.getString(R.string.resource_name);
◆下图介绍几种常见的资源XML文件
-布局模式
⏹LinearLayout线性布局
⏹Android:
orientation=””定义控件布局的方向[ˌɔ:
rienˈteiʃən]
◆Vertical[ˈvə:
tikəl]垂直方向
◆Horizontal[ˌhɔriˈzɔntəl]水平方向
layout_width=””指定控件的宽
layout_height=””指定空间的高
◆Fill_parent
◆Wrap_content
◆Match_parent
●在android2.2之后fill_parent改成match_parent
layout_weight=””权重
◆值越小优先级越大
●在layout_width设置为fill_parent的时候,layout_weight所代表的是你的控件要优先尽可能的大,但这个大是有限度的,即fill_parent
●在layout_width设置为wrap_content的时候,layout_weight所代表的是你的控件要优先尽可能的小,但这个小是有限度的,即wrap_content
⏹TableLayout表格布局
◆内容介绍
●TableLayout,表格布局采用行列形式管理UI组件,TableLayout不需要明确地声明有多少行和列,而是通过添加TableRow、其它组件来控制表格的行数、列数。
每次向TableLayout添加一个TableRow,就是在向表格添加一行,TableRow也是容器,可以向TableRow中添加组件,每添加一个组件,即是添加一列。
如果直接向TableLayout添加组件,则认为这个组件占用一行。
表格布局中列的宽度即是每一列中最宽的组件的宽度。
◆属性
●android:
collapseColumns[kəˈlæpsˈkɔləm]隐藏指定列
stretchColumns[stretʃˈkɔləm]自动伸展指定列
shrinkColumns[ʃriŋkˈkɔləm]自动收缩指定列
●
●行
⏹里面的控件数决定列数
◆控件的width默认为fill_parent,可更改
控件的height默认为wrap_content,可以更改
◆Android:
layout_colunmn=“1”将控件放在标号为1的列上,标号是从0开始的
◆Android:
layout_span表示一个控件占几列空间
◆在tableLayout里面不可以添加另外的布局模式
<控件/>
-
-1.Main.xml添加按钮控件
Android:id="@+id/btn"Android:layout_weight="fill_parent"android:layout_height="wrap_content"android:text="I’maButton."/>-2.如何从.java中获取Button的资源Buttonbtn=(Button)findViewById(R.id.btn);-3.如何在.java中添加按钮的监听事件方法一:btn.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){//Toast是Android中用来显示显示信息的一种机制,Toast没有焦点,而且Toast显示的时间有限,过一定的时间就会自动消失。Toast.makeText(Listener_DemoActivity.this,"你好!",Toast.LENGTH_SHORT);}});方法二:btn.setOnClickListener(newbtn_listener());privateclassbtn_listenerimplementsOnClickListener{@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubToast.makeText(Listener_DemoActivity.this,"你好!",Toast.LENGTH_SHORT);}}-RelativeLayout相对布局⏹一句话概括◆一个控件的布局位置,它决定于它和周围控件的关系⏹相对布局与其他布局的区别◆线性布局(LinearLayout):children排列成一行多列或者一列多行的形式,应该是应用程序中最常用的布局方式,它提供了控件水平或者垂直排列的模型,同时我们可通过设置子控件的weight布局参数控制各个控件在布局中的相对大小。◆TableLayout:children按照行列的排序,类似于html的table;模型以行列的形式管理子控件,每一行为一个TableRow的对象,也可为一个View的对象。TableRow可添加子控件,每添加一个子控件为一列。◆相对布局(RelativeLayout):children的位置是与它周围的控件相关的或者和他们的parent位置相关,参照控件可以是父控件,也可以是其他子控件,但被参照的控件必须要在参照它的控件之前定义。相对布局模型所涉及的属性设置比较多,但并不复杂。◆⏹常见属性//相对于给定ID控件android:layout_above将该控件的底部置于给定ID的控件之上;android:layout_below将该控件的底部置于给定ID的控件之下;android:layout_toLeftOf将该控件的右边缘与给定ID的控件左边缘对齐;android:layout_toRightOf将该控件的左边缘与给定ID的控件右边缘对齐;android:layout_alignBaseline将该控件的baseline与给定ID的baseline对齐;android:layout_alignTop将该控件的顶部边缘与给定ID的顶部边缘对齐;android:layout_alignBottom将该控件的底部边缘与给定ID的底部边缘对齐;android:layout_alignLeft将该控件的左边缘与给定ID的左边缘对齐;android:layout_alignRight将该控件的右边缘与给定ID的右边缘对齐;//相对于父组件android:layout_alignParentTop如果为true,将该控件的顶部与其父控件的顶部对齐;android:layout_alignParentBottom如果为true,将该控件的底部与其父控件的底部对齐;android:layout_alignParentLeft如果为true,将该控件的左部与其父控件的左部对齐;android:layout_alignParentRight如果为true,将该控件的右部与其父控件的右部对齐;//居中android:layout_centerHorizontal如果为true,将该控件的置于水平居中;android:layout_centerVertical如果为true,将该控件的置于垂直居中;android:layout_centerInParent如果为true,将该控件的置于父控件的中央;-FrameLayout单帧布局⏹ViewGroup将它的子试图元素都放在布局的左上角,并覆盖在前一子控件的上层。如果绝对布局不指定坐标位置,子试图将会类似于单帧布局那样层叠放置。-AbsoluteLayout绝对布局⏹以坐标的方式定位子控件。⏹设置元素的位置的属性是:android:layout_x=”..px(dp)”android:layout_y=”..px(dp)”-资源文件的引用⏹字符串资源的引用res/values/strings.xml中的资源引用有3中形式:在.xml中引用:@string/string_name在.java代码中应用:R.string.string_name在代码中获取图片:getResources().getString(R.string.string_name)或getResources().getText(R.string.string_name)⏹图片资源的引用res/drawable中的资源引用有3中形式:在.xml中引用:@drawable/image_name在.java代码中应用:R.drawable.image_name在代码中获取图片:getResources().getDrawable(R.string.drawable_name)或getResources().openRawResource(R.string.drawable_name)⏹颜色资源的引用res/values/colors.xml中的资源引用有3种形式:在.xml中引用:@color/color_name在.java代码中应用:R.string.color_name在代码中获取图片:getResources().getColor(R.string.color_name)⏹系统资源的引用Android平台自身提供了一些资源文件,如:字符串:android.R.String.httpErrorBadUrl或@android:string/httpErrorBadUrl颜色:android.R.darker_gray或android.graphics.Color.darker或@android:color/darker_gray图片:android.R.drawable.ic_media_pause或@android:drawable/ic_media_pause-Intent与Activity⏹Activity概述Android中的Activity主要用于构建和用户进行交互的界面应用程序。一个Android应用程序通常由多个Activity组成。Activity的主体包括两个主要部分:一个是Content(data);另外一个是响应用户交互事件的行为。在Activity中通过onCreate(Bundle)方法来初始化Activity,通过setContentView(intID)方法来设置UI布局所使用的Layout资源,通过findViewById(intID)方法来获得对应的视图资源。⏹创建ActivitySuperClassandroid.app.ActivityAlt+Shift+S重载onCreate()setContentView();⏹IntentIntent是一种运行时绑定(runtimebinding)机制,它能在程序运行的过程中连接两个不同的组件,是应用程序之间通信的信鸽。⏹如何利用Intent进行界面跳转Intentintent=newIntent();Intent.setClass(当前类名.this,将要跳转的类名.class);startActivity(intent);-类的定义修饰符class类名{成员定义;}-类的继承⏹Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。-类的接口⏹Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。--浅谈Activity的生命周期--当一个Activity01被创建的时候需要调用以下3个方法⏹Activity01的◆onCreate()当这个Activity没有调用onDestroy()方法进行销毁的时候,此方法仅会被调用一次◆onStart()◆onResume()-当向另外一个Activity02进行跳转的时候会调用以下方法⏹之前Activity01的◆onPause()⏹当前Activity02的◆onCreate()◆onStart()◆onResume()⏹之前activity01的◆onStop()-当点击Back键让Activity02返回到之前Activity01的时候会调用以下方法⏹当前Activity02的◆onPause()⏹之前Activity01的◆onRestart()◆onStart()◆onResume()⏹当前Activity02的◆onStop()◆onDestroy()-Menu菜单的创建⏹1、复写Activity的onCreateOptionsMenu(Menumenu)方法⏹2、调用menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为菜单设置图标⏹3、当菜单项()被选择时,我们可以通过覆盖Activity的onOptionsItemSeleted()方法来响应事件-点击Button,显示Menu⏹只需再监听事件里加上这句代码◆openOptionsMenu();-Menu的案例代码packagecom.example.menudemo;importandroid.os.Bundle;importandroid.os.Handler;importandroid.app.Activity;importandroid.content.Context;importandroid.util.AttributeSet;importandroid.view.InflateException;importandroid.view.LayoutInflater;importandroid.view.LayoutInflater.Factory;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.Toast;publicclassMenuActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//获取Button的资源Buttonbtn=(Button)findViewById(R.id.menubtn);//给Button绑定监听事件btn.setOnClickListener(newbtn_menuListener());}//按钮事件内容classbtn_menuListenerimplementsOnClickListener{@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstub//打开菜单openOptionsMenu();}}//复写OnCreateOptionsMenu()方法来绘制Menu@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//TODOAuto-generatedmethodstub//menu.add()里面有四个参数依次是://第一个,菜单项的组别。//第二个,菜单项的ID。是menu识别编号,供识别menu用的。很重要。//第三个,菜单项的顺序。这个参数的大小决定菜单出现的先后顺序。顺序是参数由小到大,菜单从左到右,从上到下排列。一行最多三个。//第四个,菜单项显示的文本。menu.add(0,Menu.FIRST,0,"注册").setIcon(R.drawable.ic_menu_add);menu.add(0,Menu.FIRST+1,1,"关于").setIcon(R.drawable.ic_menu_about);menu.add(0,Menu.FIRST+2,2,"退出").setIcon(R.drawable.ic_menu_quit);setMenuBackground();returntrue;}//设置menu菜单的背景protectedvoidsetMenuBackground(){getLayoutInflater().setFactory(newFactory(){@OverridepublicViewonCreateView(Stringname,Contextcontext,AttributeSetattrs){if(name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")){try{//AskourinflatertocreatetheviewLayoutInflaterf=getLayoutInflater();finalViewview=f.createView(name,null,attrs);newHandler().post(newRunnable(){publicvoidrun(){view.setBackgroundResource(R.drawable.s0_music_list_bg);}});returnview;}catch(InflateExceptione){}ca
Android:
id="@+id/btn"
layout_weight="fill_parent"
android:
layout_height="wrap_content"
text="I’maButton."
/>
-2.如何从.java中获取Button的资源
Buttonbtn=(Button)findViewById(R.id.btn);
-3.如何在.java中添加按钮的监听事件
方法一:
btn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
//Toast是Android中用来显示显示信息的一种机制,Toast没有焦点,而且Toast显示的时间有限,过一定的时间就会自动消失。
Toast.makeText(Listener_DemoActivity.this,"你好!
",Toast.LENGTH_SHORT);
}
});
方法二:
btn.setOnClickListener(newbtn_listener());
privateclassbtn_listenerimplementsOnClickListener{
//TODOAuto-generatedmethodstub
-RelativeLayout相对布局
⏹一句话概括
◆一个控件的布局位置,它决定于它和周围控件的关系
⏹相对布局与其他布局的区别
◆线性布局(LinearLayout):
children排列成一行多列或者一列多行的形式,应该是应用程序中最常用的布局方式,它提供了控件水平或者垂直排列的模型,同时我们可通过设置子控件的weight布局参数控制各个控件在布局中的相对大小。
◆TableLayout:
children按照行列的排序,类似于html的table;模型以行列的形式管理子控件,每一行为一个TableRow的对象,也可为一个View的对象。
TableRow可添加子控件,每添加一个子控件为一列。
◆相对布局(RelativeLayout):
children的位置是与它周围的控件相关的或者和他们的parent位置相关,参照控件可以是父控件,也可以是其他子控件,但被参照的控件必须要在参照它的控件之前定义。
相对布局模型所涉及的属性设置比较多,但并不复杂。
⏹常见属性
//相对于给定ID控件
layout_above将该控件的底部置于给定ID的控件之上;
layout_below将该控件的底部置于给定ID的控件之下;
layout_toLeftOf将该控件的右边缘与给定ID的控件左边缘对齐;
layout_toRightOf将该控件的左边缘与给定ID的控件右边缘对齐;
layout_alignBaseline将该控件的baseline与给定ID的baseline对齐;
layout_alignTop将该控件的顶部边缘与给定ID的顶部边缘对齐;
layout_alignBottom将该控件的底部边缘与给定ID的底部边缘对齐;
layout_alignLeft将该控件的左边缘与给定ID的左边缘对齐;
layout_alignRight将该控件的右边缘与给定ID的右边缘对齐;
//相对于父组件
layout_alignParentTop如果为true,将该控件的顶部与其父控件的顶部对齐;
layout_alignParentBottom如果为true,将该控件的底部与其父控件的底部对齐;
layout_alignParentLeft如果为true,将该控件的左部与其父控件的左部对齐;
layout_alignParentRight如果为true,将该控件的右部与其父控件的右部对齐;
//居中
layout_centerHorizontal如果为true,将该控件的置于水平居中;
layout_centerVertical如果为true,将该控件的置于垂直居中;
layout_centerInParent如果为true,将该控件的置于父控件的中央;
-FrameLayout单帧布局
⏹ViewGroup将它的子试图元素都放在布局的左上角,并覆盖在前一子控件的上层。
如果绝对布局不指定坐标位置,子试图将会类似于单帧布局那样层叠放置。
-AbsoluteLayout绝对布局
⏹以坐标的方式定位子控件。
⏹设置元素的位置的属性是:
layout_x=”..px(dp)”
layout_y=”..px(dp)”
-资源文件的引用
⏹字符串资源的引用
res/values/strings.xml中的资源引用有3中形式:
在.xml中引用:
@string/string_name
在.java代码中应用:
R.string.string_name
在代码中获取图片:
getResources().getString(R.string.string_name)
或getResources().getText(R.string.string_name)
⏹图片资源的引用
res/drawable中的资源引用有3中形式:
@drawable/image_name
R.drawable.image_name
getResources().getDrawable(R.string.drawable_name)
或getResources().openRawResource(R.string.drawable_name)
⏹颜色资源的引用
res/values/colors.xml中的资源引用有3种形式:
@color/color_name
R.string.color_name
getResources().getColor(R.string.color_name)
⏹系统资源的引用
Android平台自身提供了一些资源文件,如:
字符串:
android.R.String.httpErrorBadUrl或@android:
string/httpErrorBadUrl
颜色:
android.R.darker_gray或android.graphics.Color.darker或@android:
color/darker_gray
图片:
android.R.drawable.ic_media_pause或@android:
drawable/ic_media_pause
-Intent与Activity
⏹Activity概述
Android中的Activity主要用于构建和用户进行交互的界面应用程序。
一个Android应用程序通常由多个Activity组成。
Activity的主体包括两个主要部分:
一个是Content(data);另外一个是响应用户交互事件的行为。
在Activity中通
过onCreate(Bundle)方法来初始化Activity,通过setContentView(intID)方法来设置UI布局所使用的Layout资源,通过findViewById(intID)方法来获得对应的视图资源。
⏹创建Activity
SuperClassandroid.app.Activity
Alt+Shift+S重载onCreate()
setContentView();
⏹Intent
Intent是一种运行时绑定(runtimebinding)机制,它能在程序运行的过程中连接两个不同的组件,是应用程序之间通信的信鸽。
⏹如何利用Intent进行界面跳转
Intentintent=newIntent();
Intent.setClass(当前类名.this,将要跳转的类名.class);
startActivity(intent);
-类的定义
修饰符class类名{
成员定义;
-类的继承
⏹Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
-类的接口
⏹Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的两种含义:
一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。
前者叫做“Java接口”,后者叫做“接口”。
-浅谈Activity的生命周期
-当一个Activity01被创建的时候需要调用以下3个方法
⏹Activity01的
◆onCreate()当这个Activity没有调用onDestroy()方法进行销毁的时候,此方法仅会被调用一次
◆onStart()
◆onResume()
-当向另外一个Activity02进行跳转的时候会调用以下方法
⏹之前Activity01的
◆onPause()
⏹当前Activity02的
◆onCreate()
⏹之前activity01的
◆onStop()
-当点击Back键让Activity02返回到之前Activity01的时候会调用以下方法
◆onRestart()
◆onDestroy()
-Menu菜单的创建
⏹1、复写Activity的onCreateOptionsMenu(Menumenu)方法
⏹2、调用menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为菜单设置图标
⏹3、当菜单项()被选择时,我们可以通过覆盖Activity的onOptionsItemSeleted()方法来响应事件
-点击Button,显示Menu
⏹只需再监听事件里加上这句代码
◆openOptionsMenu();
-Menu的案例代码
packagecom.example.menudemo;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.util.AttributeSet;
importandroid.view.InflateException;
importandroid.view.LayoutInflater;
importandroid.view.LayoutInflater.Factory;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassMenuActivityextendsActivity{
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取Button的资源
Buttonbtn=(Button)findViewById(R.id.menubtn);
//给Button绑定监听事件
btn.setOnClickListener(newbtn_menuListener());
//按钮事件内容
classbtn_menuListenerimplementsOnClickListener{
//打开菜单
openOptionsMenu();
//复写OnCreateOptionsMenu()方法来绘制Menu
publicbooleanonCreateOptionsMenu(Menumenu){
//menu.add()里面有四个参数依次是:
//第一个,菜单项的组别。
//第二个,菜单项的ID。
是menu识别编号,供识别menu用的。
很重要。
//第三个,菜单项的顺序。
这个参数的大小决定菜单出现的先后顺序。
顺序是参数由小到大,菜单从左到右,从上到下排列。
一行最多三个。
//第四个,菜单项显示的文本。
menu.add(0,Menu.FIRST,0,"注册").setIcon(R.drawable.ic_menu_add);
menu.add(0,Menu.FIRST+1,1,"关于").setIcon(R.drawable.ic_menu_about);
menu.add(0,Menu.FIRST+2,2,"退出").setIcon(R.drawable.ic_menu_quit);
setMenuBackground();
returntrue;
//设置menu菜单的背景
protectedvoidsetMenuBackground(){
getLayoutInflater().setFactory(newFactory(){
publicViewonCreateView(Stringname,Contextcontext,
AttributeSetattrs){
if(name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")){
try{//Askourinflatertocreatetheview
LayoutInflaterf=getLayoutInflater();
finalViewview=f.createView(name,null,attrs);
newHandler().post(newRunnable(){
publicvoidrun(){
view.setBackgroundResource(R.drawable.s0_music_list_bg);
returnview;
}catch(InflateExceptione){
}ca
下载文档到电脑,查找使用更方便
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
copyright@ 2008-2022 冰点文档网站版权所有
经营许可证编号:鄂ICP备2022015515号-1