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

2019-12-10 17:49:18王旭

Android,Android应用程序,Android单页导航

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

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

3、编写C#代码

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

Android,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();
      };

    }
  }
}