`
bk_lin
  • 浏览: 336509 次
社区版块
存档分类
最新评论

Android开发从入门到精通(7) _6

阅读更多

 

修改AndroidPhoneDialer 第七章(6)

   本节展示如何通过修改AndroidPhoneDialer来增加一些特性,使得它更加的具有实际价值。到本节结束时,你不仅仅对使用intent的得心应手,而且还会使用EditTexts和Buttons。

警告

如果你没有跟从上一节的项目,回去并创建那个活动。本节的教程假定你已经完成了从上个项目的可以自行支配的编码工作。

增加一个按钮

    本节向你展示如何修改你的项目来包含一个按钮。当活动被启动,替代启动Intent的将会是一个按钮。除了文本,按钮是应用程序里最常用的对象。按钮组织用户和程序之间的交互作用。在Android里学会如何创建并利用按钮是必要的,如果要创建一个友好的活动。

    你将要在main.xml里创建按钮了。回想一下第五章,你为Hello World!活动创建了TextView。TextView有一个清晰的结构,就像这样:

注意

记住,当你在main.xml里创建一个View时,你只是告诉Android,你想让这个View看上去是什么样的。你仍旧需要在AndroidPhoneDialer.java内把功能赋值给它。

<View android:id=<id> 
android:layout_width=<width> 
android:layout_height=<height> 
>

这个格式对于所有的views都有用,并且Button也不例外。你需要为你的Button设定的XML属性是 android:id, android:layout_width, 
android:layout_height,和 android:text。这4个XML属性充分的描述了按钮,那样你就可以在活动中使用它了。

1、赋值你的按钮的ID到 callButton:

android:id="@+id/callButton"

2、独自设置 layout_width 和 layout_height 到 fill_parent 和 wrap_content。

android:layout_width="fill_parent" 
android:layout_height="wrap_content"

3、设置按钮的文本为“Show Dialer”,这个是一个清晰的描述来告知按钮的作用:

android:text="Show Dialer" 
The full XML for the Button, with attributes, looks like this: 
<Button android:id="@+id/callButton" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Show Dialer" />


现在看看完成后的main.xml文件。按钮在上下文中显示并且等待着你的编码。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

<Button android:id="@+id/callButton" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Show Dialer" /> 
</LinearLayout> 

    要开始为按钮增加功能,你需要增加其它的包装到AndroidPhoneDialer.java这个文件。包含按钮View的是android.widget.Button;

    现在你已经在项目里输入按钮窗口小部件了(Button widget)。这些给了你必要的信息来开始你项目的编码工作。你项目的最终编码结果应当是有一个按钮在活动中,当点击它,启动呼叫活动。呼叫活动应当和数据“tel:5551212”一起启动。屏幕显示结果应该和初始的AndroidPhoneDialer相匹配。描述的功能围绕一些不同的概念。首先,你必须编程一个按钮,按钮的属性在main.xml文件内建立。下一步,你必须创建一个功能来启动前一个编码项目的CALL_ACTION这个Intent。最后,你的按钮应该能执行这个功能并且启动Intent。

    创建按钮的语法是

final Button <button_name> = <button>


等号左边的部分在代码中创建按钮。右边是从main.xml文件中调用按钮的属性。要调用它的属性,你使用findViewByID()把结果投递为一个按钮。这个听起来比它实际情况复杂。

    记住,当你增加按钮的属性到main.xml文件中,你给了这个按钮一个定义好的android:id,callButton,而这个通过Android plugin for Eclipse在id文件中以R.id.callbutton注册。使用findViewById()来从main.xml文件中通过传递id callButton来找回:

findViewById(R.id.callButton)

别忘了投递为按钮

(Button) findViewById(R.id.callButton) 

这个声明构成了等号右边的内容。创建完整的按钮应该是这样的:

final Button callButton = (Button) findViewById(R.id.callButton); 

现在你有一个可以工作的按钮了,但是你需要它来做点什么。按钮本身在没有代码的情况下无法完成太多的工作。根据本例的目的,你需要让它来执行CALL_ACTION这个Intent。因此,你需要在你现有的Intent呼叫中创建一个小的功能。这样,当按钮被按下时,你可以呼叫了。

    如果你熟悉Java编程,这里就没什么好奇怪的了。你将要设置onClick()方法来从前一个部分呼叫Intent代码。onClick()方法拿去一个View作为一个变量;但是,本例中,并没有在onClick()方法本身内呼叫任何的View:

public void onClick(View v){ 
Intent callIntent = new 
Intent(Intent.CALL_ACTION,Uri.parse("tel:5551212")); 
callIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH ); 
startActivity(callIntent); 
}

    代码左边是程序中仅有的绑定按钮到onClick的接受器。接收器对于Java编程者是非常熟悉的。对于不熟悉Java或者接收器的人来说。接收器是Java对象可以从其它对象“接受”的方法。同样的概念也适用于Android。你可以在Android中建立接收器,来允许Android的Views从其它的输入中处理呼叫。对于本项目,你需要为你的按钮创建一个接收器来接受活动中的按钮的onclick事件。当用户按下按钮,接收器,接收器会呼叫在onClick()方式中的代码。要建立接收器,你需要使用按钮的setOnClickListener()方法。

   如果你熟悉Java开发,这个结构不应当看起来陌生。这个是Java中典型的onClickListener接口执行。你在这里将会看到的是使用一个Java匿名的类来为按钮执行onClickListener。还有,作为一个匿名类,你可以用作本地变量来使用-本例中是按钮,如果变量被定义为最终的。

    setOnClickListener( ) 方法抓取一对变量。第一个是onClickListener()的实例。第二个是早前建立的onClick。你的setOnClickListener()应当看上去想这样:

callButton.setOnClickListener(new Button.OnClickListener() { 
public void onClick(View v){ 
Intent callIntent = new 
Intent(Intent.CALL_ACTION,Uri.parse("tel:5551212")); 
callIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH ); 
startActivity(callIntent); 

});

    这部分代码陈述了当callButton被按下,onClickListerner将执行onClick中的代码。onClick中的代码将执行CALL_ACTION Intent并且呼叫电话号码 555-1212。

你完成的AndroidPhoneDialer.java看起来像这样:

package android_programmers_guide.AndroidPhoneDialer; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.view.View; 
import android.content.Intent; 
import android.net.Uri; 
public class AndroidPhoneDialer extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.main ); 
/** Create the Button */ 
final Button callButton = (Button) findViewById(R.id.callButton); 
/** Set the onClickListener to call the onClick */ 
callButton.setOnClickListener(new Button.OnClickListener() { 
/** Use the onClick to call the existing Intent code */ 
public void onClick(View v){ 
Intent callIntent = new 
Intent(Intent.CALL_ACTION,Uri.parse("tel:5551212")); 
callIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH ); 
startActivity(callIntent); 

}); 

   在模拟器中编译并运行这个活动。主要的活动将显示标签为Show Dialer的按钮。点击这个按钮,它应当打开Call活动并拨号555-1212。主要活动应该如下图(略)。

    如你所见,Android是一个非常健全并灵活的平台。有几行相关的代码,比一页少,你已经创建了一个利用设备电话硬件的活动并且由按钮启动。同样,就这一点来说,你应当对Android处理活动,Intent和Views的方式刚到舒适。

    你的AndroidPhoneDialer活动仍然不是很健全。你需要增加一个更多的条目。本章的最后一节展示如何使用EditText View来运行用户输入一个电话号码。这个号码然后会被传递到CALL_ACTION Intent(而不是代码写好的数值:tel:5551212)。

 

更多信息请查看 http://www.javady.com/index.php/category/thread

分享到:
评论

相关推荐

    Android开发从入门到精通_android_

    《Android开发从入门到精通》是一本针对Android Studio的详细开发指南,旨在帮助初学者和有一定基础的开发者深入了解和掌握Android应用开发的核心技术。在学习Android开发的过程中,Android Studio是官方推荐的集成...

    Android开发从入门到精通

    书号:ISBN:9787894300874 Android开发从入门到精通

    Android开发从入门到精通【视频教程+课程源码】.rar

    在Android开发领域,掌握基础知识是至关重要的,而这套"Android开发从入门到精通【视频教程+课程源码】"提供了一条系统学习的路径。它不仅包括了详细的视频讲解,还有配套的源代码,旨在帮助初学者从零开始,逐步...

    Android_开发从入门到精通_IBM.pdf

    ### Android开发从入门到精通 #### 一、Android概述与平台简介 - **定义与起源**:Android是一种基于Linux V2.6内核的操作系统,最初由Andy Rubin等人于2003年创立,旨在为移动设备提供一个开放且完整的操作系统...

    android开发从入门到精通光盘源代码

    "Android开发从入门到精通光盘源代码"是一个很好的学习资源,提供了随书配套的详细代码示例,帮助开发者深入理解Android应用开发的各个环节。这里我们将围绕这个主题,深入探讨Android开发中的关键知识点。 首先,...

    Android应用开发从入门到精通-源码和课件.rar

    Android应用开发从入门到精通-源码和课件.rar

    Android网络开发从入门到精通源码_张余

    本资料"Android网络开发从入门到精通源码"由张余提供,旨在帮助开发者系统地学习并掌握Android平台上的网络编程技术。 一、Android网络基础 在Android中,我们主要通过HttpURLConnection、HttpClient(已废弃)、...

    Android开发从入门到精通.pdf

    《Android开发从入门到精通》是一本专门为Android编程新手量身打造的教程。这本书全面覆盖了Android开发的基础知识,旨在帮助读者快速掌握Android应用开发的核心技能。以下是对书中的主要知识点进行的详细解读: 1....

    [Android开发从入门到精通].扶松柏.扫描版.pdf

    从给定的文件信息来看,这是一本名为《Android开发从入门到精通》的书籍,作者为扶松柏,版本为扫描版。虽然标签部分似乎有些混乱,将本书标记为"C++经典书籍",但根据标题和描述,我们可以确定这实际上是一本关于...

    Android开发应用从入门到精通光盘

    Android开发应用从入门到精通 朱桂英 中国铁道出版社 本书循序渐进地讲解了android技术的基本知识,并通过实例直观地演示了android在各个领域中的具体应用。本书内容新颖、知识全面、讲解详细,全书分为4篇17章,第...

    Android开发从入门到精通源码

    提供的源代码文件(android开发从入门到精通光盘源代码_2章-6章.7z、android开发从入门到精通光盘源代码_7章-12章.7z)将作为实践环节的重要资源,帮助学习者通过实际操作巩固理论知识,提高动手能力。

    Android开发从入门到精通].扶松柏.扫描版

    Android开发从入门到精通是扶松柏编著的一本关于Android应用程序开发的书籍。该书面向初学者,旨在通过简洁明了的语言和生动的实例,详细介绍Android应用开发中所需掌握的各种技术。书中可能覆盖的内容包括但不限于...

    Android_开发从入门到精通_IBM.

    Android_开发从入门到精通_IBM

    Android开发从入门到精通(随书光盘)【源码】第9章

    在本资源中,我们聚焦于"Android开发从入门到精通"这一主题,特别是关于第9章的源码。这表明该压缩包包含了Android应用开发的一个关键章节的学习资料,特别是实战案例,这对于初学者和进阶者都极具价值。以下是根据...

    Android开发从入门到精通(随书光盘)【源码】第7章

    总之,"Android开发从入门到精通"的第7章覆盖了Android开发的核心元素,从界面设计到数据存储,从网络通信到性能优化,这些都是构建高质量Android应用所必需的技能。通过深入学习并实践本章内容,无论是新手还是有...

    Android开发从入门到精通-扶松柏版

    《Android开发从入门到精通-扶松柏版》这本书籍是Android开发领域中一本专门针对初学者的教程书籍。它以通俗易懂的方式介绍Android开发的基础知识,帮助读者逐步掌握如何使用Android Studio这个集成开发环境来创建和...

    Android开发应用从入门到精通 高清版本

    本款android从入门到精通pdf是由明日科技编著,是一本android入门书籍。全书由浅入深,循序渐进,以初、中级程序员为对象,从了解Android和搭建开发环境学起,再学习Android开发的基础技术,然后学习Android开发的...

Global site tag (gtag.js) - Google Analytics