Xamrin開發安卓筆記(一)


環境雖然搭建的不穩定,不過還是可以開發的,又加了兩個環境變量不知道有沒有效果。待測。

加的兩個環境變量是

① 添加環境變量 ANDROID_SDK_HOME:

D:\Android\

② 在path環境變量下追加路徑下追加路徑:

D:\Android\platform-tools;D:\Android\tools;

修改了一下CPU的虛擬技術

整體來說用c#寫安卓的代碼挺有意思。代碼風格和寫法跟用java寫的基本類似,只不過有一些方法名不同而已。因為之前沒寫過安卓程序也沒怎么開發過java程序,所以有錯誤的地方請指出。

SetContentView (Resource.Layout.Main);

默認程序上來第一句話就是這個,我英文又不好,所以理解是大概意思是獲取布局的資源文件。

在這里有個事情需要注意一下,如果新拖了一個控件,但是在CS代碼頁面獲取不到,可以嘗試從新生成整個項目,這樣就能帶過來了。如果沒帶過來硬寫的話可能會提示error,所以需要注意一下。

然后就是在頁面上拖控件隨便拖幾個。

我拖了幾個

分別是TextView,EditText,Button

因為我之前是一直在做web開發所以解釋偏向webform

TextView類似Label

EditText類似Text

Button類似Button

我的命名規則基本都是在使用web的。如果誰知道這個命名規則可以告訴我下哈~

下面說一下控件的一些注意事項,

<?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"
    android:minWidth="25px"
    android:minHeight="25px">
    <TextView
        android:text="小李"
        android:layout_width="match_parent"
        android:layout_height="25.0dp"
        android:id="@+id/textView1" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txtPhone"
        android:text="10086"
        android:layout_marginTop="30.0dp" />
    <Button
        android:text="通話"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnPhone"
        android:textSize="25px" />
    <Button
        android:text="跳轉"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnTo" />
</LinearLayout>

大小都是用像素表示,對齊方式都是用dp表示。dp可以是float類型。

ID命名都是@+id/youName。

VS的可視化編輯可以讓我們在屬性上把他們都給設置上。(VS2015 BUG 設置字體大小可能會在可視化頁面失效,不知道為什么,運行起來沒問題)如果之前學過安卓開發請無視這段

Button btnPhone = FindViewById<Button>(Resource.Id.btnPhone);
EditText txtPhone = FindViewById<EditText>(Resource.Id.txtPhone);

通過視圖的ID查找這個控件,這樣就可以找到這個控件並且操作這個控件,c#這邊可以使用兩種方式來給控件添加事件。

 btnPhone.Click += delegate{};
btnPhone.Click += BtnPhone_Click;
private void BtnPhone_Click(object sender, EventArgs e)
{
            
}

自帶的hello world是使用第一種委托方式我感覺第一種簡單所以我也那么些,第二種是寫完+=按兩下tab生成出來的。

接下來就可以在委托或者方法里面寫自己的代碼進行功能操作了。我做了個打電話的小demo

 btnPhone.Click += delegate
            {
                //創建 是否類型提示框
                var callDialog = new AlertDialog.Builder(this);
                //提示框信息
                callDialog.SetMessage("是否開始通話?");
                //確定按鈕的文字和事件
                callDialog.SetNeutralButton("通話", delegate
                {
                    //創建打電話的事件
                    var call = new Intent(Intent.ActionCall);
                    //要打給的電話號是多少
                    call.SetData(Android.Net.Uri.Parse("tel:" + txtPhone.Text));
                    //執行這個事件
                    StartActivity(call);
                });
                //取消按鈕的文字和事件,如果將下面的事件注視掉,則變成一個普通的 消息框,只有確定按鈕 
                callDialog.SetNegativeButton("取消", delegate { });
                //顯示出來。
                callDialog.Show();
            };

代碼執行的方式從上到下,那么開始就創建了一個提示框中間部分我們對我們的提示框做了一些操作,最后把這個提示框顯示出來。感覺這種寫法類似於cs的窗體寫法但是又不太像,不過理解起來很容易。

這時候就可以運行了,不過在運行之前做幾個設置。

因為需要打電話所以需要調用一個接口(?)

還需要設置一下最小的可執行的安卓版本

個人建議最好設置成模擬器的版本號。

這樣就能打電話了。

現更新到這,跳轉功能下次在說。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM