Hello, Android Multiscreen: Hızlı Başlangıç
Bu iki bölümlü kılavuz, ikinci bir ekranı işlemek için Telefon word uygulamasını genişletir. Bu arada temel Android Uygulama Yapı Taşları, Android mimarisine daha ayrıntılı bir bakış ile tanıtıldı.
Bu kılavuzun izlenecek yol bölümünde, uygulamayı kullanarak çevrilen sayıların geçmişini izlemek için Telefon word uygulamasına ikinci bir ekran ekleyeceksiniz. Son uygulama, sağdaki ekran görüntüsünde gösterildiği gibi "çevrilmiş" sayıları gösteren ikinci bir ekrana sahip olacaktır:
Buna eşlik eden Derin Dalış , nelerin derlendiğini gözden geçirerek mimari, gezinti ve yol boyunca karşılaşılan diğer yeni Android kavramlarını ele alır.
Gereksinimler
Bu kılavuz Hello, Android'in ayrıldığı yeri seçtiğinden Hello, Android Hızlı Başlangıcı'nın tamamlanmasını gerektirir.
İzlenecek yol
Bu kılavuzda, Telefon word uygulamasına bir Çeviri Geçmişi ekranı ekleyeceksiniz.
Visual Studio'da Telefon word uygulamasını açıp Çözüm Gezgini Main.axml dosyasını düzenleyerek başlayın.
İpucu
Visual Studio'nun daha yeni sürümleri, Android Tasarım Aracı içinde .xml dosyaları açmayı destekler.
Android Tasarım Aracı hem .axml hem de .xml dosyaları desteklenir.
Düzeni güncelleştirme
Araç Kutusu'ndan düğmeyitasarım yüzeyine sürükleyin ve Translated Telefon Word TextView öğesinin altına yerleştirin. Özellikler bölmesinde düğme kimliğini olarak değiştirin@+id/TranslationHistoryButton
Düğmenin Text özelliğini olarak @string/translationHistory
ayarlayın. Android Tasarım Aracı bunu tam anlamıyla yorumlayacaktır, ancak düğme metninin doğru şekilde görünmesini sağlamak için birkaç değişiklik yapacaksınız:
Çözüm Gezgini Kaynaklar klasörünün altındaki değerler düğümünü genişletin ve dize kaynakları dosyasına çift tıklayın Strings.xml:
translationHistory
dize adını ve değerini Strings.xml dosyasına ekleyin ve kaydedin:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="translationHistory">Translation History</string>
<string name="ApplicationName">Phoneword</string>
</resources>
Çeviri Geçmişi düğme metni, yeni dize değerini yansıtacak şekilde güncelleştirilmelidir:
Tasarım yüzeyinde Çeviri Geçmişi düğmesi seçili durumdayken, Özellikler bölmesinde ayarı bulun enabled
ve düğmeyi devre dışı bırakmak için değerini olarak false
ayarlayın. Bu, düğmenin tasarım yüzeyinde koyulaşmasına neden olur:
İkinci etkinliği oluşturma
İkinci ekranı açmak için ikinci bir Etkinlik oluşturun. Çözüm Gezgini, Telefon word projesine sağ tıklayın ve Yeni Öğe Ekle...'yi > seçin:
Yeni Öğe Ekle iletişim kutusunda Visual C# > Etkinliği'ni seçin ve Etkinlik dosyasını TranslationHistoryActivity.cs olarak adlandırın.
TranslationHistoryActivity.cs'daki şablon kodunu aşağıdakilerle değiştirin:
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);
}
}
}
Bu sınıfta program aracılığıyla oluşturup ListActivity
doldurduğunuz için bu Etkinlik için yeni bir düzen dosyası oluşturmanız gerekmez. Bu konu Hello, Android Multiscreen Deep Dive'da daha ayrıntılı olarak ele alınmıştı.
Liste ekleme
Bu uygulama telefon numaralarını toplar (kullanıcının ilk ekranda çevirdiği) ve bunları ikinci ekrana geçirir. Telefon numaraları bir dize listesi olarak depolanır. Listeleri (ve daha sonra kullanılan Amaçlar) desteklemek için, MainActivity.cs en üstüne aşağıdaki using
yönergeleri ekleyin:
using System.Collections.Generic;
using Android.Content;
Ardından, telefon numaralarıyla doldurulabilecek boş bir liste oluşturun.
MainActivity
sınıfı şöyle görünür:
[Activity(Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
static readonly List<string> phoneNumbers = new List<string>();
...// OnCreate, etc.
}
MainActivity
sınıfında, Çeviri Geçmişi düğmesini kaydetmek için aşağıdaki kodu ekleyin (bu satırı bildirimden translateButton
sonra yerleştirin):
Button translationHistoryButton = FindViewById<Button> (Resource.Id.TranslationHistoryButton);
Çeviri Geçmişi düğmesini ayarlamak için yönteminin OnCreate
sonuna aşağıdaki kodu ekleyin:
translationHistoryButton.Click += (sender, e) =>
{
var intent = new Intent(this, typeof(TranslationHistoryActivity));
intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
StartActivity(intent);
};
Telefon numarasını listesine eklemek için Çevir düğmesini güncelleştirinphoneNumbers
. işleyicisi Click
translateButton
aşağıdaki koda benzemelidir:
// 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;
}
};
Hata olmadığından emin olmak için uygulamayı kaydedin ve oluşturun.
Uygulamayı çalıştırma
Uygulamayı öykünücüye veya cihaza dağıtın. Aşağıdaki ekran görüntüleri, çalışan Telefon word uygulamasını gösterir:
Telefon word projesini Mac için Visual Studio açarak ve Çözüm Bölmesi'nden Main.axml dosyasını düzenleyerek başlayın.
İpucu
Visual Studio'nun daha yeni sürümleri, Android Tasarım Aracı içinde .xml dosyaları açmayı destekler.
Android Tasarım Aracı hem .axml hem de .xml dosyaları desteklenir.
Düzeni güncelleştirme
Araç Kutusu'ndan düğmeyitasarım yüzeyine sürükleyin ve Translated Telefon Word TextView öğesinin altına yerleştirin. Özellikler panelinde düğme kimliğini olarak @+id/TranslationHistoryButton
değiştirin:
Düğmenin Text özelliğini olarak @string/translationHistory
ayarlayın. Android Tasarım Aracı bunu tam anlamıyla yorumlayacaktır, ancak düğme metninin doğru şekilde görünmesini sağlamak için birkaç değişiklik yapacaksınız:
Çözüm Bölmesi'ndeki Kaynaklar klasörünün altındaki değerler düğümünü genişletin ve dize kaynakları dosyasına çift tıklayın Strings.xml:
translationHistory
dize adını ve değerini Strings.xml dosyasına ekleyin ve kaydedin:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="translationHistory">Translation History</string>
<string name="ApplicationName">Phoneword</string>
</resources>
Çeviri Geçmişi düğme metni, yeni dize değerini yansıtacak şekilde güncelleştirilmelidir:
Tasarım yüzeyinde Çeviri Geçmişi düğmesi seçili durumdayken, Özellikler Bölmesi'ndeDavranış sekmesini açın ve düğmeyi devre dışı bırakmak için Etkin onay kutusuna çift tıklayın. Bu, düğmenin tasarım yüzeyinde koyulaşmasına neden olur:
İkinci etkinliği oluşturma
İkinci ekranı açmak için ikinci bir Etkinlik oluşturun. Çözüm Bölmesi'nde, Telefon word projesinin yanındaki gri dişli simgesine tıklayın ve Yeni Dosya Ekle...'yi > seçin:
Yeni Dosya iletişim kutusunda Android > Etkinliği'ni seçin, Etkinlik TranslationHistoryActivity
olarak adlandırın ve Ekle'ye tıklayın.
içindeki TranslationHistoryActivity
şablon kodunu aşağıdakilerle değiştirin:
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);
}
}
}
Bu sınıfta program aracılığıyla bir ListActivity
oluşturulur ve doldurulur, bu nedenle bu Etkinlik için yeni bir düzen dosyası oluşturmanız gerekmez. Bu, Hello, Android Multiscreen Deep Dive'da daha ayrıntılı olarak açıklanmıştır.
Liste ekleme
Bu uygulama telefon numaralarını toplar (kullanıcının ilk ekranda çevirdiği) ve bunları ikinci ekrana geçirir. Telefon numaraları bir dize listesi olarak depolanır. Listeleri (ve daha sonra kullanılan Amaçlar) desteklemek için, MainActivity.cs en üstüne aşağıdaki using
yönergeleri ekleyin:
using System.Collections.Generic;
using Android.Content;
Ardından, telefon numaralarıyla doldurulabilecek boş bir liste oluşturun. MainActivity
sınıfı şöyle görünür:
[Activity(Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
static readonly List<string> phoneNumbers = new List<string>();
...// OnCreate, etc.
}
MainActivity
sınıfında Aşağıdaki kodu ekleyerek TranslationHistory History düğmesini kaydedin (bu satırı bildirimin TranslationHistoryButton
arkasına yerleştirin):
Button translationHistoryButton = FindViewById<Button> (Resource.Id.TranslationHistoryButton);
Çeviri Geçmişi düğmesini ayarlamak için yönteminin OnCreate
sonuna aşağıdaki kodu ekleyin:
translationHistoryButton.Click += (sender, e) =>
{
var intent = new Intent(this, typeof(TranslationHistoryActivity));
intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
StartActivity(intent);
};
Telefon numarasını listesine eklemek için Çevir düğmesini güncelleştirinphoneNumbers
. işleyicisi Click
TranslateHistoryButton
aşağıdaki koda benzemelidir:
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;
}
};
Uygulamayı çalıştırma
Uygulamayı öykünücüye veya cihaza dağıtın. Aşağıdaki ekran görüntüleri, çalışan Telefon word uygulamasını gösterir:
İlk çok ekranlı Xamarin.Android uygulamanızı tamamladıktan sonra tebrikler! Şimdi yeni öğrendiğiniz araçları ve becerileri dağıtmanın zamanı geldi. Sırada Hello, Android Multiscreen Deep Dive var.