Android 中级教程及应用实例 csdn--魏祝林.docx_第1页
Android 中级教程及应用实例 csdn--魏祝林.docx_第2页
Android 中级教程及应用实例 csdn--魏祝林.docx_第3页
Android 中级教程及应用实例 csdn--魏祝林.docx_第4页
Android 中级教程及应用实例 csdn--魏祝林.docx_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android中级教程(一)之-手机页面的转换setContentView的应用 分类: Android中级教程 2009-11-14 21:14 16234人阅读 评论(14) 收藏 举报 android手机layoutbuttonencodingbt 大家好,我们这一节讲的是手机页面的转换setContentView 的应用.在网页的世界里,想要在两个页面间的转换,只要利用超链接就可以实现,但是在手机的世界里,要如何实现手机页面的转换呢? 最简单的方法就是改变Activity 的Layout ! 在这个例子中,将布局两个Layout ,分别为Layout1(main.xml) 和Layout2(mylayout.xml), 默认的Layout 为main.xml, 我们在Layout1 当中创建一个按钮,当单击按钮时,显示第二个Layout(mylayout.xml) ;同样地,在Layout2 里也设计一个按钮,当单击第二个Layout 的按钮之后,刚显示回原来的Layout1 ,现在就来示范如何在两个页面之间互相切换.首先看一下效果图(为了区别两个Layout ,我们分别设置了不同的背景色): 下面是我们本程序所涉及的相关代码,首先是主界面布局main.xml 其次我们在main.xml 同一目录新建一个为mylayout.xml 文件,代码如下: 最后是我们的核心程序setContentViewDemo.java package com.android.setContentViewDemo;import android.app.Activity;import android.os.Bundle;import android.view.View; import android.widget.Button; public class setContentViewDemo extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); / 载入main.xml Layout setContentView(R.layout.main); / 以findViewById()取得Button对象并添加事件onClickLisener Button bt1 = (Button) findViewById(R.id.bt1); bt1.setOnClickListener(new Button.OnClickListener() public void onClick(View v) goToLayout2(); ); / 将layout由main.xml切换成mylayout.xml public void goToLayout2() / 将layout改成mylayout setContentView(R.layout.mylayout); Button b2 = (Button) findViewById(R.id.bt2); b2.setOnClickListener(new Button.OnClickListener() public void onClick(View v) goToLayout1(); ); / 将layout由mylayout.xml切换成main.xml public void goToLayout1() setContentView(R.layout.main); Button bt1 = (Button) findViewById(R.id.bt1); bt1.setOnClickListener(new Button.OnClickListener() public void onClick(View v) goToLayout2(); ); Android中级教程(二)之调用另一个Activity-Intent对象的使用! 分类: Android中级教程 2009-11-16 22:23 8707人阅读 评论(16) 收藏 举报 androidlayoutencodingbuttonbtclass前一个教程介绍了如何运用切换Layout 的方式进行手机页面间的转换,如果要转换的页面不只是背景,颜色或文字内容的不同,而是Activity 的置换,那,那就不是单单改变Layout 就能完成的,尤其是需要传递的变量不像网页可以通过Cookie 或Session ,在程序里要移交主动权到另外一个Activity ,光靠先前技巧是办不到的而下面我们要讲的Intent 对象就是为解决这问题而生的,Intent 就如同其英文字义,是想要或意图,之意,在主Activity 当中,告诉程序自己是什么,并想要前往哪里,这就是Intent 对象所处理的事了,本例子和前一个例子我们将实现同一个效果看一下效果图: 下面是所涉及的代码:首先是布局main.xml 及mylayout.xml main.xml: mylayout.xml 然后是控制程序IntentDemo.java 及IntentDemo1.java 代码:IntentDemo.java: package com.android.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button; public class IntentDemo extends Activity private Button bt1; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); bt1 = (Button)findViewById(R.id.bt1); bt1.setOnClickListener(new Button.OnClickListener() public void onClick(View v) /new 一个Intent对象,并指定要启动的Class Intent intent = new Intent(); intent.setClass(IntentDemo.this, IntentDemo1.class); /调用一个新的Activity startActivity(intent); /关闭原本的Activity IntentDemo.this.finish(); ); 在IntentDemo.java 同一目录内新建一个IntentDemo1.java 类IntentDemo1.java: package com.android.test;import android.app.Activity;import android.content.Intent; import android.os.Bundle;import android.view.View; import android.widget.Button; public class IntentDemo1 extends Activity private Button bt2; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); / 载入mylayout.xml setContentView(R.layout.mylayout); bt2 = (Button) findViewById(R.id.bt2); bt2.setOnClickListener(new Button.OnClickListener() public void onClick(View v) / new 一个Intent对象,并指定要启动的Class Intent intent = new Intent(); intent.setClass(IntentDemo1.this, IntentDemo.class); / 调用一个新的Activity startActivity(intent); / 关闭原本的Activity IntentDemo1.this.finish(); ); 最后是本例子的重点,添加另外一个Activity 所以必须在AndroidManifest.xml 中定义一个新的activty ,并给予名称name ,或则程序无法编译运行新手很容易遇到这个问题 本例子所涉及的的全部代码已经全部贴出,最后执行之,将达到上述效果!本节到此结束Android中级教程(三)之不同Activity之间的数据传递-Bundle对象的使用! 分类: Android中级教程 2009-11-17 21:28 8090人阅读 评论(12) 收藏 举报 androidlayoutradiobuttonencodingbuttonstring在上一节例子中,介绍了如何在Activity 中调用另一个Activity ,但若需要在调用 另外一个Activity 的同时传递数据,那么就需要利用Android.os.Bundle 对象封装数据的能力,将欲传递的数据或参数通过Bundle 来传递不同Intent 之间的数据.本范例将设计一个简单的个人信息表单,有姓名(EditText )和性别(RadioButton )还有一个提交按钮(Button ),当点击提交按钮时,另外一个页面将显示个人信息.首先我们看一下效果图: 下面是我们所涉及有变动的代码:首先是主页面布局main.xml 和第二个页面的布局mylayout.xml main.xml 这里我们用了AbsoluteLayout布局大家 要注意哦 在main.xml 同一目录下建另外一个页面布局mylayou.xml 下面是程序的核心代码BundleDemo.java 和BundleDemo1.java BundleDemo.java: package com.android.test;import android.app.Activity;import android.content.Intent; import android.os.Bundle;import android.view.View; import android.widget.Button;import android.widget.EditText;import android.widget.RadioButton; public class BundleDemo extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /以findViewById()取得Button对象,并添加响应 Button bt1 = (Button)findViewById(R.id.bt1); bt1.setOnClickListener(new Button.OnClickListener() public void onClick(View v) /取得name EditText et = (EditText)findViewById(R.id.ed1); String name = et.getText().toString(); /取得Gender String sex=; RadioButton rb1 = (RadioButton)findViewById(R.id.rb1); if(rb1.isChecked() sex=man; else sex=woman; /new一个Intent对象,用法上节已经讲过了 Intent intent = new Intent(); intent.setClass(BundleDemo.this, BundleDemo1.class); /new一个Bundle对象,并将要传递的数据导入,这里是重点Map结构哦 Bundle bundle = new Bundle(); bundle.putString(name,name); bundle.putString(sex, sex); /将Bundle对象assign给Intent intent.putExtras(bundle); /调用Activity BundleDemo1 startActivity(intent); ); 在BundleDemo.java 同一目录建立BundleDemo1.java :package com.android.test;import android.app.Activity;import android.os.Bundle;import android.widget.TextView; public class BundleDemo1 extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.mylayout); /取得Intent中的Bundle对象 Bundle bundle = this.getIntent().getExtras(); /取得Bundle对象中的数据 String name = bundle.getString(name); String sex = bundle.getString(sex); /设置输出文字 TextView mytv = (TextView)findViewById(R.id.mytv); mytv.setText(you name is: + name + /n you gender is:+sex); 最后我们还是要在AndroidManifest.xml 中加入BundleDemo1 这个Activity ,一定要加,不然后果自负呵呵 执行之,将达到上述效果今天到此结束,谢谢大家!Android中级教程之-Android应用程序的生命周期(一定要理解,面试会问的哦!) 分类: Android中级教程 2009-12-06 21:11 8500人阅读 评论(22) 收藏 举报 android面试service活动文档工作Android的应用程序的生命周期,我相信这在以后的Android面试一定是经常考的题目,所以大家一点要重视哦!下面我将图文双线程,希望对大家有一点帮助!首先我们看一下Android应用程序的生命周期图: 在大部份情况下,每个Android应用都将运行在自己的Linux进程当中。当这个应用的某些代码需要执行时,进程就会被创建,并且将保持运行,直到该进程不再需要,而系统需要释放它所占用的内存,为其他应用所用时,才停止。 Android一个重要并且特殊的特性就是,一个应用的进程的生命周期不是由应用自身直接控制的,而是由系统,根据运行中的应用的一些特征来决定的,包括:这些应用对用户的重要性、系统的全部可用内存。 对于应用开发者来说,理解不同的应用组件(特别是Activity、Service、Intent Receiver)对应用进程的生命周期的影响,这是非常重要的。如果没有正确地使用这些组件,将会导致当应用正在处理重要的工作时,进程却被系统消毁的后果。 对于进程生命周期,一个普遍的错误就是:当一个Intent Receiver在它的onReceiveIntent()方法中,接收到一个intent后,就会从这个方法中返回。而一旦从这个方法返回后,系统将会认为这个Intent Receiver不再处于活动状态了,也就会认为它的宿主进程不需要了(除非宿主进程中还存在其它的应用组件)。从而,系统随时都会消毁这个进程,收回内存,并中止其中还在运行的子线程。问题的解决办法就是,在IntentReceiver中,启动一个Service,这样系统就会知道在这个进程中,还有活动的工作正在执行。 为了决定在内存不足情况下消毁哪个进程,Android会根据这些进程内运行的组件及这些组件的状态,把这些进程划分出一个“重要性层次”。这个层次按顺序如下: 1、前端进程是拥有一个显示在屏幕最前端并与使用者做交互的Activity(它的onResume已被调用)的进程,也可能是一个拥有正在运行的IntentReceiver(它的onReceiveIntent()方法正在运行)的进程。在系统中,这种进程是很少的,只有当内存低到不足于支持这些进程的继续运行,才会将这些进程消毁。通常这时候,设备已经达到了需要进行内存整理的状态,为了保障用户界面不停止响应,只能消毁这些进程; 2、可视进程是拥有一个用户在屏幕上可见的,但并没有在前端显示的Activity(它的onPause已被调用)的进程。例如:一个以对话框显示的前端activity在屏幕上显示,而它后面的上一级activity仍然是可见的。这样的进程是非常重要的,一般不会被消毁,除非为了保障所有的前端进程正常运行,才会被消毁。 3、服务进程是拥有一个由startService()方法启动的Service的进程。尽管这些进程对于使用者是不可见的,但他们做的通常是使用者所关注的事情(如后台MP3播放器或后台上传下载数据的网络服务)。因此,除非为了保障前端进程和可视进程的正常运行,系统才会消毁这种进程。 4、后台进程是拥有一个用户不可见的Activity(onStop()方法已经被调用)的进程。这些进程不直接影响用户的体验。如果这些进程正确地完成了自己的生命周期(详细参考Activity类),系统会为了以上三种类型进程,而随时消毁这种进程以释放内存。通常会有很多这样的进程在运行着,因些这些进程会被保存在一个LRU列表中,以保证在内存不足时,用户最后看到的进程将在最后才被消毁。 5、空进程是那些不拥有任何活动的应用组件的进程。保留这些进程的唯一理由是,做为一个缓存,在它所属的应用的组件下一次需要时,缩短启动的时间。同样的,为了在这些缓存的空进程和底层的核心缓存之间平衡系统资源,系统会经常消毁这些空进程。 当要对一个进程进行分类时,系统会选择在这个进程中所有活动的组件中重要等级最高的那个做为依据。可以参考Activity、Service、IntentReceiver文档,了解这些组件如何影响进程整个生命周期的更多细节。这些类的文档都对他们如何影响他们所属的应用的整个生命周期,做了详细的描述。Intent在Android中的几种用法 分类: Android中级教程 2009-12-09 21:29 7227人阅读 评论(8) 收藏 举报 androidemailsmsapplicationstringaction转自东方尚智沈大海csdn博客: 如果是从BroadcastReceiver 启动一个新的Activity ,不要忘记i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); public class MyReceiver extends BroadcastReceiver public static final String action=acc;public void onReceive(Context context, Intent intent) Intent i=new Intent(context,Receivered.class);i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i); 1. 指定act ion 和type / SIM import Intent importIntent = new Intent(Intent.ACTION_VIEW); importIntent.setType(vnd.android.cursor.item/sim-contact); importIntent.setClassName(com.android.phone, com.android.phone.SimContacts); menu.add(0, 0, 0, R.string.importFromSim) .setIcon(R.drawable.ic_menu_import_contact) .setIntent(importIntent); 2. 指定act ion, da ta和type (1)隐式查找type示例代码:uri: content:/simcontacts/simPeople/(id)intent = new Intent(ent.action.SIMEDIT,uri); startActivity(intent);程序会很据data中的uri去查找匹配的type(必须的) provider中的getType() case SIM_PEOPLE_ID: return vnd.android.cursor.item/sim-contact; 配置文件中的filter设定 AndroidManifest.xml 也可以自己设定type,但只能使用 setDataAndType() 3. 其他设定intent的属性方式 Intent setComponent(ComponentName component) Intent setClassName(Context packageContext, String className) Intent setClassName(String packageName, String className) Intent setClass(Context packageContext, Class cls)Intent 应该算是Android中特有的东西。你可以在Intent中指定程序 要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料 。都指定好后,只要调用startActivity(),Android系统 会自动寻找最符合你指定要求的应用 程序,并执行该程序。下面列出几种Intent 的用法显示网页: 1. Uri uri = Uri.parse(); 2. Intent it= new Intent(Intent.ACTION_VIEW,uri); 3. startActivity(it); 显示地图: 1. Uri uri = Uri.parse(geo:38.899533,-77.036476); 2. Intent it = new Intent(Intent.Action_VIEW,uri); 3. startActivity(it); 路径规划: 1. Uri uri = Uri.parse(/maps?f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en); 2. Intent it = new Intent(Intent.ACTION_VIEW,URI); 3. startActivity(it); 拨打电话:调用拨号程序 1. Uri uri = Uri.parse(tel:xxxxxx); 2. Intent it = new Intent(Intent.ACTION_DIAL, uri); 3. startActivity(it); 1. Uri uri = Uri.parse(tel.xxxxxx); 2. Intent it =new Intent(Intent.ACTION_CALL,ur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论