欢迎来到51自学网!

51自学网

当前位置: 主页 > 脚本专题 >

第1个Android应用程序 Android制作简单单页导航

时间:2018-07-26 14:46来源:网络整理 作者:51自学网
本例子演示如何添加一个简单的单页导航,在此基础上,再演示如何在第2个页面中显示第1个页面中拨打过的所有电话号码。 (1)通过该例子理解Android App的基本架构。 (2)通过该例

本例子演示如何添加一个简单单页导航,在此基础上,再演示如何在第2个页面中显示第1个页面中拨打过的所有电话号码。

(1)通过该例子理解Android App的基本架构。

(2)通过该例子理解实现Android多屏幕导航的基本技术。

本例子只是为了让我们对Android App开发有一个较全面的感性认识,读者不必一开始就纠结于代码中的细节问题,涉及到的相关概念在后面还会分别介绍。

运行截图

运行截图(Api19、Api21、Api23的实现代码都相同):

第1个Android应用程序 Android制作简单单页导航

第1个Android应用程序 Android制作简单单页导航

界面操作

单击“将文本转换为数字”,观察结果。

单击【转换】按钮,如果转换成功,则【拨号】按钮可用,单击【拨号】按钮,观察弹出的对话框。

如果单击【拨号】按钮,就会自动拨号。

下面介绍主要设计步骤。

1、新建项目

选择模板:Blank App (Android),项目名:PhonewordApp。

第1个Android应用程序 Android制作简单单页导航

项目创建成功后,删除GettingStarted.Xamarin(广告文件)。

2、界面设计

(1)双击打开Main.axml,分别观察设计界面【Design】和源码【Source】的内容。

第1个Android应用程序 Android制作简单单页导航

(2)按Delete键删除【Hello World,Click Me】按钮。

(3)从【工具箱】中拖放一个【Text (Large)】到设计界面,修改下面的属性:

id:@+id/PhoneText

text:电话

注:此时系统会自动在【Source】中添加对应的代码(下同)。

(4)从【工具箱】中拖放一个【Plain Text】到设计界面,放到【Text (Large)】的下方,修改下面的属性:

id:@+id/PhoneNumberText

text:138 4912 2599

(5)从【工具箱】中拖放一个【Button】到设计界面,放到【Plain Text】的下方,修改下面的属性:

id:@+id/buttonTranslate

text:转换

(6)从【工具箱】中拖放一个【Button】到设计界面放到上一个按钮的下方,修改属性:

id:@+id/buttonCall

text:拨号

经过以上步骤后,即得到下图所示的设计界面:

第1个Android应用程序 Android制作简单单页导航

(7)保存文件,并单击【解决方案资源管理器】上方的【刷新】按钮。

注意:这一步的目的是为了让系统能找到设计界面内的资源并自动生成对应的ID,以便在后面键入C#代码时能看到与设计界面资源相关的智能提示。

3、编写C#代码

(1)鼠标右击项目名à添加类,在弹出的窗口中,选择【Class】模板,名称:PhoneTranslator.cs,如下图所示,单击【添加】按钮。

第1个Android应用程序 Android制作简单单页导航

然后将PhoneTranslator.cs改为下面的代码:

using System.Text; namespace PhonewordApp { public static class PhonewordTranslator { public static string ToNumber(string raw) { if (string.IsNullOrWhiteSpace(raw)) { return ""; } else { raw = raw.ToUpperInvariant(); } var newNumber = new StringBuilder(); foreach (var c in raw) { if ("- 0123456789".Contains(c)) newNumber.Append(c); else { var result = TranslateToNumber(c); if (result != null) newNumber.Append(result); } } return newNumber.ToString(); } static bool Contains(this string keyString, char c) { return keyString.IndexOf(c) >= 0; } static int? TranslateToNumber(char c) { if ("ABC".Contains(c)) return 2; else if ("DEF".Contains(c)) return 3; else if ("GHI".Contains(c)) return 4; else if ("JKL".Contains(c)) return 5; else if ("MNO".Contains(c)) return 6; else if ("PQRS".Contains(c)) return 7; else if ("TUV".Contains(c)) return 8; else if ("WXYZ".Contains(c)) return 9; return null; } } }

(2)打开MainActivity.cs,将该文件改为下面的代码:

using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using System.Collections.Generic; namespace PhonewordApp { [Activity(Label = "PhonewordApp", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { static readonly List<string> phoneNumbers = new List<string>(); protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); var phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText); var buttonTranslate = FindViewById<Button>(Resource.Id.buttonTranslate); var buttonCall = FindViewById<Button>(Resource.Id.buttonCall); buttonCall.Enabled = false; //禁用【拨号】按钮 string translatedNumber = string.Empty; buttonTranslate.Click += (s, e) => { translatedNumber = PhonewordTranslator.ToNumber(phoneNumberText.Text); if (string.IsNullOrWhiteSpace(translatedNumber)) { buttonCall.Text = "拨号"; buttonCall.Enabled = false; } else { buttonCall.Text = "播出号码:" + translatedNumber + ",单击确认!"; buttonCall.Enabled = true; } }; var buttonCallHistory = FindViewById<Button>(Resource.Id.buttonCallHistory); buttonCallHistory.Click += (sender, e) => { var intent = new Intent(this, typeof(CallHistoryActivity)); intent.PutStringArrayListExtra("phone_numbers", phoneNumbers); StartActivity(intent); }; buttonCall.Click += (s, e) => { phoneNumbers.Add(translatedNumber); buttonCallHistory.Enabled = true; // 当单击【拨号】时,尝试拨号 var callDialog = new AlertDialog.Builder(this); callDialog.SetMessage("电话:" + translatedNumber + ",拨号吗?"); callDialog.SetNeutralButton("拨号", delegate { var callIntent = new Intent(Intent.ActionCall); callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber)); StartActivity(callIntent); }); callDialog.SetNegativeButton("取消", delegate { }); callDialog.Show(); }; } } }

(3)重新生成项目,确保无错误。

注:drawable文件夹下的Icon.png是要显示的图标,也可将其换为其他图标文件。

(4)选择主菜单下该项目的属性,在弹出的窗口中,勾选【CALL PHONE】权限:

第1个Android应用程序 Android制作简单单页导航

注:

(1)这一步必须做,否则因该App无拨号权限,拨号功能会失败。

(2)设置后,查看Properties文件夹下AndroidManifest.xml文件中自动添加的代码,理解权限设置的作用。

4、调试运行及代码片段解释

选择一种模拟器,然后按<F5>键调试运行。

(责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容