Hello, Android 快速入門

来源:http://www.cnblogs.com/xdq-zh/archive/2016/05/29/5538527.html
-Advertisement-
Play Games

Hello, Android Android 開發與 Xamarin 簡介 在這兩節指南中,我們將 (使用 Xamarin Studio或 Visual Studio)建立我們的第一個 Xamarin.Android 應用程式 並理解使用Xamarin 開發Android 應用程式的基本原理的。在這 ...


Hello, Android

Android 開發與 Xamarin 簡介

 

在這兩節指南中,我們將 (使用 Xamarin Studio或 Visual Studio)建立我們的第一個 Xamarin.Android 應用程式 並理解使用Xamarin 開發Android 應用程式的基本原理的。在這個系列,我們將介紹有關工具的使用、 Android開發相關的概念、構建和部署 Xamarin.Android 的應用程式所需的步驟。

Hello, Android 快速入門

 

在本演練中,我們要創建一個將字母和數字轉換成電話號碼應用程式,由用戶輸入包含字母和數字的電話號碼,然後將用戶輸入內容轉換為電話號碼,並撥打電話。最終的應用程式看起來像這樣 ︰

讓我們開始吧 !

要求

 

Xamarin.Android 適用於以下任何設置 ︰

  • OS X Yosemite 上最新版本的  Xamarin Studio 及以上
  • Windows 7 上最新版本的 Xamarin Studio 及以上。
  • Windows 7 和上述 Visual Studio 2012 專業版或更高。

本演練假定 你已經安裝了最新版的Xamarin.Android。安裝 Xamarin.Android 的指南,請參閱Xamarin.Android 安裝指南。在我們開始之前,請下載並解壓縮Xamarin 應用程式圖標和啟動屏幕設置。

配置模擬器

 

Android 有模擬器的幾個選項。標準的 Android 模擬器的設置最簡單,但跑得慢。Xamarin 建議你使用高性能Xamarin 安卓高清播放器如果您不使用 Xamarin 安卓高清播放器,您應該配置模擬程式使用硬體加速。配置硬體加速的說明是在加速 Android 模擬器指南 》 中提供的。

演練

(IOS系統的解說跳過,需要的請瀏覽官網

 
  1. 讓我們來啟動 Visual Studio ︰

  2. 單擊開始 > 新項目創建一個新的項目 ︰

  3. 在新建項目對話框中,單擊Visual C# > Android,選擇空白的應用程式 (Android)模板。我們將新項目命名為Phoneword單擊確定以創建新的項目 ︰

  4. 創建新項目後,讓我們展開解決方案資源管理器下的Resources 文件夾layout文件夾,然後雙擊Main.axml文件,這個文件將會在 Android 設計器中打開。這是我們的屏幕的佈局文件 ︰

  5. 在設計界面選擇Hello,World, Click Me! 按下Delete鍵刪除它。在工具箱(右側的區域)的搜索欄位中輸入text並將 Text (Large) 部件拖到設計界面(在中心區域) ︰

     

     

  6. 修改Text(Large)控制項的Text屬性為Enter a Phoneword:

    如下圖所示 ︰

  7. 接下來,讓我們從工具箱拖一個 Plain Text 部件動到設計界面,並將其放置在Text(Large)控制項下麵。註意,我們可以使用搜索欄位來幫助定位窗體部件的名稱 ︰

     

  8. 修改Plain Text控制項id屬性為@+id/PhoneNumberTexttext屬性更改為1-855-XAMARIN:

  9. 從工具箱一個按鈕從拖動到設計界面,把它放在純文本小部件下麵 ︰

  10. 更改該按鈕的Id屬性為@+id/TranslateButtonText屬性更改為Translate:

  11. 接下來,從工具箱拖動第二個按鈕到Translate按鈕下 ︰

  12. 在設計界面上選擇該按鈕,更改它的Id屬性為@+id/CallButtonText屬性更改為Call:

    按Ctrl+s報存。

     

  13. 現在,讓我們添加一些代碼來實現將字母和數字翻譯為純數字電話號碼的功能我們會添加新文件到項目,在旁邊的解決方案中右鍵點擊Phoneword項目,然後選擇添加 > 新文件...:

  14. 在添加新項對話框中,選擇Visual C# > 代碼 將新添加代碼文件進行命名為PhoneTranslator.cs:

  15. 我們創建了一個空的 C# 類。將PhoneTranslator.cs的代碼替換為下麵的代碼 ︰

  16. using System.Text;
    using System;
    
    namespace Core
    {
        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);
                    }
                    // otherwise we've skipped a non-numeric char
                }
                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;
            }
        }
    }

    CTRL+S保存,然後關閉該文件。確保重新生成解決方案時沒有編譯時錯誤。

  17. 接下來我們要添加用戶界面上的代碼將下麵的代碼添加到MainActivity類。在解決方案資源管理器雙擊MainActivity.cs將其打開 ︰

  18. 我們開始處理翻譯按鈕。MainActivity類中,找到OnCreate方法。我們將在OnCreate方法里的最後一行添加代碼刪除模板生成的按鈕處理代碼,按照下麵的代碼修改OnCreate方法 ︰

    using System;
    using Android.App;
    using Android.Content;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    
    namespace Phoneword
    {
        [Activity (Label = "Phoneword", MainLauncher = true)]
        public class MainActivity : Activity
        {
            protected override void OnCreate (Bundle bundle)
            {
                base.OnCreate (bundle);
    
                // Set our view from the "main" layout resource
                SetContentView (Resource.Layout.Main);
    
                // Our code will go here
            }
        }
    }

     

  19. 接下來,我們需要獲取我們在 Android 設計器中添加的那些控制項的引用。

    OnCreate方法中的 

    SetContentView (Resource.Layout.Main);
    

     這句代碼後面添加如下代碼 ︰

    // Get our UI controls from the loaded layout:
    EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
    Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
    Button callButton = FindViewById<Button>(Resource.Id.CallButton);
  20. 現在讓我們添加響應用觸摸TranslateButton按鈕時的代碼。將下麵的代碼添加到OnCreate方法 (我們在最後一步中添加的那行後面) ︰

    // Disable the "Call" button
    callButton.Enabled = false;
    
    // Add code to translate number
    string translatedNumber = string.Empty;
    
    translateButton.Click += (object sender, EventArgs e) =>
    {
        // Translate user's alphanumeric phone number to numeric
        translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);
        if (String.IsNullOrWhiteSpace(translatedNumber))
        {
            callButton.Text = "Call";
            callButton.Enabled = false;
        }
        else
        {
            callButton.Text = "Call " + translatedNumber;
            callButton.Enabled = true;
        }
    };
  21. 接下來讓我們添加響應用戶按Call按鈕時的代碼。我們將下麵的代碼 TranslateButton的後面 ︰

    callButton.Click += (object sender, EventArgs e) =>
    {
        // On "Call" button click, try to dial phone number.
        var callDialog = new AlertDialog.Builder(this);
        callDialog.SetMessage("Call " + translatedNumber + "?");
        callDialog.SetNeutralButton("Call", delegate {
               // Create intent to dial phone
               var callIntent = new Intent(Intent.ActionCall);
               callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
               StartActivity(callIntent);
           });
        callDialog.SetNegativeButton("Cancel", delegate { });
    
        // Show the alert dialog to the user and wait for response.
        callDialog.Show();
    };
  22. 最後,讓我們給我們的應用程式添加撥打電話許可權。我們可以在Android Manifest界面編輯應用程式許可權在解決方案資源管理器中雙擊Phoneword 下的Properties進入屬性頁,然後選擇Android 清單頁面 ︰

    添加所需的許可權,我們這裡只用到了打電話的許可權,只勾選CALL_PHONE許可權 就可以︰

  23. 保存並生成解決方案,我們會在 Visual Studio 的左下角看到一條成功消息 ︰

    如果有錯誤,我們可以通過前面的步驟,改正錯誤,直到應用程式生成成功。如果你在生成項目時碰到了像 資源在當前上下文中不存在 錯誤,請確認MainActivity.cs中的命名空間名稱與項目名稱 (Phoneword)是否一致,然後重新生成解決方案。如果仍然會生成錯誤,請驗證您已經安裝了最新的 Xamarin.Android 更新。

  24. 我們現在有一個工作應用程式 — — 到了最後的潤色的時間 !讓我們開始為我們的MainActivity編輯LabelLabel顯示在安卓系統屏幕的頂部,目的是為了讓用戶知道他們現在正在使用哪個應用。MainActivity類的頂部,更改Label的值Phone Word就像下麵這樣 ︰

    namespace Phoneword
    {
        [Activity (Label = "Phone Word", MainLauncher = true)]
        public class MainActivity : Activity
        {
            ...
        }
    }
  25. 接下來,讓我們設置的應用程式圖標。首先,下載並解壓的Xamarin 應用程式圖標設置下一步,打開Resources文件夾下的drawable文件夾刪除裡面的Icon.png文件:

    當顯示下麵的對話框時,單擊確定:

  26. 接下來,讓我們用滑鼠右鍵單擊drawable文件夾並選擇添加 > 現有項目...:

  27. 從選擇我們已經解壓縮後的 Xamarin 應用程式圖標目錄並打開drawable文件夾。選擇Icon.png ,並單擊添加:

  28. 接下來,讓我們添加其餘的 Xamarin 應用程式圖標drawable-* 文件夾到項目里。這些文件夾提供不同解析度的圖標,它可以適應不同設備上的不同解析度。在文件資源管理器視窗中,定位到解壓縮後的 Xamarin 應用程式圖標目錄並選擇drawable-*文件夾 ︰

    將這些文件夾拖到 Visual Studio解決方案資源管理器窗格中的資源文件夾中。這些文件夾現在屬於您的項目的一部分了,如圖 ︰

  29. 接下來,讓我們在 Android Manifest 中指定應用程式圖標,通過從應用程式圖標下拉菜單中選擇@drawable/Icon :

  30. 最後,我們可以通過將它部署到模擬器來測試我們的應用程式。如果尚未配置模擬程式,請參閱安裝說明Xamarin 安卓高清播放器如果您使用谷歌安卓系統模擬器,請參閱加速 Android 模擬器提高模擬性能的提示。

    <譯者註>如果按這裡的教程不能運行安卓模擬器的話,聽我的,別糾結,拿起你的手機,進入開發者,打開usb調試,插上usb 連接到電腦,然後點擊啟動就可以在真機上調試了。或者使用微軟的安卓模擬器。怎麼啟動微軟的安卓模擬器就不講了。啟動後在模擬器的無線=》高級屬性中 找出模擬器的ip地址,點擊下圖中紅框的地方 打開Android Adb Command ,運行命令: 【adb connect 192.168.xx.xx(你要連接的模擬器的ip地址)】 埠號可以省略,下麵是這個命令的幫助。

     connect <host>[:<port>]       - connect to a device via TCP/IP

     

    讓我們打開 Xamarin 安卓高清播放器設備管理器中,通過單擊工具欄中的圖標管理虛擬設備 (XAP) :

    在 Xamarin 安卓高清播放器設備管理器中,讓我們下載、 安裝,並啟動Nexus 5 (Kitkat) (Android 4.4.2 API 級別 19) 虛擬設備 ︰

    我們將我們的應用程式發送到這個模擬器之前,讓我們來配置應用程式運行需要的最低 Android 版本,它將在我們選定的虛擬設備上運行。在 Visual Studio 中打開應用程式頁的屬性。Minimum Android to target:︰選擇 API 級別 19 (有關 Android API 級別的詳細信息,請參閱瞭解 Android API 級別).

    接下來,讓我們點擊工具欄上的下拉菜單將我們的應用程式部署到Nexus 5 (Kitkat)設備上如下所示 ︰

    在安裝和啟動我們的應用程式之前,Visual Studio 會將文件複製到此模擬程式。

  31. 下麵的截圖說明Phoneword應用程式已經在 Xamarin Android Player中運行了。Phone Word 標簽前面顯示的圖標就是我們在MainActivity中配置的圖標。單擊Translate 按鈕,將會更改Call按鈕的文本。這時點擊Call按鈕將會彈出撥打電話的對話框。如下圖所示 ︰

祝賀您完成您第一次的 Xamarin.Android 應用程式 !現在到了剖析技術的時候了,我們將在你好,Android 的深入中進行講解.

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 登錄併進入你常用的用戶名下,查看其主目錄 命令: # su xxx $ cd xxx $ ls -a 2.查看並建立目錄和文件 首先看你的主目錄~/ 下是否有.vimrc文件,沒有就輸入指令 $ touch .vimrc 新建該文件 在主目錄下新建目錄 .vim,併進入.vim目錄,建立plu ...
  • 虛擬機備份轉移後,網路啟動異常,提示“SIOCSIFADDR: No such device” he problem lies in the fact that ethernet MAC addresses are cached. You need to remove a file to clear ...
  • .gz 由gzip壓縮工具壓縮的文件 .bz2 由bzip2壓縮工具壓縮的文件 .tar 由tar打包程式打包的文件 .tar.gz 先由tar打包,gzip壓縮 .tar.bz2 先由tar打包,bzip2壓縮 1:gzip 壓縮文件 此命令不能壓縮目錄 gzip +文件 在當前位置壓縮該文件 g ...
  • 手動安裝交叉編譯工具鏈: 第一步:準備事先下載好的安裝包 :arm-2009q3.tar.br2(下載地址:https://yunpan.cn/OcSEWQvsjFgntk 訪問密碼 311e)將安裝包放到虛擬機的共用文件夾下 在linux中,用戶自己裝程式一般裝在/usr/local 下 /bin ...
  • 這是第一次在博客園中寫自己的隨筆,也是第一次使用Markdown的編輯環境,值得紀念一下!希望在以後學習linux的道路上能多多記錄自己的學習心得和遇到問題的解決方法,朝著運維的方向邁出堅實的腳步。 問題描述 最近在編譯一個開源軟體時,在好不容易配置好各種編譯環境之後,由於各種許可權問題還是無法正常進 ...
  • 這是 WIN32 自動創建多級子目錄的 C++ 封裝類,用法簡單。 封裝沒有採用類的靜態函數方式,而是在構造函數裡面直接完成工作。沒什麼具體的原因,只是當時做成這樣了,這麼多年就一直這樣用了。 #ifndef lxx_hss_auto_create_folder_hss #define __HSS_... ...
  • http://code.csdn.net/news/2820879 想出一個難破解且容易記的密碼對不是一件簡單的事情。在我為電腦設定一個新密碼,或者線上註冊了一個新的賬號,需要輸入密碼的時候,腦袋就一片空白。不過,Linux下有幾個密碼生成工具可以使用,每一個工具都有自己的辦法生成安全的密碼。 1. ...
  • 最近用到了rsync的非同步非同備份,一個簡單的rsync同步配置,總結起來有以下幾個步驟: 1)服務端配置:vim /etc/rsyncd.conf 進入編輯,加入如下配置: 2) 創建所需要備份的目錄,添加上面配置的虛擬用戶:useradd wlpt -s /sbin/nologin. 3) 修改 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...