您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > Android---经典实例
Android---经典实例Google的AndroidSDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。SDK的下载与安装并不复杂,网上也有不少同学已经进入状态了,我就不再重复了吧。今天主要讨论的,还是永远不变的话题:HelloWorld.1.最简单的HelloWorld安装了SDK后,直接生成一个AndroidProject,一句代码不用写,就能跑出一个最简单的HelloWorld例程。我们看一下它的代码:publicvoidonCreate(Bundleicicle){super.onCreate(icicle);setTheme(android.R.style.Theme_Dark);setContentView(R.layout.main);}看上去实在很简单,只有两句话而已。关键在这个R.layout.main上,凭直觉,这应该是定义的资源。的确,在R.java中只是定义了一个staticint而已,真正的资源描述在res/layout/main.xml文件里(注意:这里的R.java不要手工编辑,每次buildproject时它都会根据res下的资源描述被自动修改)。?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=:orientation=verticalandroid:layout_width=fill_parentandroid:layout_height=fill_parentTextViewid=@+id/txt½öÓÃÓÚÆÀ¹À¡£°æȨËùÓÐ(c)byFoxitSoftwareCompany,2004ÓÉFoxitPDFEditor±à¼android:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:text=HelloWorld//LinearLayout这个文件很好读,一个描述了这是一个线性排列的布局,android:orientation=vertical表示所有组件将纵向排布。而经典的HelloWorld是用一个TextView来展示的。由此,我们知道,Android的程序从一个Activity派生出来,并且从它的onCreate开始启动;Android里要显示的组件用XML文件描述而不用在代码中硬编码(这是一个好的习惯,我们应该从一开始就坚持下去);2.让Button来说HelloWorld上面的例子是ADT自动生成的代码,似乎与我们一点关系也没有。那我们来改一下代码,因为在windows平台上的Helloworld经常是由一个按钮触发的,所以,我们想第二个Helloworld应该是这样的:加一个按钮和文本输入框,单击按钮后在原来的TextView后面加上输入框中输入的文字。第一步是,增加一个Button和一个EditText,与TextView一样,它们也在main.xml里描述一下:EditTextid=@+id/edtandroid:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:text=/Buttonid=@+id/goandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=@string/gorequestFocus//Button这里有两个地方要注意:id=@+id/go,这表示需要一个唯一的UID来作为Button的ID,它的引用名是go。还有一个是android:text=@string/go表示这个按钮的文本不是直接写有main.xml里了,而是来源于另一个资源描述文件strings.xml里,本例中的strings.xml如下:?xmlversion=1.0encoding=utf-8?resourcesstringname=app_namehelloTwo/stringstringname=tit_dialog提示/stringstringname=msg_dialog你好,中国/stringstringname=ok_dialog确定/stringstringname=go浏览/string/resources然后,在代码里(onCreate函数中)我们加上以下代码(简单起见,用了嵌套类):Buttonbtn=(Button)findViewById(R.id.go);btn.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){EditTextedt=(EditText)helloTwo.this.findViewById(R.id.edt);TextViewtxt=(TextView)helloTwo.this.findViewById(R.id.txt);txt.setText(getString(R.string.msg_dialog)+edt.getText());}});为铵钮增加一个onClick事件处理器,在点击事件中,设置txt的文本为R.string.msg_dialgo+edt.getText()。这里的关键是两个函数的使用:findViewById(R.id.go)可以根据资源的名称加载View类型的资源,同样用函数getString(R.string.msg_dialog)可以加载字符串资源。编译,run一下看看效果。3.再让菜单SayHello从API文档中我们看到Activity中有两个函数:onCreateOptionsMenu和onOptionsItemSelected,显示,这个OptionsMenu就是所谓的上下文菜单(在GPhone的模拟器上,有个键专用于弹出这个菜单)。下面我们就为这个HelloWorld例子加上一个菜单,并且让它可以Sayhello。这次,我们不涉及到资源的描述文件了,而是直接使用这两个函数来实现,其实代码也很简单,所以,我们再增加一个退出应用的功能(否则每次都是按取消键退出应用显示太不专业了)。代码如下:publicbooleanonCreateOptionsMenu(Menumenu){super.onCreateOptionsMenu(menu);menu.add(0,1,sayhello);menu.add(0,2,exit);returntrue;}publicbooleanonOptionsItemSelected(Itemitem){super.onOptionsItemSelected(item);intid=item.getId();switch(id){case1:AlertDialog.show(this,getString(R.string.app_name),getString(R.string.msg_dialog),getString(R.string.ok_dialog),true);break;case2:finish();break;}在CreateOptionsMenu时,我们简单地增加两个菜单项,menu.add(组ID,项ID,显示文本),(注意:这里我直接将文字写在代码里,这并不提倡)。然后,在OptionsItemSelected事件中,我们根据选中的菜单项做相应处理,如果选中1,则弹出一个对话框显示资源文件中的“你好,中国”,如果选中2则退出应用。AlertDialog.show是一个静态方法,类似于我们在WIN平台上经常使用的MessageBox一样,很方便的。来源:学习笔记(2)-初识Activity根据文档的解释,Activity是Android开发中非常重要的一个基础类。我把它想像成J2ME中的Display类,或者是Win32平台上的Form类,也许不准确,但是它的重要性我觉得应该是一样的(当然,如果我们写的是一个没有界面的应用,例如后台运行的服务之类的,可以不用Display的)。1.在一个Activity中使用多个View如果把Activity看作MVC中的Control?它负责管理UI和接受事件(包括用户的输入),虽然说一个Activity通常对应一个屏幕,但事实上,我们是可以只用一个Activity管理多个不同的View来实现简单的逻辑。首先,我们增加一个新的资源描述layout/second.xml。?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=:orientation=verticalandroid:layout_width=fill_parentandroid:layout_height=fill_parentTextViewid=@+id/txtandroid:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:text=Hello中国/Buttonid=@+id/go2android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=backrequestFocus//Button/LinearLayout除了一个“Hello中国”以外,增加一个按钮可以返回前一个界面。然后,在代码中我们要为helloTwo增加两个方法,setViewOneCommand和setViewTwoCommand,分别处理一下在不同界面时,从资源里加载组件并为组件绑定一个事件处理器。publicvoidsetViewOneCommand(){Buttonbtn=(Button)findViewById(R.id.go);btn.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){helloTwo.this.setContentView(R.layout.second);helloTwo.this.setViewTwoCommand();}});ButtonbtnExit=(Button)findViewById(R.id.exit);btnExit.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){helloTwo.this.finish();}});}publicvoidsetViewTwoCommand(){ButtonbtnBack=(Button)findViewById(R.id.go2);btnBack.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){helloTwo.this.setContentView(R.layout.main);helloTwo.this.setViewOneCommand();}});}最后,我们需要在onCreate的时候,也就是启动后的main界面上设置一下按钮事件处理器。新的on
本文标题:Android---经典实例
链接地址:https://www.777doc.com/doc-4890668 .html