65.9K
CodeProject 正在变化。 阅读更多。
Home

入门 Xamarin Android 单视图应用

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (11投票s)

2018 年 5 月 1 日

CPOL

10分钟阅读

viewsIcon

16624

downloadIcon

712

创建 Xamarin Android 单视图应用。

引言

 * 请观看我的 YouTube 视频,了解 Xamarin Android 单视图应用入门

在本文中,我们将详细介绍如何创建 Xamarin Android 单视图应用程序。您可以开发跨平台的 Xamarin 应用程序,也可以使用 Xamarin.Forms;或者使用 Xamarin.iOSXamarin.Android 开发原生 Android 和 iOS 应用。本文将介绍如何创建原生 Android 应用,为此我们选择了 Xamarin Android 单视图应用。

在这个移动应用中,我们将学习如何

  • 使用 TextClock 显示当前时间
  • 创建通知以显示点击次数
  • 将音乐 (MP3) 文件添加到资源
  • 播放添加的 MP3 文件的歌曲
  • 停止播放歌曲
  • 提高手机音量
  • 降低手机音量

在这个移动应用中,我们将添加 TextClock 来显示当前时间,并添加五个按钮。

  • 在第一个按钮的点击事件中,我们将在顶部显示一个通知,其中包含按钮的点击次数。
  • 在第二个按钮的点击事件中,我们将播放从资源中添加的 MP3 音乐。
  • 在第三个按钮点击时,我们将停止播放音乐。
  • 在第四个按钮点击时,我们可以提高正在播放歌曲的音量。
  • 在第五个按钮点击时,我们可以降低声音的音量。

背景

请确保您已在计算机上安装了所有先决条件。如果没有,请逐一下载并安装所有软件。

首先,请从这个 链接 下载并安装 Visual Studio 2017。

确保您已安装“.NET 的移动开发”工作负载。

Using the Code

步骤 1:创建您的 Xamarin  

安装 Visual Studio 2017 后,点击开始,然后点击程序,选择Visual Studio 2017 - 点击Visual Studio 2017。点击新建,然后点击项目,选择Visual C#Android,然后选择单视图应用 (Android)。输入您的项目名称并点击。

步骤 2:Xamarin Android 项目结构

参考文献

References 文件夹包含默认的 .NET 程序集,如 SystemSystem.core。对于 Xamarin Android,最重要的引用是 Mono.Android。默认情况下,此引用将添加到项目中,如图所示。此 Mono.Android 引用将用于与我们的 C# 代码和 Android API 进行交互。

MainActivity

在我们的 .NET 应用程序中,默认会运行 Main 方法,应用程序将从这里开始执行。但在 Android 应用中,我们有一系列 Activity,每个 Activity 用于单个视图。当我们创建 Xamarin Android 应用程序时,默认会创建 MainActivity.cs。在这里,我们将使用此 Activity 来运行我们的应用。所有 Activity 都将继承自 Activity 类,当我们打开 MainActivity.cs 文件时可以看到这一点。在我们的 MainActivity 中,我们可以设置运行应用时需要显示的视图。在这里,我们可以看到默认情况下,主视图已添加到 SetContentView

如何设置默认主 Activity(当有多个 Activity 时)?

正如我们所说,在我们的 Xamarin.Android 应用中,可以拥有多个 Activity,并且需要一个主 Activity 在运行应用时默认显示。如果我们有一个以上的 Activity,并且需要将其他 Activity 设置为主 Activity,那么可以在该 Activity 代码的顶部添加“MainLauncher = true”,而为其他 Activity 设置为 false

您也可以从 Activity 设置应用的 Label(标题),这里我们将标题设置为“Shanu Music App”,同时我们还可以设置应用的 Icon

Activity 的生命周期

  • OnCreate() - > Activity 创建时
  • OnStart() - > Activity 启动时
  • OnResume() - > Activity 将开始与用户交互时调用。
  • OnPause() - > Activity 对用户不可见(正在后台工作)
  • OnStop() - > Activity 对用户不可用
  • OnDestroy() - > Activity 被销毁之前

在我们的演示中,默认情况下有 OnCreate(),我们将使用它来显示应用运行时需要看到的视图,并通过按钮点击事件来执行我们需要执行的操作。

视图

Activity 和 Views 是 Xamarin Android 应用的重要组成部分。正如我们所见,Activity 用于显示我们的 View 并编写事件代码,而 View 用于设计我们的应用。

Views 位于 ResourcesLayout 文件夹内。我们可以看到,默认情况下 Main.axml 文件已添加到我们的 layout 文件夹中。视图是以“axml”文件的形式存在的,它完全是 XML 代码。

当我们打开 Main.axml 文件时,可以看到“设计器”和“源代码”部分。我们可以根据需要从“工具箱”拖放控件来设计我们的 Android 应用。当我们点击“源代码”部分时,可以看到控件以 XML 代码的形式添加到我们的应用中,如下所示:

Values / Strings.XML

我们可以看到,在我们的 Button 文本中,标题添加为“android:text="@string/hello”,这里的 “="@string/hello” 表示文本将从 Strings.XML 加载。

hellostring 将从 Resources \ Values\ 目录下的 Strings.XMl 文件中添加。

我们可以根据需要更改或添加 string

Resource.Designer

我们在 View 中添加的所有资源,或者我们在 String.XML 文件中添加的文本,都会在解决方案的 Resource.Designer 文件中生成唯一的数字。

希望您对 Xamarin Android 应用的基本工作原理有所了解,现在让我们专注于如何添加更多控件来制作我们的简单音乐应用。

步骤 3:使用代码

使用 TextClock 显示时间

我们将 TextClock 控件添加到我们的应用中,并使用以下代码进行设计。这里我们将格式设置为 12 小时制,并设置了字体大小和颜色。

<TextClock xmlns:p2="http://xamarin.com/mono/android/designer-default"
        android:format12Hour="hh:mm:ss a"
        android:layout_width="match_parent"
        android:layout_height="47.5dp"
        android:id="@+id/textClock1"
        android:gravity="center_horizontal"
        android:textColor="#ffccff"
        android:textSize="40sp"
        android:layout_marginBottom="4.5dp" />

当我们运行应用程序时,可以在模拟器中看到输出,时间将显示在我们的应用程序中,并且时间将自动显示当前的时间和秒。

显示通知

现在我们将添加一个按钮,在按钮点击事件中,我们将显示一个顶部通知,其中包含用户点击按钮的次数。

<Button
        android:id="@+id/myButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"
       android:background="@android:drawable/alert_dark_frame" />

我们需要将 Xamarin.Android.Support v4 包添加到我们的 APP 中。右键单击解决方案,点击“管理 NuGet 程序包”,搜索 Xamarin.Android.Support.v4,然后点击“安装”。

我们可以看到新的 Xamarin Android Support DLL 已添加到我们的项目中。

MainActivity.cs 文件中,现在我们将为上述设计创建按钮点击事件。首先,我们导入以下引用到我们的 MainActivity.cs 文件中:

using Android.Support.V4.App;
using Android.Support.V4.View;
using Java.Interop;
using Android.Views.Animations;

MainActivity.csonCreate 方法中,我们将创建按钮点击事件以在我们的移动设备上显示通知消息。为此,我们创建 NotificationCompact 的对象,设置通知消息的 TitleText,并在 Text 中设置计数器值,以显示从通知中点击了多少次按钮。

Button btn = FindViewById<Button>(Resource.Id.myButton);

            btn.Click += delegate {
                var notification = new NotificationCompat.Builder(this)
                            .SetContentTitle("Shanu - Notifications")
                            .SetContentText("Clicked " + count++ + " times!")

                            .SetSmallIcon(Android.Resource.Drawable.DialogFrame)
                            .SetGroup("testGroup").Build();

                var manager = NotificationManagerCompat.From(this);
                manager.Notify(1, notification);
                btn.Text = "Check Notification!";

代码将如下所示

通知输出

当我们运行应用程序时,可以在模拟器中看到带有 Button 的输出。

当我们点击 Button 时,可以在顶部看到通知,并显示点击次数。

播放歌曲

首先,我们将我们喜欢的 MP3 歌曲添加到 Resource 文件夹中。在这个简单的演示中,我们添加了一个 mp3 文件用于播放。

创建 Raw 文件夹

我们需要在 Resource 文件夹中创建一个名为 raw 的文件夹,并将所有 mp3 文件添加到此文件夹。要添加 mp3 文件,请右键单击 raw 文件夹,选择“添加现有项”,然后选择您需要播放的 mp3 文件。这里,我们已将一个 mp3 文件添加到我们的 raw 资源文件夹中。

接下来,为 MediaPlayer 创建一个对象。

MediaPlayer mp;

为了添加 MediaPlayer,我们将以下引用导入到我们的 MainActivity.cs 文件中:

using Android.Media;

现在我们将添加一个按钮,在按钮点击事件中,我们将从新添加的 mp3 资源文件中播放音乐。
在我们的 Main.axml 文件中,设计您的按钮。

<Button
        android:text="Play Song"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        android:background="@android:drawable/alert_dark_frame" />

在我们的 MainActivity.cs 中为 **播放歌曲** 按钮添加点击事件,并添加以下代码来播放您的音乐。 

    // to Play the Song
            Button btn1 = FindViewById<Button>(Resource.Id.button1);
            btn1.Click += delegate
            {
                mp = MediaPlayer.Create(this, Resource.Raw.Kannalanae);
                mp.Start();

                btn1.Text = "Song is Playing Now enjoy :)"; 
            };

播放歌曲输出

当我们运行应用程序时,可以在模拟器中看到输出,并且可以在我们的应用中看到新添加的 **播放歌曲** 按钮。

当用户点击 **播放歌曲** 按钮时,他们可以听到他们添加的歌曲。

停止歌曲

要停止播放的歌曲,我们将创建一个新按钮,在按钮点击事件中,我们将编写代码来停止播放的歌曲。

现在我们将添加一个按钮,在按钮点击事件中,我们将编写代码来停止播放的音乐。

在我们的 Main.axml 文件中,设计您的停止音乐的按钮。

<Button
        android:text="Stop Song"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button2"
        android:background="@android:drawable/alert_dark_frame" />

在我们的 MainActivity.cs 中为停止播放音乐的按钮添加点击事件,并添加以下代码来停止播放的音乐。  

    // to Stop Playing  Song
            Button btn2 = FindViewById<Button>(Resource.Id.button2);
            btn2.Click += delegate
            {
                if (mp != null)
                    if (mp.IsPlaying)
                {
                    mp.Stop();
                    btn2.Text = "Song Playing Stopped :( ";
                }
                
            };

停止音乐输出

当我们运行应用程序时,可以在模拟器中看到输出,并且可以在我们的应用中看到新添加的 **停止歌曲** 按钮。

当用户点击 **停止歌曲** 按钮时,正在播放的歌曲将停止。

提高音量

为了提高手机设备或模拟器的音量,我们将创建一个新按钮,在按钮点击事件中,我们将编写代码来提高音量。

现在我们将添加一个按钮,在按钮点击事件中,我们将编写代码来提高音量。

在我们的 Main.axml 文件中,设计您的提高音量的按钮。

<Button
        android:text="Volume ++"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:background="@android:drawable/alert_dark_frame" />

在我们的 MainActivity.cs 中为提高音量添加按钮点击事件,并添加以下代码来提高音量。在这里,我们将使用 AudioManager 并将音量设置为 Android.Media.Adjust.Raise

    //Increase the Mobile Volume
            AudioManager audios =    (AudioManager)GetSystemService(Context.AudioService);
 
            Button btn3 = FindViewById<Button>(Resource.Id.button3);
            btn3.Click += delegate
            {
                audios.AdjustStreamVolume(Android.Media.Stream.Music,
                Android.Media.Adjust.Raise, Android.Media.VolumeNotificationFlags.PlaySound); 
            };

音量增加输出

当我们运行应用程序时,可以在模拟器中看到输出,并且可以在我们的应用中看到新添加的音量 ++ 按钮。此时,媒体音量设置较低。

当用户点击音量 ++ 按钮时,音量将逐渐提高,现在媒体音量已设置为最大声。

降低音量

为了降低手机设备或模拟器的音量,我们将创建一个新按钮,在按钮点击事件中,我们将编写代码来降低音量。

现在我们将添加一个按钮,在按钮点击事件中,我们将编写代码来降低音量。

在我们的 Main.axml 文件中,设计您的提高音量的按钮。

<Button
        android:text="Volume --"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button4"
        android:background="@android:drawable/alert_dark_frame" />

在我们的 MainActivity.cs 中为降低音量添加按钮点击事件,并添加以下代码来降低音量。在这里,我们将使用 AudioManager 并将音量设置为 Android.Media.Adjust.Lower

            //Decrease the Mobile Volume
            Button btn4 = FindViewById<Button>(Resource.Id.button4);
            btn4.Click += delegate
            {
                audios.AdjustStreamVolume(Android.Media.Stream.Music,
                Android.Media.Adjust.Lower, Android.Media.VolumeNotificationFlags.PlaySound); 
            }; 

音量降低输出

当我们运行应用程序时,可以在模拟器中看到输出,并且可以在我们的应用中看到新添加的音量 -- 按钮。此时,媒体音量设置较高。

当用户点击音量 -- 按钮时,音量将逐渐降低,现在媒体音量已设置为低音量。

关注点

希望您喜欢阅读这篇文章。下载源代码并根据您的需要进行修改,很快我们将看到更多与开发 Xamarin 移动应用相关的文章。

历史

  • 2018 年 5 月 1 日:初始版本 - ShanuSingleViewAPP.zip
© . All rights reserved.