Xamarin.Android快速入门

简介: 原文:Xamarin.Android快速入门一、准备工作 1.创建一个空的解决方案,并命名为Phoneword     2.右击解决方案 新建-》新建项目 并命名为Phoneword_Droid   二、界面 1.
原文: Xamarin.Android快速入门

一、准备工作

1.创建一个空的解决方案,并命名为Phoneword

 

 

2.右击解决方案 新建-》新建项目 并命名为Phoneword_Droid

 

二、界面

1.打开Resources文件夹-》layout文件夹双击打开Main.axml

 

2.然后将会出现下面的界面

 

3.接着我们选择这个Button并删除(按下Delete),并从左边的工具箱中拖拽一个 Text(Large) 控件到该界面中,如下所示:

 

4.同时还要通过属性窗口修改Text的值:

 

5.紧接着拖拽一个Plain Text控件到之前的Text控件下方,并修改Text属性为1-855-XAMARIN。接着拖拽一个Button控件到Plain Text控件下方:

 

同时修改Button控件的id和text:

 

6.接着再拖拽一个Button控件到TranslateButton控件下方,并设置该id属性为@+id/CallButton以及Text为Call,最终效果如下:

 

三、代码

1.右击该项目,添加-》新建项,选择类,并设置类的名称为PhoneTranslator,然后在其中写入如下代码(这些代码的重要功能是将字符串转换成正确格式的电话号码):

 1 namespace Phoneword_Droid
 2 {
 3     public static class PhoneTranslator
 4     {
 5         public static string ToNumber(string raw)
 6         {
 7             if (string.IsNullOrWhiteSpace(raw))
 8                 return "";
 9             else
10                 raw = raw.ToUpperInvariant();
11 
12             var newNumber = new StringBuilder();
13             foreach (var c in raw)
14             {
15                 if (" -0123456789".Contains(c))
16                     newNumber.Append(c);
17                 else
18                 {
19                     var result = TranslateToNumber(c);
20                     if (result != null)
21                         newNumber.Append(result);
22                 }
23             }
24             return newNumber.ToString();
25         }
26 
27         public static int? TranslateToNumber(char c)
28         {
29             if ("ABC".Contains(c))
30                 return 2;
31             else if ("DEF".Contains(c))
32                 return 3;
33             else if ("GHI".Contains(c))
34                 return 4;
35             else if ("JKL".Contains(c))
36                 return 5;
37             else if ("MNO".Contains(c))
38                 return 6;
39             else if ("PQRS".Contains(c))
40                 return 7;
41             else if ("TUV".Contains(c))
42                 return 8;
43             else if ("WXYZ".Contains(c))
44                 return 9;
45             return null;
46         }
47     }
48 }
View Code

 

 

然后我们打开MainActivity.cs文件:

 

2.然后我们首先要做的是通过FindViewById获取这些控件,OnCreate中代码如下所示(需要先成功生成一次,防止Resource.Id下没有对应的控件id):

1             base.OnCreate(bundle);
2             SetContentView(Resource.Layout.Main);
3             EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
4             Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
5             Button callButton = FindViewById<Button>(Resource.Id.CallButton);
6 
7             callButton.Enabled = false;
View Code

 

 

3.然后我们需要给translateButton绑定监听事件,判断输入的字符是否为有效的电话号码,如果是则启用CallButton否则不启用,同时还修改CallButton的文字(在上面代码后面追加):

 1             string translatedNumber = string.Empty;
 2             translateButton.Click += (object sender, EventArgs e) =>
 3             {
 4                 translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text);
 5                 if (String.IsNullOrWhiteSpace(translatedNumber))
 6                 {
 7                     callButton.Text = "Call";
 8                     callButton.Enabled = false;
 9                 }
10                 else
11                 {
12                     callButton.Text = "Call" + translatedNumber;
13                     callButton.Enabled = true;
14                 }
15             };
View Code

 

 

4.最后我们需要绑定callButton的监听事件,以便能够在用户点击后弹出对话框确认用户是否需要拨打,并拨打电话(依然是接着上面的追加):

 1             callButton.Click += (s, e) =>
 2             {
 3                 //对话框
 4                 var callDialog = new AlertDialog.Builder(this);
 5 
 6                 //对话框内容
 7                 callDialog.SetMessage("Call" + translatedNumber + "?");
 8 
 9                 //拨打按钮
10                 callDialog.SetNeutralButton("Call", delegate
11                 {
12                     //使用意图拨打电话
13                     var callIntent = new Intent(Intent.ActionCall);
14 
15                     //将需要拨打的电话设置为意图的参数
16                     callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
17                     
18                     StartActivity(callIntent);
19                 });
20 
21                 //取消按钮
22                 callDialog.SetNegativeButton("Cancel", delegate { });
23                 
24                 //显示对话框
25                 callDialog.Show();
26             };
View Code

 

四、运行

还需要添加对应的权限

 

 

 

 

笔者这里采用的是x86下的模拟机,并不是ARM下,关于如何开启x86下的模拟机需要的人可以留言(需要你的CPU支持VT-X),当然速度跟你的真机一样。

 

目录
相关文章
|
8天前
|
消息中间件 网络协议 Java
Android 开发中实现数据传递:广播和Handler
Android 开发中实现数据传递:广播和Handler
13 1
|
9天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
32 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
11天前
|
Unix Linux Shell
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
在Linux环境下交叉编译Android所需的FFmpeg so库,首先下载`android-ndk-r21e`,然后解压。接着,上传FFmpeg及相关库(如x264、freetype、lame)源码,修改相关sh文件,将`SYSTEM=windows-x86_64`改为`SYSTEM=linux-x86_64`并删除回车符。对x264的configure文件进行修改,然后编译x264。同样编译其他第三方库。设置环境变量`PKG_CONFIG_PATH`,最后在FFmpeg源码目录执行配置、编译和安装命令,生成的so文件复制到App工程指定目录。
43 9
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
|
2月前
|
API 开发工具 Android开发
iOS 和 Android 平台的开发有哪些主要区别?
iOS与Android开发区别:iOS用Objective-C/Swift,App Store唯一下载渠道;Android用Java/Kotlin,多商店发布(如Google Play、华为市场)。设计上,iOS简洁一致,Android灵活可定制。开发工具,iOS用Xcode,Android用Android Studio。硬件和系统多样性,iOS统一,Android复杂。权限管理、审核流程及API各有特点,开发者需依据目标平台特性进行选择。
30 3
|
29天前
|
机器学习/深度学习 调度 Android开发
安卓应用开发:打造高效通知管理系统
【4月更文挑战第2天】 在移动操作系统中,通知管理是影响用户体验的关键因素之一。本文将探讨如何在安卓平台上构建一个高效的通知管理系统,包括服务、频道和通知的优化策略。我们将讨论最新的安卓开发工具和技术,以及如何通过这些工具提高通知的可见性和用户互动性,同时确保不会对用户造成干扰。
|
1天前
|
机器学习/深度学习 安全 数据处理
构建未来:基于Android的智能家居控制系统开发
【4月更文挑战第29天】 随着物联网技术的蓬勃发展,智能家居已成为现代技术革新的重要领域。本文将深入探讨基于Android平台的智能家居控制系统的设计和实现,旨在提供一种用户友好、高度集成且功能丰富的解决方案。通过利用Android设备的广泛普及和其强大的处理能力,结合最新的无线通讯技术和人工智能算法,我们旨在打造一个可靠、易用且具有高度可定制性的智能家居控制环境。文中不仅详细阐述了系统架构、关键技术选型以及界面设计,还对可能遇到的安全挑战进行了分析,并提出了相应的解决策略。
|
1天前
|
监控 Java Android开发
安卓应用开发:打造高效用户界面的五大策略
【4月更文挑战第29天】 在安卓应用开发的世界中,构建一个既美观又高效的用户界面(UI)对于吸引和保留用户至关重要。本文将深入探讨五种策略,这些策略可以帮助开发者优化安卓应用的UI性能。我们将从布局优化讲起,逐步过渡到绘制优化、内存管理、异步处理以及最终的用户交互细节调整。通过这些实践技巧,你将能够为用户提供流畅而直观的体验,确保你的应用在竞争激烈的市场中脱颖而出。
|
3天前
|
机器学习/深度学习 搜索推荐 Android开发
【专栏】安卓应用开发:构建高效用户界面的实用指南
【4月更文挑战第27天】本文介绍了构建高效安卓用户界面的指南,分为设计原则和技巧两部分。设计原则包括一致性、简洁性和可访问性,强调遵循安卓系统规范,保持界面简洁,考虑不同用户需求。技巧方面,建议合理布局、优化图标和图片、运用动画效果、提供个性化设置及优化性能。随着技术发展,未来安卓应用开发将融合更多智能化和个性化元素,开发者需持续学习新技术,提升用户体验。
|
6天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
21天前
|
设计模式 API Android开发
安卓应用开发:打造高效的通知管理系统
【4月更文挑战第10天】 在移动应用的海洋中,通知管理是用户体验的冰山一角,却能决定应用的存亡。本文将详细探讨如何在安卓平台上构建一个既高效又灵活的通知管理系统,涵盖从基础理论到实际代码实现的全过程。我们将分析通知系统的工作原理,探索最新的安卓通知API特性,并提供一套实用的设计模式和最佳实践,以帮助开发者优化用户的通知体验。