添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

参考链接: https://www.dianyuan.com/eestar/article-1284.html

上位机开发人员,想开发APP,从头学Java,需要花的时间成本太大,最近网上找找资料发现用c#就可以在熟悉的VS2019下编写APP程序了

看到别人的一句话:

在这个盛行全干的时代,我想每个人都应该懂移动端开发。Xamarin为我们提供了一种简单、高效的方式来开发强大的、如原生般体验的APP。结合C#优雅的语法和宇宙最强大的IDE,这个事情也许值得一试。

VS2019的移动跨平台采用Xamarin架构,这让原本就熟悉Visual Studio的开发者不用再熟悉其他的开发工具就能直接开发移动应用程序。并且经过几年的发展,VS集成Xamarin方面做得越来越方便。

下面就简单介绍下环境配置,后续自己摸索中会不断更新:

打开vs2019,创建新项目,语言选择C# 平台选择Android,因为我电脑上已经装了,所以选择Xbox为了显示下面的红框的内容,点击安装工具和功能

选中图中的选项,点击右下角的更改和安装,安装完成后就可以启动开发

二:安装模拟器,官方的模拟器很卡

安装 Genymotion模拟器

提一下..这个Genymotion模拟器也比较蛋疼,但是我选择原谅他...毕竟不卡..

1.进入Genymotion官网,并注册帐号.

https://www.genymotion.com/

2.注册后,登陆并下载免费版本,地址如下:

https://www.genymotion.com/account/login/

嗯..他免费版本藏的比较隐蔽在如图位置下载:

懒得找的可以直接如下地址下载

https://dl.genymotion.com/releases/genymotion-2.9.0/genymotion-2.9.0-vbox.exe

国外资源..嗯 建议迅雷..

3.下载后安装.(注:本文写的时候是2.9版本,最新版本3.1.2)

安装过程就不写了..傻瓜模式..下一步 下一步 下一步...

4.下载调试所需要的安卓系统镜像..(注:建议4.3版本一个 6.0版本一个)

打开我们安装好的Genymotion..选择ADD添加镜像.如下:

三:创建APP

新建一个C# andriod app

选择Android应用

将新项目命名为 register,然后单击“创建” :

在“新 Android 应用” 对话框中,依次单击“空白应用” 和“OK” ,以新建项目,最低Android版本默认即可。

新建项目加载完后如下图

双击layout文件夹中的activity_mian.xml文件,可以打开App的屏幕布局设计,类似WinForm设计。

四、设计App界面

默认布局是 RelativeLayout。 根据微软教程提示,应将 标记更改为 ,并将其他属性 android:orientation=“vertical” 添加到 LinearLayout 开始标记。如果不作更改,在拖拽控件时将遇到问题,更改后的代码如下。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</LinearLayout>

首先从左侧工具栏,窗体小组件中拖拽一个“Text(Large)”控件(相当于WinForm中的Label)到屏幕中,如下图所示,修改控件的属性Text为“机器码”。

再从左侧工具栏,文字字段中拖拽一个“Plain Text”控件到屏幕中,用于输入机器码,如下图所示,

再重复上午两个步骤,添加一个“Text (Large)”控件,修改Text属性为“注册码”,添加一个“Plain Text”用于显示注册码,添加完后如图所示。

现在添加一个按钮,窗体小组件中拖拽一个“Button”控件,并修改其Text属性为“生成注册码”。

最终界面设计的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:text="机器码"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minWidth="25px"
        android:minHeight="25px"
        android:id="@+id/textView1" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText1"
        android:layout_marginBottom="0.0dp"
        android:layout_marginTop="0.0dp" />
    <TextView
        android:text="注册码"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView2" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText2" />
    <Button
        android:text="生成注册码"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button1" />
</LinearLayout>

五、编写代码

App的功能以将一个字符串转换成另一串字符串。 通过在“解决方案资源管理器” 窗格中右键单击“register” 项目,然后选择“添加”>“新建项” 以向项目添加新文件,名字命名为Translator,如下所示:

这将创建新的空 C# 类。 在此文件中插入以下代码:

using System.Text;
using System;
namespace Core
    public static class PhonewordTranslator
        public static string ToNumber(string raw)
            if (string.IsNullOrWhiteSpace(raw))
                return "";
                raw = raw.ToUpperInvariant();
            var newNumber = new StringBuilder();
            foreach (var c in raw)
                if (" -0123456789".Contains(c))
                    newNumber.Append(c);
                    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;

接下来,通过将支持代码插入到 MainActivity 类中来添加代码以关联用户界面。 首先关联 按钮。 在 MainActivity 类中找到 OnCreate 方法。 接下来,在 OnCreate 内的 base.OnCreate(savedInstanceState) 和 SetContentView(Resource.Layout.activity_main) 调用下添加该按钮代码。 首先,修改模板代码,使 OnCreate 方法与以下内容相似:

protected override void OnCreate(Bundle savedInstanceState)
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
            EditText machineNumberText = FindViewById<EditText>(Resource.Id.editText1);
            Button translateButton = FindViewById<Button>(Resource.Id.button1);
            EditText registerNumberText = FindViewById<EditText>(Resource.Id.editText2);
            // Add code to translate number
            translateButton.Click += (sender, e) =>
                // Translate user's alphanumeric phone number to numeric
                //string translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);
                string translatedString = Core.PhonewordTranslator.ToNumber(machineNumberText.Text);
                if (string.IsNullOrWhiteSpace(translatedString))
                    registerNumberText.Text = string.Empty;
                    registerNumberText.Text = translatedString;

代码添加完毕,再次生成,启动运行,在机器码中输入“185-xamarin”,点击“生成注册码”按钮,则注册码对话框中出现转换后的结果“185-9262746”。

六、发布,生成Apk

1.项目切换至发布Release模式,

2.选中项目,鼠标右键 ,点击存档

等待执行完毕后,出现

选中Register,点击“+”号,创建密钥存储,输入“别名”、“密码”、以及下面中的任意一项,直至红色框消失后。

点击创建后,列表增加一下“a”。

点击“另存为”,选择路径保存apk文件。

七、安装测试

本人手机华为Mate10,系统Android10,把安装包拷贝到手机中进行安装,可以正常使用。

由于之间没有Android开发基础,在界面设计时有些搞不懂,其他的过程根据网上查的资料基本都可以解决。VS下的XAMARIN的开发环境可能还不是很稳定,时不时会遇到点奇奇怪怪的问题,可能关闭VS重启一下,或者重启电脑一下就好。

参考链接:https://www.dianyuan.com/eestar/article-1284.html上位机开发人员,想开发APP,从头学Java,需要花的时间成本太大,最近网上找找资料发现用c#就可以在熟悉的VS2019下编写APP程序了看到别人的一句话:在这个盛行全干的时代,我想每个人都应该懂移动端开发。Xamarin为我们提供了一种简单、高效的方式来开发强大的、如原生般体验的APP。结合C#优雅的语法和宇宙最强大的IDE,这个事情也许值得一试。VS2019的移动跨平台采用Xam.
目前Android在全世界市场上大约有75%的占有率,国人Android手机的持有比例更甚,甚至达到90%以上。因此搞计算机的一听说手机应用开发,一个个都像着了魔似的,既然有那么多人对它感兴趣,那咱也跟着玩一玩。但是,本模块不是介绍如何用Java开发,而是全部用C#去实现。 为什么用C#去实现?原因很简单,目前手机市场经过多年的你争我斗,现在就剩下Android、iOS、Windows Phone还能互相斗狠,其他的统统都被打趴下找不着北了。但是,学Android应用开发要用Java、学iOS应用开发要用Objective-C、学WindowsPhone应用开发要用C++,我的天,这不是故意折
一个直接在 Android 设备上开发 Android 应用的集成开发环境 基于原版深度定制、适配本土化的操作习惯,一键快速添加常用的代码,大幅提高开发效率。 实时的语言翻译,帮助不会英文的人快速入门,新增护眼模式,让你沉浸享受深夜编程的乐趣。 更多工具,图标中心、Java/Xml代码转义、Json2Bean、工程转换、系统资源查看及指定类分析等。 更多功能,启用Gradle、SDK、NDK、JDK支持、R资源混淆、Str字符串加密、dex分包、adrt调试等。
小白记录第一个Android APPVS2019,Xamarin,C#一、App功能需求及背景二、参考三、具体步骤合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 一、App功能需求及背景 本App的功能是通过输入一个机器码,生成一个注册码
上篇文章主要讲了用VS2015中Xamarin开发跨平台APP上手体验,包括环境搭建和安装体验,以及一些开发上的初体验,时至今日,用Xamarin进行跨平台开发又有一段时间了,今天就具体开发过程中要面对的东西,来说说开发感受吧。 (1)导航的不好处理:上篇也有提及,将原生的activity换成wpf中的from,这样需要自己定义导航,原生的activity管理的页面是...
想要用vs开发安卓app,需要在安装时勾选 Xamarin是一个跨平台开发框架。在这一框架内,开发iOS、Android、Windows Phone和Mac App应用可以不用转到Eclipse 或者额外购买Mac并使用Xcode,而继续在Visual Studio之中使用C#与.NET Framework进行。