Udostępnij za pośrednictwem


Witaj, Android Multiscreen: Szybki start

Ten dwuczęściowy przewodnik rozszerza aplikację Telefon word w celu obsługi drugiego ekranu. Po drodze podstawowe bloki konstrukcyjne aplikacji systemu Android są wprowadzane z bardziej szczegółowe informacje na temat architektury systemu Android.

W części przewodnika po tym przewodniku dodasz drugi ekran, aby Telefon word aplikacji, aby śledzić historię liczb przetłumaczonych przy użyciu aplikacji. Ostateczna aplikacja będzie mieć drugi ekran przedstawiający liczby, które zostały "przetłumaczone", jak pokazano na zrzucie ekranu po prawej stronie:

Przykładowe zrzuty ekranu aplikacji

Towarzyszące szczegółowe omówienie tego, co zostało skompilowane i omówiono architekturę, nawigację i inne nowe pojęcia dotyczące systemu Android napotkane po drodze.

Wymagania

Ponieważ ten przewodnik podnosi miejsce, w którym funkcja Hello, system Android odchodzi, wymaga ukończenia przewodnika Szybki start Hello, Android.

Przewodnik

W tym przewodniku dodasz ekran Historia tłumaczenia do aplikacji Telefon word.

Zacznij od otwarcia aplikacji Telefon word w programie Visual Studio i edytowania pliku Main.axml z Eksplorator rozwiązań.

Napiwek

Nowsze wersje programu Visual Studio obsługują otwieranie plików .xml wewnątrz Projektant systemu Android.

Pliki .axml i .xml są obsługiwane w Projektant systemu Android.

Aktualizowanie układu

Z przybornika przeciągnij przycisk na powierzchnię projektową i umieść go poniżej kontrolki Translated Telefon Word TextView. W okienku Właściwości zmień identyfikator przycisku na@+id/TranslationHistoryButton

Przeciągnij nowy przycisk

Ustaw właściwość Text przycisku na @string/translationHistory. Projektant systemu Android zinterpretuje to dosłownie, ale wprowadzisz kilka zmian, aby tekst przycisku był wyświetlany poprawnie:

Ustawianie tekstu przycisku historii tłumaczenia

Rozwiń węzeł wartości w folderze Resources w Eksplorator rozwiązań i kliknij dwukrotnie plik zasobów ciągów, Strings.xml:

Otwórz Strings.xml

translationHistory Dodaj nazwę i wartość ciągu do pliku Strings.xml i zapisz go:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="translationHistory">Translation History</string>
    <string name="ApplicationName">Phoneword</string>
</resources>

Tekst przycisku Historia tłumaczenia powinien zostać zaktualizowany, aby odzwierciedlić nową wartość ciągu:

Przycisk odzwierciedla nową wartość ciągu

Po wybraniu przycisku Historia tłumaczenia na powierzchni projektowej znajdź enabled ustawienie w okienku Właściwości i ustaw jego wartość, aby false wyłączyć przycisk. Spowoduje to, że przycisk stanie się ciemniejszy na powierzchni projektowej:

Przycisk Wyłącz historię tłumaczenia

Tworzenie drugiego działania

Utwórz drugie działanie, aby włączyć drugi ekran. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt Telefon word i wybierz polecenie Dodaj > nowy element...:

Dodawanie nowego pliku

W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Działanie Visual C# > i nadaj plikowi działania nazwę TranslationHistoryActivity.cs.

Zastąp kod szablonu w TranslationHistoryActivity.cs następującym kodem:

using System;
using System.Collections.Generic;
using Android.App;
using Android.OS;
using Android.Widget;
namespace Phoneword
{
    [Activity(Label = "@string/translationHistory")]
    public class TranslationHistoryActivity : ListActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            // Create your application here
            var phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers") ?? new string[0];
            this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);
        }
    }
}

W tej klasie tworzysz element ListActivity i wypełniasz go programowo, więc nie musisz tworzyć nowego pliku układu dla tego działania. Omówiono to bardziej szczegółowo w sekcji Hello, Android Multiscreen Deep Dive.

Dodawanie listy

Ta aplikacja zbiera numery telefonów (przetłumaczone przez użytkownika na pierwszym ekranie) i przekazuje je do drugiego ekranu. Numery telefonów są przechowywane jako lista ciągów. Aby obsługiwać listy (i intencje, które są używane później), dodaj następujące using dyrektywy na początku MainActivity.cs:

using System.Collections.Generic;
using Android.Content;

Następnie utwórz pustą listę, którą można wypełnić numerami telefonów. Klasa MainActivity będzie wyglądać następująco:

[Activity(Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
    static readonly List<string> phoneNumbers = new List<string>();
    ...// OnCreate, etc.
}

MainActivity W klasie dodaj następujący kod, aby zarejestrować przycisk Historia tłumaczenia (umieść ten wiersz po deklaracjitranslateButton):

Button translationHistoryButton = FindViewById<Button> (Resource.Id.TranslationHistoryButton);

Dodaj następujący kod na końcu OnCreate metody, aby połączyć przycisk Historia tłumaczenia:

translationHistoryButton.Click += (sender, e) =>
{
    var intent = new Intent(this, typeof(TranslationHistoryActivity));
    intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
    StartActivity(intent);
};

Zaktualizuj przycisk Tłumacz, aby dodać numer telefonu do listy phoneNumbers. Procedura Click obsługi elementu translateButton powinna przypominać następujący kod:

// Add code to translate number
string translatedNumber = string.Empty;
translateButton.Click += (sender, e) =>
{
    // Translate user's alphanumeric phone number to numeric
    translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);
    if (string.IsNullOrWhiteSpace(translatedNumber))
    {
        translatedPhoneWord.Text = "";
    }
    else
    {
        translatedPhoneWord.Text = translatedNumber;
        phoneNumbers.Add(translatedNumber);
        translationHistoryButton.Enabled = true;
    }
};

Zapisz i skompiluj aplikację, aby upewnić się, że nie ma żadnych błędów.

Uruchamianie aplikacji

Wdróż aplikację w emulatorze lub urządzeniu. Poniższe zrzuty ekranu ilustrują uruchomioną aplikację Telefon word:

Przykładowe zrzuty ekranu

Zacznij od otwarcia projektu Telefon word w Visual Studio dla komputerów Mac i edytowania pliku Main.axml z okienka rozwiązania.

Napiwek

Nowsze wersje programu Visual Studio obsługują otwieranie plików .xml wewnątrz Projektant systemu Android.

Pliki .axml i .xml są obsługiwane w Projektant systemu Android.

Aktualizowanie układu

Z przybornika przeciągnij przycisk na powierzchnię projektową i umieść go poniżej kontrolki Translated Telefon Word TextView. W okienku Właściwości zmień identyfikator przycisku na @+id/TranslationHistoryButton:

Przeciągnij nowy przycisk

Ustaw właściwość Text przycisku na @string/translationHistory. Projektant systemu Android zinterpretuje to dosłownie, ale wprowadzisz kilka zmian, aby tekst przycisku był wyświetlany poprawnie:

Ustawianie tekstu przycisku historii tłumaczenia

Rozwiń węzeł wartości w folderze Resources w okienku rozwiązania i kliknij dwukrotnie plik zasobów ciągu, Strings.xml:

Otwieranie ciągów

translationHistory Dodaj nazwę i wartość ciągu do pliku Strings.xml i zapisz go:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="translationHistory">Translation History</string>
    <string name="ApplicationName">Phoneword</string>
</resources>

Tekst przycisku Historia tłumaczenia powinien zostać zaktualizowany, aby odzwierciedlić nową wartość ciągu:

Przycisk odzwierciedla nową wartość ciągu

Po wybraniu przycisku Historia tłumaczenia na powierzchni projektowej otwórz kartę Zachowanie w okienku właściwości i kliknij dwukrotnie pole wyboru Włączone , aby wyłączyć przycisk. Spowoduje to, że przycisk stanie się ciemniejszy na powierzchni projektowej:

Przycisk Wyłącz historię tłumaczenia

Tworzenie drugiego działania

Utwórz drugie działanie, aby włączyć drugi ekran. W okienku rozwiązania kliknij szarą ikonę koła zębatego obok projektu Telefon word i wybierz pozycję Dodaj > nowy plik...:

W oknie dialogowym Nowy plik wybierz pozycję Działanie systemu Android>, nadaj nazwę DziałanieTranslationHistoryActivity, a następnie kliknij przycisk Dodaj.

Zastąp kod szablonu w pliku TranslationHistoryActivity następującym kodem:

using System;
using System.Collections.Generic;
using Android.App;
using Android.OS;
using Android.Widget;
namespace Phoneword
{
    [Activity(Label = "@string/translationHistory")]
    public class TranslationHistoryActivity : ListActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            // Create your application here
            var phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers") ?? new string[0];
            this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);
        }
    }
}

W tej klasie ListActivity element jest tworzony i wypełniany programowo, więc nie trzeba tworzyć nowego pliku układu dla tego działania. Bardziej szczegółowo wyjaśniono w artykule Hello, Android Multiscreen Deep Dive (Szczegółowe omówienie funkcji Hello, Android Multiscreen).

Dodawanie listy

Ta aplikacja zbiera numery telefonów (przetłumaczone przez użytkownika na pierwszym ekranie) i przekazuje je do drugiego ekranu. Numery telefonów są przechowywane jako lista ciągów. Aby obsługiwać listy (i intencje, które są używane później), dodaj następujące using dyrektywy na początku MainActivity.cs:

using System.Collections.Generic;
using Android.Content;

Następnie utwórz pustą listę, którą można wypełnić numerami telefonów. Klasa MainActivity będzie wyglądać następująco:

[Activity(Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
    static readonly List<string> phoneNumbers = new List<string>();
    ...// OnCreate, etc.
}

MainActivity W klasie dodaj następujący kod, aby zarejestrować przycisk Historia translacji (umieść ten wiersz po deklaracjiTranslationHistoryButton):

Button translationHistoryButton = FindViewById<Button> (Resource.Id.TranslationHistoryButton);

Dodaj następujący kod na końcu OnCreate metody, aby połączyć przycisk Historia tłumaczenia:

translationHistoryButton.Click += (sender, e) =>
{
    var intent = new Intent(this, typeof(TranslationHistoryActivity));
    intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
    StartActivity(intent);
};

Zaktualizuj przycisk Tłumacz, aby dodać numer telefonu do listy phoneNumbers. Procedura Click obsługi elementu TranslateHistoryButton powinna przypominać następujący kod:

translateButton.Click += (sender, e) =>
{
    // Translate user's alphanumeric phone number to numeric
    translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);
    if (string.IsNullOrWhiteSpace(translatedNumber))
    {
        translatedPhoneWord.Text = "";
    }
    else
    {
        translatedPhoneWord.Text = translatedNumber;
        phoneNumbers.Add(translatedNumber);
        translationHistoryButton.Enabled = true;
    }
};

Uruchamianie aplikacji

Wdróż aplikację w emulatorze lub urządzeniu. Poniższe zrzuty ekranu ilustrują uruchomioną aplikację Telefon word:

Przykładowe zrzuty ekranu

Gratulujemy ukończenia pierwszej aplikacji platformy Xamarin.Android z wieloma ekranami! Teraz nadszedł czas, aby odciąć narzędzia i umiejętności, które właśnie znasz — następnym krokiem jest funkcja Hello, Android Multiscreen Deep Dive.