上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
Activity还提供了一个startActivityForResult(Intent intent,int requestCode)方法来启动其他Activity。该方法用于启动指定Activity,而且期望获取指定Activity返回的结果。这种请求对于实际应用也是很常见的,例如应用程序第一个界面需要用户进行选择一旦需要选择的列表数据比较复杂,必须启动另一个Activity让用户选择。当用户在第二个Activity选择完成后,程序返回第一个Activity,第一个Activity必须能获取并显示用户在第二个Activity选择的结果。在这种应用场景下,也是通过Bundle进行数据交换... Read More
posted @ 2013-11-12 20:52 TealerProg Views(669) Comments(0) Diggs(0) Edit
当一个Activity启动另一个Activity时,常常会有一些数据需要传过去——这就像Web应用从一个Servlet跳到另一个Serlvet时,Web应用习惯把需要交换的数据放入requestScope、sessionScope中。对于Activity而言,在Activity之间进行数据交换更简单;因为两个Activity之间本来就有一个“信使”:Intent,因此我们主要将需要交换的数据放入Intent即可。 Intent提供了多个重载的方法来“携带”额外的数据,如下所示:putExtras(Bundle data):向Intent中放入需要“携带”的数据包。Bundle getExt.. Read More
posted @ 2013-11-12 17:10 TealerProg Views(784) Comments(0) Diggs(0) Edit
一个Android应用通常都会包含多个Activity,但只有一个Activity会作为程序的入口——当该Android应用运行时将会自启动并执行该Activity。至于应用中的其他Activity,通常都由入口Activity启动,或由入口Activity启动的Activity启动。 Activity启动其他Activity有如下两个方法。startActivity(Intent intent):启动其他Activity。startActivityForResult(Intent intent,int requestCode):以指定指定的请求码(requestCode)启动Activit. Read More
posted @ 2013-11-12 14:39 TealerProg Views(558) Comments(0) Diggs(0) Edit
Activity是Android应用中最重要、最常见的应用组件(此处的组件是粗粒度的系统组成部分,并非指界面控件:widget)。Android应用的一个重要组成部分就是开发Activity,下 面将会详细介绍Activity开发、配置的相关知识。 Activity 与开发Web应用时建立Servlet类相似,建立自己的Activity也需要继承Activity基类,当然,在不同应用场景下,有时也要求继承Activity的子类。例如如果应用程序界面只包括列表,则可以让应用程序继承ListActivity;如果应用程序界面需要实现标签页效果,则可以让应用程序继承TabActivity。... Read More
posted @ 2013-11-11 19:11 TealerProg Views(1282) Comments(0) Diggs(0) Edit
前面已经介绍过,Android的UI线程主要负责处理用户的按键事件、用户触屏事件及屏幕绘图事件等,因此开发者的其他操作不应该、也不能阻塞UI线程,否则UI界面将会变得停止响应——用户感觉非常糟糕。 为了避免UI线程失去响应的问题,Android建议将耗时操作放在信息新线程中完成,但新线程也可能需要动态更新UI组件:比如需要从网上获取一个网页,然后在TextView中将其源代码显示出来,此时就应该将连接网络、获取网络数据的操作放在新线程中完成。问题是:获取网络数据之后,新线程不允许直接更新UI组件。 为了解决新线程不能更新UI组件的问题,Android提供了如下几种解决方案。使用Handler实 Read More
posted @ 2013-11-06 16:26 TealerProg Views(593) Comments(0) Diggs(0) Edit
为了更好地理解Handler的工作原理,先介绍一下与Handler一起工作的几个组件。Message:Handler接收和处理的消息对象。Looper:每个线程只能拥有一个Looper。它的loop方法负责读取MessageQueue中的消息,读取到消息之后就把消息交给发送该消息的Handler进行处理。MessageQueue:消息队列,它采用先进先出的方式来管理Message。程序创建Looper对象时会在它的构造器中创建MessageQueue对象。Looper提供的构造器源代码如下: private Looper(boolean quitAllowed) { ... Read More
posted @ 2013-11-05 21:27 TealerProg Views(672) Comments(0) Diggs(0) Edit
Handler类的主要作用有两个:在新启动的线程中发送消息。在主线程中获取、处理消息。 上面的说法很简单,只要分成两步即可:在新启动的线程中发送消息;然后在主线程上获取、并处理消息。但这个过程涉及一个问题:新启动的线程何时发送消息呢?主线程何时去获取并处理消息呢?这个时机显然不好控制。 为了让主程序能“适时”地处理新启动的线程所发送的消息,显然只能通过回调的方式来实现——开发者只要重写Handler类中处理消息的方法,当新启动的线程发送消息时,消息会发送到与之关联的MessageQueue,而Handler会不断地从MessageQueue中获取并处理消息——这将导致Handler类... Read More
posted @ 2013-11-05 20:57 TealerProg Views(375) Comments(0) Diggs(0) Edit
如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged(Configuration newConfig)方法,该方法是一个基于回调的事件处理方法;当系统设置发生改变时,该方法会被自动触发。 为了在程序中动态地更改系统设置,我们可调用Activity的setRequestedOrientation(int)方法来修改屏幕方向。 实例:监听屏幕方向改变 该实例的界面布局很简单,该界面中仅包含一个普通按钮。其界面布局文件如下:该程序的Java代码主要会调用Activity的setRequestedOrientation(int)... Read More
posted @ 2013-11-05 20:12 TealerProg Views(1015) Comments(0) Diggs(0) Edit
Configuration类专门用于描述手机设备上的配置信息,这些配置信息既包括用户特定的配置项,也包括系统的动态设置配置。程序可调用Activity的如下方法来获取系统的Configuration对象:Configuration cfg=getResources().getConfiguration(); 一旦获得了系统的Configuration对象,该对象提供了如下常用属性来获取系统的配置信息。public float fontScale:获取当前用户设置的字体的缩放因子。public int keyboard:获取当前设备所关联的键盘类型。该属性可能返回如下值:KEYBOARD_NO. Read More
posted @ 2013-11-05 16:46 TealerProg Views(467) Comments(0) Diggs(0) Edit
对于Android提供的事件处理模型,不难发现基于监听的事件处理模型具有更大的优势:基于监听的事件模型分工更加明确,事件源、事件监听有两个类分开实现,因此具有更好的维护性。Android的事件处理机制保证基于基于监听的事件监听器会被优先触发。实例:通过回调实现跟随手指的小球 在某些特定情况下,基于回调的事件处理机制会更好地提高程序的内聚性,例如上一章的实例;跟随手指的小球,如果改为基于回调的实现,可以更好的提高程序的内聚性。 例如将该实例中的DrawView类改为如下形式。package com.example.studyevent;import java.text.AttributedCha Read More
posted @ 2013-11-05 14:29 TealerProg Views(1342) Comments(0) Diggs(0) Edit
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页