设为首页 加入收藏

TOP

C#-Xamarin的Android项目开发(一)——创建项目(一)
2019-09-01 23:25:25 】 浏览:81
Tags:C#-Xamarin Android 项目开发 创建 项目

创建项目

使用Xamarin开发安卓项目,首先需要安装VS2017以上版本。因为VS2017以上的版本,可以直接创建Xamarin项目。

另外用Xamarin开发安卓项目,还需要使用Intel的CPU,并且得是双核以上的CPU,因为调试时,需要使用电脑的虚拟化,奔腾4之类的CPU是不支持虚拟化的。

下面我们创建KibaXamarin_Android项目,如下图:

点击确定后,会弹出一个选择模板的窗体,这里我们选择一个空白应用,并且选择最小安卓版本号为4.4,如下图:

 点击OK后,项目创建完成,解决方案内容如下图

解决方案中重要的文件及文件夹如下:

Resources/layout/activity_main.axml:该文件为主页面。

MainActivity.cs:该文件为主页面对应的后台页面,也我们进行逻辑操作或者调用逻辑操作的地方。

Resources/value/xxx.xml:value文件夹下主要存储常用的值,类似于我们C#中的const常量。

其他文件夹及文件暂时忽略。

在Resources文件夹里,我们可以发现,没有存储图片的地方,那么,我们创建一个文件夹drawable用来存储图片。

为什么用drawable存图片?答案很简单,因为网上的开源样式里的图片大多放在了drawable里,建立一个这样的文件夹,绝对会减少我们的工作量。

接下来,我们看一下我们的核心文件,MainActivity,代码如下:

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState); 
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);
    }
}

 首先,我们看第一行的特性,这里有三个属性赋值,含义如下:

Label:页面的标题。

Theme:页面的样式。

MainLauncher:是否是主窗体,该属性在项目只能给一个页面。

然后,我们可以看到我们的主页面MainActivity继承了AppCompatActivity,这里的AppCompatActivity是一个继承了Activity的子类,我们暂时先不了解它,因为我们即将创建一个继承Activity的BaseActivity,后续的[Activity]也将继承BaseActivity。

接下来我们看到了OnCreate方法,这里我们需要了解下Activity的生命周期,OnCreate是Activity的第一个触发的方法,可以暂时先理解为Activity的构造函数。

OnCreate方法里我们看到了SetContentView(Resource.Layout.activity_main),根据字面我们先简单的理解该方法为设置内容视图。

可以看到我们在设置内容视图的时候,去资源里找了一个页面;也就是说,在Android中,视图是倒装的,现有Activity然后由Activity来控制要导入那个页面视图显示。

为了更好的寻找视图,我们将视图名和活动名进行统一,修改页面的名为MainActivity,然后再重新设置内容视图。(这里有个编译器的BUG,我们改名以后,编译器并没有同步,所以我们需要清理一下,再重新生成,如果还不成功,就删除obj文件夹,再重新生成)

BaseActivity

通过上面的描述,我们初步了解了Xamarin的Android项目。

现在我们一起创建一个BaseActivity。

首先我们需要为BaseActivity封装一些提示信息的方法,让继承该类的活动可以更简单的调用提示。

然后我们封装寻找资源的方法;在Android项目里是由活动调用视图,即先有活动后有视图,所以在活动里找页面的控件也是倒装的,那么这个寻找控件的方法就相对代码会比较多,所以我们简单封装一下。

接下来我们在封装一些跳转活动、创建服务、异步调用等基础方法;BaseActivity代码如下:

[Activity(Label = "KibaXamarin_Android")]
public class BaseActivity : Activity
{
    public void ShowActivity<T>() where T : Activity
    {
        Intent intent = new Intent(this, typeof(T));
        StartActivity(intent);
    }
    public void OpenService<T>() where T : Service
    {
        Intent intent = new Intent(this, typeof(T));
        StartService(intent);
    }

    #region  各种提示信息
        public void ShowToast(string msg)
        {
            Toast.MakeText(this, msg, ToastLength.Short).Show();
        }
       
        private AlertDialog dialog;
        public AlertDialog InitDialog(string msg, Action<AlertDialog> comfirmCallback, Action<AlertDialog> cancelCallback)
        {
            AlertDialog cdialog;
            //构造器
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            //标题
            builder.SetTitle("提示");
            //图标
            //builder.SetIcon(android.R.drawable.btn_dialog);
            //内容
            builder.SetMessage(msg);
            //setPositiveButton(表示按钮的文本,表示单击按钮触发单击事件)
            builder.SetPositiveButton("OK", new EventHandler<DialogClickEventArgs>((s, e) =>
            {
                if (comfirmCallback != null)
                {
                    comfirmCallback(dialog);
                }
            }));
            builder.SetNegativeButton("Cancel", new EventHandler<DialogClickEventArgs>((s, e) =
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android For OpenCV的环境搭建 下一篇keyboard dialog 仿微博表情键盘..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目