Xamrin开发安卓笔记(一)

环境虽然搭建的不稳定,不过还是可以开发的,又加了两个环境变量不知道有没有效果。待测。

加的两个环境变量是

① 添加环境变量 ANDROID_SDK_HOME:

D:Android

② 在path环境变量下追加路径下追加路径:

D:Androidplatform-tools;D:Android ools;

修改了一下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的窗体写法但是又不太像,不过理解起来很容易。

这时候就可以运行了,不过在运行之前做几个设置。

因为需要打电话所以需要调用一个接口(?)

还需要设置一下最小的可执行的安卓版本

个人建议最好设置成模拟器的版本号。

这样就能打电话了。

现更新到这,跳转功能下次在说。

原文地址:https://www.cnblogs.com/minCS/p/4108133.html