Xamarin.Android开发实践(二)

简介: 原文:Xamarin.Android开发实践(二) 一、准备 开始学习本教程前必须先完成该教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_quickstart.html 否则将无法继续。

原文:Xamarin.Android开发实践(二)

一、准备

开始学习本教程前必须先完成该教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_quickstart.html 否则将无法继续。

 

二、界面

1.打开Resources/layout/Main.axml文件,并在Call Button下方继续加入一个按钮,并设置其id为@+id/CallHistoryButton同时设置Text为@string /callHistory(这个其实是一个字符串资源的标识符,后面我们会添加该资源):

 

三、资源

1.打开Resources/values/Strings.xml文件

 

2.并在其中加入一个name为callHistory的字符串资源:

 

3.回到Main.axml可以看到最后一个button显示的字符串变掉了:

 

4.之前的Call button是通过代码的方式禁用的,这次我们将CallHistory Button通过属性该改变:

 

可以看到按钮被禁用了:

 

四、代码

1.右击项目,新建一个名为CallHistoryActivity的活动:

 

2.打开刚才新建的活动,修改该活动的标题名称,继承的类并显示传递过来的字符串数组:

namespace Phoneword_Droid
{
    [Activity(Label = "@string/callHistory")]
    public class CallHistoryActivity : ListActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            //从意图中获取传递过来的参数
            var phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers") ?? new string[0];

            //将字符串数组显示到列表控件中(因为继承的是ListActivity所以整个视图就是一个列表)
            this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);

            //关于ArrayAdapter的第二个参数,其实就是指定列表中每个项的视图,后面我们会通过自定义的方式控制列表的项
        }
    }
}

 

3.回到MainActivity.cs中,既然要显示历史记录,那么自然就必须要能够保存所以我们需要定义一个变量:

     [Activity(Label = "Phoneword_Droid", MainLauncher = true, Icon = "@drawable/icon")]
     public class MainActivity : Activity
     {
         static readonly List<string> phoneNumbers = new List<string>();

 

4.然后还要为callHistoryButton绑定监听事件,以便打开另一个活动(在OnCreate后面继续追加):

Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton);
            callHistoryButton.Click += (e, t) =>
            {
                //指定意图需要打开的活动
                var intent = new Intent(this, typeof(CallHistoryActivity));
                //设置意图传递的参数
                intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
                StartActivity(intent);
            };

 

5.我们缺少一个添加历史记录的方法,这里我们应该将其放入对话框的Call方法中,这样只要拨打了的电话才会进入到历史记录中:

//拨打按钮
                callDialog.SetNeutralButton("Call", delegate
                {
                    //将电话加入到历史记录列表中
                    phoneNumbers.Add(translatedNumber);

                    //如果callHistoryButton的定义在这段代码后面将会出错,所以我们这个时候需要将
                    //Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton); 代码提前
                    callHistoryButton.Enabled = true;

                    //使用意图拨打电话
                    var callIntent = new Intent(Intent.ActionCall);

                    //将需要拨打的电话设置为意图的参数
                    callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
                    
                    StartActivity(callIntent);
                });

 

 

五、运行

 

 

目录
相关文章
|
4天前
|
缓存 Java Android开发
安卓应用性能优化实践
【5月更文挑战第9天】在移动开发领域,应用的性能是决定用户体验的关键因素之一。特别是对于安卓平台,由于设备的多样性,性能优化变得尤为重要。本文将深入探讨针对安卓应用的性能优化策略,从内存管理、多线程处理到布局优化等方面提供实用的技术建议和最佳实践,帮助开发者提升应用的流畅度与响应速度。
|
11天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
13天前
|
移动开发 Java Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第30天】在移动开发领域,随着用户需求的不断增长和设备性能的持续提升,实现流畅且高效的用户体验已成为开发者的首要任务。针对Android平台,Kotlin协程作为一种新兴的异步编程解决方案,以其轻量级线程管理和简洁的代码逻辑受到广泛关注。本文将深入探讨Kotlin协程的概念、优势以及在实际Android应用中的运用,通过实例演示如何利用协程提升应用性能和响应能力,为开发者提供一条构建更高效Android应用的实践路径。
|
13天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
21小时前
|
移动开发 Android开发 开发者
构建高效Android应用:探究Kotlin协程的优化实践
【5月更文挑战第13天】 在移动开发领域,Android平台的流畅体验至关重要。随着Kotlin语言的普及,协程作为其核心特性之一,为异步编程提供了简洁且高效的解决方案。本文将深入探讨Kotlin协程在Android应用中的优化使用,从基本概念到实际案例分析,旨在帮助开发者构建更加响应迅速、性能卓越的应用。我们将通过对比传统线程与协程的差异,展示如何利用协程简化代码结构,并通过优化实践减少资源消耗,提升用户体验。
|
2天前
|
移动开发 监控 Android开发
构建高效Android应用:Kotlin协程的实践与优化
【5月更文挑战第12天】 在移动开发领域,性能与响应性是衡量一个应用程序优劣的关键指标。特别是在Android平台上,由于设备的多样性和系统资源的限制,开发者需要精心编写代码以确保应用流畅运行。近年来,Kotlin语言因其简洁性和功能性而广受欢迎,尤其是其协程特性,为异步编程提供了强大而轻量级的解决方案。本文将深入探讨如何在Android应用中使用Kotlin协程来提升性能,以及如何针对实际问题进行优化,确保应用的高效稳定执行。
|
4天前
|
Java Android开发
Android开发--Intent-filter属性详解
Android开发--Intent-filter属性详解
|
4天前
|
物联网 Java 开发工具
安卓应用开发:打造未来移动生活
【5月更文挑战第10天】 随着科技的飞速发展,智能手机已成为我们日常生活中不可或缺的一部分。作为智能手机市场的两大巨头,安卓和iOS分别占据了一定的市场份额。在这篇文章中,我们将重点关注安卓应用开发,探讨如何利用先进的技术和创新思维,为用户打造更加便捷、智能的移动生活。文章将涵盖安卓应用开发的基本概念、关键技术、以及未来发展趋势等方面的内容。
|
5天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
12 0
|
6天前
|
Android开发 Kotlin
Kotlin开发Android之基础问题记录
Kotlin开发Android之基础问题记录
16 1