Android 3.0 API'leri

API Düzeyi: 11

Android 3.0 platformu (HONEYCOMB), geliştiriciler için Android SDK'sı'nın indirilebilir bir bileşeni olarak kullanılabilir. İndirilebilir platform, bir Android kitaplığı ve sistemi içerir. bir dizi emülatör görünümü ve daha fazlası bulunuyor. İndirilebilir platformda harici kitaplıklar bulunmaz.

Geliştiriciler, Android 3.0 platformuna Android SDK için indirilebilir bileşen. İndirilebilir platform şunları içerir: Android kitaplığı ve sistem görüntüsünün yanı sıra bir dizi emülatör görünümü ve daha fazla. Android 3.0 ile uygulama geliştirmeye veya test etmeye başlamak için Platformu SDK'nıza indirmek için Android SDK Yöneticisi'ni kullanın.

API'ye Genel Bakış

Aşağıdaki bölümlerde, önceki sürüme kıyasla Android 3.0'taki yeni özellikler ve çerçeve API'sindeki değişiklikler de dahil olmak üzere geliştiriciler için Android 3.0'taki yeniliklere teknik bir genel bakış sunulmaktadır.

Parçalar

Fragment, bir etkinliğin farklı öğelerini kendi kullanıcı arayüzlerini ve yaşam döngülerini tanımlayan bağımsız modüllere ayırmanıza olanak tanıyan yeni bir çerçeve bileşenidir. Bir parçasını görmek için Fragment sınıfını genişletmeli ve birden fazla yaşam döngüsü uygulamanız gerekir. Activity ile benzer şekilde geri çağırma yöntemleri kullanabilirsiniz. Ardından, her bölmenin kendi yaşam döngüsünü ve kullanıcı girişlerini yönettiği çok bölmeli bir kullanıcı arayüzü oluşturmak için birden fazla parçayı tek bir etkinlikte birleştirebilirsiniz.

Ayrıca, bir parçayı kullanıcı arayüzü sağlamadan kullanabilir ve bunun yerine bu parçayı bir çalışan olarak kullanabilirsiniz (örneğin, yalnızca indirme işlemi sırasında gerçekleşen bir indirme işleminin ilerlemesini yönetmek için) çalışıyor.

Buna ek olarak:

  • Parçalar bağımsızdır ve birden fazla etkinlikte yeniden kullanabilirsiniz.
  • Etkinlik içinde parça ekleyebilir, kaldırabilir, değiştirebilir ve parçaları canlandırabilirsiniz.
  • Etkinlik tarafından yönetilen bir geri yığına parça ekleyebilirsiniz. Böylece, parçalar değiştikçe parçaların durumunu koruyabilir ve kullanıcının farklı durumlar arasında geriye doğru gezinmesine izin verebilirsiniz.
  • Sağlayarak alternatif düzenler sunuyorsanız parçaları ekran boyutunda ve yönünde
  • Parçalar, kapsayıcı etkinliklerine doğrudan erişebilir ve etkinliğin İşlem Çubuğu (sonraki bölümde açıklanmıştır)

Etkinliğinizdeki parçaları yönetmek amacıyla, parçalarla etkileşim için çeşitli API'ler sağlayan FragmentManager kullanmanız gerekir. Örneğin, geri yüklemek için etkinlikteki parçaları bulmak ve arka yığından parçaları patlatmak olarak önceki durum.

Parça ekleme veya kaldırma gibi bir işlem gerçekleştirmek için FragmentTransaction oluşturmanız gerekir. Ardından add() remove() veya replace() gibi yöntemleri çağırabilirsiniz. İşlem için yapmak istediğiniz tüm değişiklikleri uyguladıktan sonra commit() işlevini çağırmanız gerekir. Sistem, parça işlemini etkinliğe uygular.

Parçaları kullanma hakkında daha fazla bilgi için Parçalar dokümanlarını okuyun. API Demoları uygulamasında da çeşitli örnekler mevcuttur.

İşlem Çubuğu

İşlem çubuğu, etkinlik penceresinin üst kısmındaki geleneksel başlık çubuğunun yerini alır. Sol köşede uygulama logosunu içerir ve Seçenekler Menüsü'ndeki öğeler için yeni bir arayüz sağlar. Ayrıca işlem çubuğuyla şunları yapabilirsiniz:

  • Menü öğelerini doğrudan işlem çubuğuna "işlem öğeleri" olarak ekleyin.

    Menü öğesi için XML bildiriminize "ifRoom" değerini içeren android:showAsAction özelliğini ekleyin. Yeterli alan olduğunda menü öğesi doğrudan işlem çubuğunda görünür. Aksi takdirde öğe, işlem çubuğunun sağ tarafındaki menü simgesine gösterilen taşma menüsüne yerleştirilir.

  • Bir işlem öğesini bir widget'la (ör. arama kutusu) değiştirerek "işlem görünümü" oluşturun.

    Menü öğesinin XML bildirimine android:actionViewLayout özelliğini ekleyin bir düzen kaynağı veya android:actionViewClass özelliğiyle widget'ını tıklayın. (Öğenin işlem çubuğunda görünmesi için android:showAsAction özelliğini de belirtmeniz gerekir.) İşlem Çubuğunda yeterli alan yoksa ve öğe, normal bir menü öğesi gibi davranır ve widget'ı göstermez.

  • Uygulama logosuna bir işlem ekleme ve logoyu özel bir logoyla değiştirme

    Uygulama logosuna otomatik olarak android.R.id.home kimliği atanır. Bu özellik, dokunulduğunda etkinliğinizin onOptionsItemSelected() geri çağırmasına iletir. Geri aramanızda bu kimliğe yanıt vermeniz yeterlidir uygulamanızın "ana sayfasına" gitmek gibi bir işlem gerçekleştirmek için yöntem etkinliği'ne dokunun.

    Simgeyi logoyla değiştirmek için manifest dosyasında android:logo özelliğini kullanarak uygulama logonuzu belirtin, ardından etkinliğinizde setDisplayUseLogoEnabled(true) işlevini çağırın.

  • Parçaların arka yığınında geriye gitmek için içerik haritası ekleme
  • Parçalar arasında gezinmek için sekmeler veya bir açılır liste ekleyin
  • İşlem Çubuğunu temalar ve arka planlarla özelleştirin

İşlem çubuğu, yeni holografik temayı kullanan tüm uygulamalarda standarttır. android:minSdkVersion veya android:targetSdkVersion'i "11" olarak ayarlarsanız da standarttır.

İşlem Çubuğu hakkında daha fazla bilgi için İşlem Çubuğu dokümanlarını okuyun. API Demoları uygulamasında da çeşitli örnekler mevcuttur.

Sistem panosu

Uygulamalar artık sistem genelinde veri (metinden çok daha fazlası) kopyalayıp yapıştırabilir panoya ekleyebilirsiniz. Kırpılmış veriler düz metin, URI veya amaç olabilir.

Kullanıcının kopyalamasını istediğiniz verilere sistem erişimi sağlayarak Kullanıcı, uygulamanızdan karmaşık bir içerik (resim veya veri yapısı gibi) kopyalayabilir ve bu içerik türünü destekleyen başka bir uygulamaya yapıştırabilirsiniz.

Panoyu kullanmaya başlamak için genel ClipboardManager nesnesini alın getSystemService(CLIPBOARD_SERVICE) numaralı telefonu arayarak.

Bir öğeyi panoya kopyalamak için, bir veya daha fazla ClipData.Item içeren yeni bir ClipData nesnesi oluşturmanız gerekir her biri tek bir varlığı açıklayan nesnelere işaret eder. Yalnızca bir ClipData.Item içeren bir ClipData nesnesi oluşturmak için newPlainText(), newUri() ve newIntent() gibi yardımcı yöntemlerden birini kullanabilirsiniz. Bu yöntemler, sağladığınız ClipData.Item ile önceden yüklenmiş bir ClipData nesnesi döndürür.

ClipData öğesini panoya eklemek için ClipboardManager örneğiniz için setPrimaryClip() öğesine iletin.

Daha sonra, ClipboardManager üzerinde getPrimaryClip() çağırarak panodaki bir dosyayı okuyabilirsiniz (yapıştırmak için). Aldığınız ClipData ile şunları yapabilirsiniz: Karmaşık olmalı ve panodaki veri türünü gerçekten işleyebileceğinizden emin olmalısınız. lütfen kontrol edin.

Panoda, kırpılmış verilerin yalnızca bir parçası (ClipData) nesnesidir), ancak bir ClipData birden fazla ClipData.Item içerebilir.

Daha fazla bilgi için ve Yapıştırma dokümanlarını sağlamanıza olanak tanır. Ayrıca API Demos örneğinde kopyalama ve yapıştırma işleminin basit bir uygulamasını, Not Defteri örneğinde ise daha kapsamlı bir uygulamasını görebilirsiniz.

Sürükleme ve bırakma

Yeni API'ler, uygulamanızın kullanıcı arayüzündeki sürükle ve bırak işlemlerini basitleştirir. Sürme işlemi, bir ClipDatanesnesinde taşınan bir tür verinin bir yerden başka bir yere aktarılmasıdır. Sürükleme işleminin başlangıç ve bitiş noktası bir View olduğundan, sürükle ve bırak işlemlerini doğrudan yöneten API'ler View sınıfındadır.

Sürükle ve bırak işleminin, ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED ve ACTION_DROP gibi her biri bir DragEvent nesnesi tarafından tanımlanan çeşitli sürükleme işlemleriyle tanımlanan bir yaşam döngüsü vardır. Bir sürüklemeye katılmak isteyen her görünüm işlemi bu işlemleri dinleyebilir.

Etkinliğinizdeki içeriği sürüklemeye başlamak için startDrag() numaralı telefonu arayın View üzerinde, değeri temsil eden ClipData nesnesini sağlar sürüklenecek veriler, "gölge"yi kolaylaştırmak için bir View.DragShadowBuilder Kullanıcıların sürüklerken parmaklarının altında gördükleri ve paylaşabilen bir Object nesneleri alabilen görünümlere sahip sürükleme nesnesi hakkında bilgiler sağlar.

View içindeki bir sürükleme nesnesini kabul etmek için ("bırakmayı alma") görünümü kaydedin setOnDragListener() numaralı telefonu arayarak OnDragListener ile. Görünümde bir sürükleme etkinliği gerçekleştiğinde sistem, OnDragListener için onDrag() çağırıyor. Bu işlemde DragEvent gerçekleşen sürükleme işleminin türünü (örneğin, ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED ve ACTION_DROP). Sürükleme sırasında sistem, sürüklenin altındaki görünüm için onDrag() öğesini sürekli olarak çağırır. ve sürükleme etkinlikleri akışı. Alıcı görünümü, DragEvent üzerinde getAction() öğesini çağırarak onDragEvent() öğesine teslim edilen etkinlik türünü sorgulayabilir.

Not: Sürükleme etkinliği ClipData nesnesi taşıyabilecek olsa da bu, sistem panosuyla ilgili değildir. Sürükleme ve bırakma işlemi, sürüklenen verileri hiçbir zaman sistem panosuna yerleştirmemelidir.

Daha fazla bilgi için Sürükleme ve Dokümanları atlama. Ayrıca, sürükle ve bırak uygulamasını API Demoları uygulaması ve Honeycomb Gallery kabul edersiniz.

Uygulama widget'ları

Android 3.0, kullanıcılarda daha etkileşimli uygulama widget'ları için birkaç yeni widget sınıfını destekler. Aşağıdakiler dahil olmak üzere ana ekran: GridView, ListView, StackView, ViewFlipper ve AdapterViewFlipper.

Daha da önemlisi, uygulama oluşturmak için yeni RemoteViewsService uygulamasını kullanabilirsiniz Uzak veriler tarafından desteklenen GridView, ListView ve StackView gibi widget'ları kullanarak koleksiyonlu widget'lar daha fazla bilgi edindiniz.

AppWidgetProviderInfo sınıfı (XML'de <appwidget-provider> öğesiyle tanımlanır), autoAdvanceViewId ve previewImage adlı iki yeni alanı da destekler. autoAdvanceViewId alanı, uygulama widget'ının ana makinesi tarafından otomatik olarak ilerletilmesi gereken uygulama widget'ı alt görünümünün görüntü kimliğini belirtmenize olanak tanır. İlgili içeriği oluşturmak için kullanılan previewImage alanı, uygulama widget'ı nasıl görünür ve widget seçiciden kullanıcıya gösterilir. Bu alan sağlanmazsa önizleme için uygulama widget'ının simgesi kullanılır.

Android emülatörü, uygulama widget'ınız için bir önizleme resmi oluşturmanıza yardımcı olmak üzere (previewImage alanında belirtmek üzere) bir "Widget Önizlemesi" adlı bir uygulama oluşturabilirsiniz. Önizleme resmi oluşturmak için bu uygulamayı başlatın, uygulama widget'ını kullanın ve önizleme resminizin nasıl görünmesini istediğinizi ayarlayın uygulamanızın çekilebilir kaynaklarına yerleştirin.

Yeni uygulama widget'ı özelliklerinin kullanımını StackView App Widget'ta ve Hava Durumu Listesi Widget'ında görebilirsiniz. izin verir.

Durum çubuğu bildirimleri

Notification API'leri, daha fazla içerik zengini durumunu destekleyecek şekilde genişletildi. çubuk bildirimleri ve yeni Notification.Builder sınıfı sayesinde çok kolay bir şekilde Notification nesne oluşturun.

Yeni özellikler:

  • Bildirimde setLargeIcon() kullanılarak büyük simge desteği. Bu, genellikle sosyal uygulamaların bildirimin kaynağı olan kişinin kişi fotoğrafını göstermesi veya medya uygulamalarının albüm küçük resmini göstermesi için kullanılır.
  • setTicker() kullanarak durum çubuğu akışındaki özel düzenler için destek.
  • Daha etkileşimli bildirim widget'ları için PendingIntent içeren düğmeler içeren özel bildirim düzenleri desteği. Örneğin, bildirimi, bir etkinlik başlatmadan müzik çalmayı kontrol edebilir.

İçerik yükleyiciler

Yeni çerçeve API'leri, Loader sınıfını kullanarak verilerin eşzamansız olarak yüklenmesini kolaylaştırır. Bunu görünümler ve iş parçacıklarından verileri dinamik olarak yüklemek için kullanılır. CursorLoader alt sınıfı, ContentProvider tarafından desteklenen veriler için bunu yapmanıza yardımcı olmak üzere özel olarak tasarlanmıştır.

Tek yapmanız gereken, yeni bir yükleyici istendiğinde veya veriler paylaşıldığında geri çağırma almak için LoaderCallbacks arayüzünü uygulamaktır. sonra şunu başlatmak için initLoader() çağrısı: etkinliğiniz veya parçanız için yükleyiciyi seçin.

Daha fazla bilgi için Yükleyiciler dokümanlarını okuyun. Ayrıca şunu da görebilirsiniz: LoaderCursor aracındaki yükleyicileri kullanan örnek kod ve LoaderThrottle örnekleri

Bluetooth A2DP ve kulaklık API'leri

Android artık uygulamaların bağlı Bluetooth A2DP ve kulaklık profili cihazlarının durumunu doğrulaması için API'ler içeriyor. Örneğin, uygulamalar müzik dinlemek için Bluetooth mikrofonlu kulaklık bağlandığında bunu tespit edebilir ve kullanıcıyı uygun şekilde bilgilendirebilir. Uygulamalar ayrıca şunları da alabilir: satıcıya özel AT komutları için yayınlar ve bağlı cihazın durumu hakkında kullanıcıyı (örneğin, bağlı cihazın pilinin düşük olması)

A2DP veya HEADSET ile getProfileProxy() çağrısı yaparak ilgili BluetoothProfile öğesini başlatabilirsiniz. profil sabiti ve almak için bir BluetoothProfile.ServiceListener Bluetooth istemcisi bağlandığında veya bağlantısı kesildiğinde geri çağırma özellikleri içerir.

Animasyon çerçevesi

Yepyeni ve esnek bir animasyon çerçevesi, herhangi bir nesnenin (Görünüm, Çizimlenebilir, Kırıntı, Nesne veya başka bir şey) rastgele özelliklerini canlandırmanıza olanak tanır. Bir şirketin çeşitli yönlerini tanımlamanıza Örneğin:

  • Süre
  • Tekrar sayısı ve davranışı
  • Zaman interpolasyonunun türü
  • Animatör, animasyonları birlikte, sırayla veya belirtilen gecikmelerden sonra oynatacak şekilde ayarlar
  • Kare yenileme gecikmesi

Bir nesnenin int, float ve onaltılık renk değerleri için varsayılan olarak bu animasyon özelliklerini ve diğer özellikleri tanımlayabilirsiniz. Yani bir nesnenin bu türlerden biri için bir özellik alanı olduğunda, bir animasyonu etkilemek için zaman içinde değerini değiştirebilir. Diğer değer türlerini animasyonlu hale getirmek için TypeEvaluator arayüzünü uygulayarak sisteme söz konusu türdeki değerleri nasıl hesaplayacağını bildirirsiniz.

Bir mülkün değerlerini animasyonlu hale getirmek için kullanabileceğiniz iki animatör vardır: ValueAnimator ve ObjectAnimator. ValueAnimator, animasyon değerlerini hesaplar, ancak belirli sonuç olarak canlandırılan nesne veya özellik. Yalnızca hesaplamaları yapar. Güncellemeleri dinlemeniz ve verileri kendi mantığınızla işlemeniz gerekir. ObjectAnimator, ValueAnimator ve Böylece, nesneyi ve özelliği animasyonlu olacak şekilde ayarlayabilirsiniz ve tüm animasyon işleri işlenebilir. Yani ObjectAnimator'ye animasyon uygulanacak nesneyi, nesnenin zaman içinde değişecek özelliğini ve zaman içinde özelliğe uygulanacak bir değer grubunu verirsiniz, ardından animasyonu başlatırsınız.

Ayrıca, LayoutTransition sınıfı otomatik geçişi etkinleştirir. animasyonları ekleyin. Sayfa düzeninin bir kısmı için geçişleri etkinleştirmek üzere bir LayoutTransition nesnesi oluşturun ve setLayoutTransition()'yi çağırarak bu nesneyi herhangi bir ViewGroup üzerinde ayarlayın. Bu, varsayılan olarak oluşturulur animasyonların çalıştırılmasına olanak tanır. Özel belirtmek için animasyonlar için LayoutTransition üzerinde setAnimator() yöntemini çağırın ve özel bir Animator sağlayın, ValueAnimator veya ObjectAnimator gibi yukarıda ele aldığımızı unutmayın.

Daha fazla bilgi için Mülk Animasyonu belgelerine bakın. Şunları yapabilirsiniz: API'deki animasyon API'lerini kullanan çeşitli örneklere de Demos uygulaması.

Genişletilmiş kullanıcı arayüzü çerçevesi

  • ListView ve GridView için çoklu seçim

    setChoiceMode() için yeni CHOICE_MODE_MULTIPLE_MODAL modu, kullanıcıların birden fazla öğe seçmesine olanak tanır ListView veya GridView aratın. İşlem çubuğuyla birlikte kullanıldığında, kullanıcılar birden fazla öğe seçebilir ve ardından işlem çubuğundaki seçenekler listesinden (çoklu seçimli işlem moduna dönüşmüştür) yapılacak işlemi seçebilir.

    Çoktan seçmeli seçimi etkinleştirmek için setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL) numaralı telefonu arayın ve bir setMultiChoiceModeListener() ile MultiChoiceModeListener.

    Kullanıcı bir öğeye uzun bastığında İşlem Çubuğu Çoklu seçim moduna geçer İşlem Modu. Öğeler seçildiğinde sistem, onItemCheckedStateChanged() çağrısı yaparak MultiChoiceModeListener öğesini bilgilendirir.

    Çoktan seçmeli seçim örneği için bkz. List15. Java sınıfını kullanır.

  • Görünümleri dönüştürmek için yeni API'ler

    Yeni API'ler, etkinlik düzeninizdeki görünümlere kolayca 2D ve 3D dönüşümler uygulamanıza olanak tanır. Görünümün düzen konumunu, yönünü, şeffaflığını ve daha fazlasını tanımlayan bir dizi nesne özelliğiyle yeni dönüşümler yapılabilir.

    Görüntüleme özelliklerini ayarlamak için kullanılabilecek yeni yöntemler arasında şunlar yer alır: setAlpha(), setBottom(), setLeft(), setRight(), setBottom(), setPivotX(), setPivotY(), setRotationX(), setRotationY(), setScaleX(), setScaleY(), setAlpha() ve diğerleri.

    Bazı yöntemler, varsayılan bir dönüşüm uygulamak için düzen dosyanızda belirtebileceğiniz karşılık gelen bir XML özelliğine de sahiptir. Kullanılabilir özellikler şunlardır: translationX, translationY, rotation, rotationX, rotationY, scaleX, scaleY, transformPivotX, transformPivotY ve alpha.

    Bu yeni görünüm özelliklerinden bazılarını yeni animasyon çerçevesiyle (yukarıda ele alınmıştır) birlikte kullanarak görünümlerinize kolayca bazı süslü animasyonlar uygulayabilirsiniz. Örneğin, bir sonucu döndürmek için y ekseninde görünümü, ObjectAnimator değerini View, "rotasyonY" ile sağlayın özelliğini ve başlangıç ve bitiş değerlerini değiştirin:

    Kotlin

    ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply {
        duration = 2000
        start()
    }

    Java

    ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360);
    animator.setDuration(2000);
    animator.start();
  • Yeni holografik temalar

    Standart sistem widget'ları ve genel görünüm yeniden tasarlandı ve yeni bir "holografik" kullanıcı arayüzü teması eklendi. Sistem, standart stil ve tema sistemini kullanarak yeni temayı uygular.

    Android 3.0 platformunu hedefleyen (android:minSdkVersion veya android:targetSdkVersion değerini "11" olarak ayarlayarak) tüm uygulamalar varsayılan olarak holografik temayı devralır. Ancak uygulamanız kendi temasını da uyguluyorsa stillerinizi holografik temayı devralacak şekilde güncellemediğiniz sürece temanız holografik temayı geçersiz kılar.

    Holografik temayı bireysel etkinliklere uygulamak veya bunları kendi temanızda devralmak için birkaç yeni Theme.Holo tanımından birini kullanın kullanabilirsiniz. Uygulamanız, Android'in 3.0'dan önceki sürümleriyle uyumluysa ve geçerliyse özel temalar kullanıyorsanız platforma göre bir tema seçmeniz gerekir. sürümü) tıklayın.

  • Yeni widget'lar
    • AdapterViewAnimator

      Geçiş sırasında animasyonlar gerçekleştiren bir AdapterView için temel sınıf arasında geçiş yapacaktır.

    • AdapterViewFlipper

      Eklenen iki veya daha fazla görüntüleme arasında animasyonlu geçiş yapan basit ViewAnimator. Aynı anda yalnızca bir çocuk gösterilir. İstenirse otomatik olarak çevirilebilir şunların arasında: izleyebilirsiniz.

    • CalendarView

      Kullanıcıların tarihe dokunarak takvimden tarih seçmesine olanak tanır ve takvimi kaydırabilir veya istenen tarihe fırlatabilir. Widget'ta yer alan tarih aralığını yapılandırabilirsiniz.

    • ListPopupWindow

      Kendisini bir ana görünüme sabitler ve EditText görünümüne yazarken öneriler listesi gibi seçeneklerin listesini gösterir.

    • NumberPicker

      Kullanıcının önceden tanımlanmış bir aralıktan bir sayı seçmesine olanak tanır. Widget'ta, bir sayı seçmek için bir giriş alanı ve yukarı ve aşağı düğmeleri bulunur. Kullanıcı, giriş alanına dokunarak şunları yapabilir: değerleri kaydırın veya geçerli değeri doğrudan düzenlemek için tekrar dokunun. Ayrıca harita çıkarma işlemini konumları dizelere dönüştürür. Böylece, dizin yerine karşılık gelen dize görüntülenir. dokunun.

    • PopupMenu

      Bir görünüme sabitlenmiş kalıcı pop-up pencerede Menu gösterir. Yer varsa pop-up, sabit görünümün altında, yer yoksa üstünde görünür. IME (sanal klavye) görünür durumdaysa kullanıcı menüye dokunana kadar pop-up IME ile örtüşmez.

    • SearchView

      Belirli bir etkinliğe arama sorguları yayınlamak ve arama önerilerini görüntülemek (geleneksel arama iletişim kutusuyla aynı şekilde) için yapılandırabileceğiniz bir arama kutusu sağlar. Bu widget'ı özellikle İşlem Çubuğu'nda bir arama widget'ı sunulması açısından kullanışlıdır. Daha fazla bilgi için Arama arayüzü oluşturma başlıklı makaleyi inceleyin.

    • StackView

      Alt öğelerini 3D yığında görüntüleyen ve kullanıcıların kaydırarak aralarında gezinmesine olanak tanıyan bir görünüm çok daha fazladır.

Grafik

  • Donanım hızlandırmalı 2D grafik

    Artık manifest öğenizin <application> öğesinde veya tek tek <activity> öğelerinde android:hardwareAccelerated="true" ayarlayarak uygulamanız için OpenGL oluşturma aracını etkinleştirebilirsiniz.

    Bu işaret, uygulamaların daha hızlı çizilmesini sağlayarak onlara yardımcı olur. Bu sayede animasyonlar ve kaydırma daha akıcı hale gelir, genel performans ve kullanıcı etkileşimine verilen yanıt iyileşir.

  • Donanım ve yazılım katmanları desteğini görüntüleyin

    Varsayılan olarak, View için katman belirtilmemiştir. Örneğin, görünümü, LAYER_TYPE_HARDWARE ve LAYER_TYPE_SOFTWARE değerleriyle belirtilen bir donanım veya yazılım katmanıyla desteklenir. setLayerType() veya layerType özelliğini gönderin.

    Bir donanım katmanı, donanıma özgü bir dokuyla desteklenir (genellikle Çerçeve Arabellek Nesneleri veya OpenGL donanımında FBO) oluşturur ve görünümün, Android'in donanım oluşturma işlemi kullanılarak oluşturulmasına neden olur. Ardışık düzende, yalnızca görünüm hiyerarşisinde donanım hızlandırma etkinleştirildiğinde. Donanım hızlandırma devre dışıyken, donanım katmanları tam olarak yazılım katmanları gibi davranır.

    Bit eşlem destekli bir yazılım katmanı, görünümün Android'in (Donanım hızlandırma etkin olsa bile) yazılım oluşturma ardışık düzeni üzerinde çalışır. Etkilenen görünüm ağacı sık sık güncelleniyorsa yazılım katmanlarından kaçınılmalıdır. Her güncellemede, bir yazılım katmanından yararlanın.

    Daha fazla bilgi için LAYER_TYPE_HARDWARE ve LAYER_TYPE_SOFTWARE belgelerine bakın.

  • Renderscript 3D grafik motoru

    Renderscript, 3D sahne oluşturmak için de API sağlayan bir çalışma zamanı 3D çerçevesidir Maksimum performans için özel, platformdan bağımsız bir gölgelendirici dili olarak kullanın. Renderscript'i kullanarak grafik işlemlerini ve veri işlemeyi hızlandırabilirsiniz. Renderscript, dosya İş Listesi’ni Uygulamalar, duvar kağıtları, bantlar ve daha fazlası için yüksek performanslı 3D efektler.

    Daha fazla bilgi için bkz. 3D Oluşturma ve Hesaplama Renderscript dokümanlarını inceleyin.

Medya

  • Zaman atlamalı video

    Video kamera API'leri artık zaman atlamalı video kaydetme özelliğini destekliyor. setCaptureRate(), karelerin gönderilme hızını belirler yakalamanız gerekir.

  • Görüntü akışları için doku desteği

    Yeni SurfaceTexture, bir OpenGL ES olarak görüntü akışı yakalamanıza olanak tanır dokunun. setPreviewTexture() numaralı telefonu Camera örneği üzerinden, video oynatma veya önizleme karelerinin alınacağı SurfaceTexture öğesini belirtebilirsiniz. bulun.

  • HTTP Canlı Yayın

    Uygulamalar artık HTTP canlı yayın oturumu başlatmak için medya çerçevesine bir M3U oynatma listesi URL'si iletebilir. Medya çerçevesi, uyarlanabilir bit hızı da dahil olmak üzere HTTP Canlı Yayın spesifikasyonunun çoğunu destekler. Aşağıdakiler için Desteklenen Medya Biçimleri dokümanına bakın: daha fazla bilgi edinin.

  • EXIF verileri

    ExifInterface, fotoğraf diyafram açıklığı, ISO ve pozlama için yeni alanlar içerir. gerekir.

  • Video kamera profilleri

    Yeni hasProfile() yöntemi ve birkaç video kalite profilleri (QUALITY_1080P, QUALITY_720P, QUALITY_CIF ve diğerleri gibi), video kameranızı belirlemenize olanak tanır seçenekleri sunar.

  • Dijital medya dosyası aktarımı

    Platformda USB üzerinden Medya/Resim Aktarım Protokolü (MTP/PTP) için yerleşik destek vardır. Bu da kullanıcıların her tür medya dosyasını cihazlar arasında ve bir ana bilgisayara kolayca aktarmasına olanak tanır. Geliştiriciler bu desteği kullanarak, kullanıcıların cihazlar arasında aktarmak veya paylaşmak isteyebilecekleri zengin medya dosyaları oluşturmasına ya da yönetmesine olanak tanıyan uygulamalar oluşturabilir.

  • Dijital hak yönetimi (DRM)

    Dijital hakları kontrol etmek ve uygulamak için yeni, genişletilebilir dijital hak yönetimi (DRM) çerçevesi. İki mimari katmanda uygulanır:

    • Uygulamalara sunulan ve standart uygulamalar için Dalvik sanal makinesi üzerinden çalışan bir DRM çerçeve API'si.
    • Çerçeve API'sini uygulayan ve DRM için arayüz sunan yerel bir kodlu DRM yöneticisi çeşitli DRM şemaları için hak yönetimi ve şifre çözme işlemlerini gerçekleştiren eklentiler.

    Uygulama geliştiriciler için bu çerçeve, API'yi basitleştiren koruma altındaki içeriğin yönetimiyle ilgilidir. API, DRM işlemlerinin karmaşıklığını gizler ve hem korumalı hem de korumasız içerikler için ve çeşitli DRM şemaları genelinde tutarlı bir çalışma modu sağlar.

    Cihaz üreticileri, içerik sahipleri ve internet dijital medya sağlayıcıları için DRM çerçevenin eklenti API'sı, DRM şeması için destek veren bir çerçeveye, İçerik korumasının güvenli şekilde uygulanması için Android sistemi.

    Önizleme sürümünde, dijital hakları kontrol etmek ve uygulamak için yerel DRM eklentileri sağlanmaz. Ancak, cihaz üreticileri cihazlarıyla birlikte DRM eklentileri de gönderebilirler.

    Tüm DRM API'lerini android.drm paketinde bulabilirsiniz.

Klavye desteği

  • Control, Meta, Caps Lock, Num Lock ve Scroll Lock değiştiricileri için destek. Daha fazla bilgi için META_CTRL_ON ve ilgili alanlara bakın.
  • Escape, Home, End, ve diğerlerini silin. Önemli etkinliklerin tam klavyeden gelip gelmediğini şu şekilde belirleyebilirsiniz: getKeyboardType() sorgulanıyor ve KeyCharacterMap.FULL kontrol ediliyor
  • TextView artık Ctrl+X, Ctrl+C, Ctrl+V ve Ctrl+A tuş kombinasyonlarını kullanarak klavyeyle kesme, kopyalama, yapıştırma ve tümünü seçme işlemlerini destekliyor. Ayrıca PageUp/PageDown, Home/End ve klavye tabanlı metin seçimi.
  • KeyEvent, anahtar değiştirici durumunu doğru ve tutarlı bir şekilde kontrol etmeyi kolaylaştırmak için birkaç yeni yöntem ekler. Bkz. hasModifiers(int), hasNoModifiers(), metaStateHasModifiers(), metaStateHasNoModifiers().
  • Uygulamalar, Activity, Dialog veya View alt sınıfını oluşturarak ve onKeyShortcut()'ı uygulayarak özel klavye kısayolları uygulayabilir. Çerçeve bu yöntemi çağırır her tuş Ctrl tuşuyla birlikte kullanıldığında. Seçenekler menüsü oluştururken klavyeyi kaydettirebilirsiniz Her bir <item> için android:alphabeticShortcut veya android:numericShortcut özelliğini ayarlayarak kısayollar öğesi (veya setShortcut() ile).
  • Android 3.0 yeni bir "sanal klavye" içeriyor KeyCharacterMap.VIRTUAL_KEYBOARD kimlikli cihaz. Sanal klavyede, girişi test etmek için önemli etkinlikleri sentezlemek amacıyla kullanılabilen masaüstü tarzında bir ABD tuş haritası bulunur.

Bölünmüş dokunma etkinlikleri

Daha önce, dokunma etkinliklerini aynı anda yalnızca tek bir görünüm kabul edebiliyordu. Android 3.0 Dokunma etkinliklerini görünümlerde ve hatta pencerelerde bölme desteği eklendi. Böylece farklı görünümler, gerçek zamanlı iletişim etkinlikleridir.

Bölünmüş dokunma etkinlikleri, bir uygulama Android 3.0'u hedeflediğinde varsayılan olarak etkindir. Yani uygulama, android:minSdkVersion veya android:targetSdkVersion özelliğinin değerini "11" olarak ayarlayın.

Ancak aşağıdaki mülkler, belirli görüntüleme gruplarındaki ve pencerelerdeki görünümler arasında bölünmüş dokunma etkinliklerini devre dışı bırakmanıza olanak tanır.

  • ViewGroup'lar için android:splitMotionEvents özelliği, bir düzendeki alt görünümler arasında gerçekleşen bölünmüş dokunma etkinliklerini devre dışı bırakmanıza olanak tanır. Örnek:
    <LinearLayout android:splitMotionEvents="false" ... >
        ...
    </LinearLayout>

    Böylece, doğrusal düzende alt görüntülemeler dokunma etkinliklerini bölemez. Bu şekilde yalnızca bir görünüm Dokunma etkinliklerini bir defada al.

  • android:windowEnableSplitTouch stil mülkü, etkinliğin veya uygulamanın tamamının temasına uygulayarak pencereler arasında bölünmüş dokunma etkinliklerini devre dışı bırakmanıza olanak tanır. Örnek:
    <style name="NoSplitMotionEvents" parent="android:Theme.Holo">
        <item name="android:windowEnableSplitTouch">false</item>
        ...
    </style>

    Bu tema bir <activity> veya <application> için uygulandığında yalnızca geçerli etkinlik penceresindeki dokunma etkinlikleri kabul edilir. Örneğin, bölme işlemini devre dışı bırakarak sistem çubuğu, 24 saat veya 25 saat arasındaki dokunma etkinliklerini etkinliği'ne dokunun. Bu durum, etkinlikteki görüntülemelerin dokunmayı ayırıp ayıramayacağını etkilemez. etkinlikler: varsayılan olarak etkinlik, dokunma etkinliklerini görünümler arasında bölmeye devam edebilir.

    Tema oluşturma hakkında daha fazla bilgi için Stil ve Tema Uygulama başlıklı makaleyi okuyun.

WebKit

  • Şundan oluşan bir parça oluşturmak için yeni WebViewFragment sınıfı: WebView.
  • Yeni WebSettings yöntemleri:
    • setDisplayZoomControls(), kullanıcının parmak hareketleriyle yakınlaştırma yapmasına izin verirken ekrandaki yakınlaştırma denetimlerini gizlemenize olanak tanır (setBuiltInZoomControls(), true olarak ayarlanmalıdır).
    • Yeni WebSettings yöntemi olan setEnableSmoothTransition() sayesinde şunları yapabilirsiniz: kullanarak kaydırma ve yakınlaştırma sırasında yumuşak geçişler elde edebilirsiniz. Etkinleştirildiğinde WebView bir çözüm seçer artırmak (örneğin, Web Görünümü'nün içeriği geçişi) için geçerlidir.
  • Yeni WebView yöntemleri:
    • onPause() geri çağırma işlevi, WebView gizli hale geldiğinde WebView ile ilişkili tüm işlemleri duraklatmak için kullanılır. Bu işlem, gereksiz CPU ya da e-posta sayısını azaltmak için ağ trafiğini artırır.
    • onPause() sırasında duraklatılan Web Görünümü ile ilişkili işlemeyi devam ettirmek için onResume() geri çağırma işlevi.
    • saveWebArchive(), mevcut görünümü cihazda web arşivi olarak kaydetmenize olanak tanır.
    • showFindDialog(), geçerli görünümde metin araması başlatır.

Tarayıcı

Tarayıcı uygulaması, web uygulamalarını desteklemek için aşağıdaki özellikleri ekler:

  • Medya yakalama

    HTML Medya Yakalama ile tanımlandığı gibi özellikleri, Tarayıcı, web uygulamalarının ses, görüntü ve video çekimlerine erişmesine izin verir cihazın özelliklerini göstermenizi sağlar. Örneğin, aşağıdaki HTML, kullanıcının yüklemek üzere fotoğraf çekmesi için bir giriş sağlar:

    <input type="file" accept="image/*;capture=camera" />

    Kullanıcı, capture=camera parametresini hariç tutarak kamerayla yeni bir resim veya cihazdan (Galeri uygulamasından) bir resim seçin.

  • Cihaz Yönlendirmesi

    Cihaz Yönlendirme Etkinliği spesifikasyonunda belirtildiği gibi, tarayıcı web uygulamalarının cihazın fiziksel yönelimi ve hareketi hakkında bilgi sağlayan DOM etkinliklerini dinlemesine izin verir.

    Cihazın yönü x, y ve z eksenleriyle, derece ve hareket cinsinden ifade edilir ve ivme ve dönüş hızı verileriyle ifade edilir. Bir web sayfası yön için kaydedilebilir "deviceorientation" etkinlik türüyle window.addEventListener çağrısı yaparak etkinlikler ve "devicemotion" etkinlik türünü kaydederek hareket etkinliklerine kaydolun.

  • CSS 3D Dönüşümleri

    CSS 3D Dönüşümü ile tanımlandığı gibi Modül spesifikasyonunda, Tarayıcı, CSS tarafından oluşturulan öğelerin üçte dönüştürülmesine izin verir seçin.

JSON yardımcı programları

Yeni sınıflar (JsonReader ve JsonWriter) size yardımcı olur JSON akışlarını okuma ve yazma. Yeni API'ler, bellekteki bir dokümanı işleyen org.json sınıflarını tamamlar.

Şu numarayı çağırarak JsonReader örneği oluşturabilirsiniz: kurucu yöntemini kullanarak JSON dizesini besleyen InputStreamReader öğesini iletir. Ardından beginObject()'ü çağırarak bir nesneyi okumaya başlayın, nextName() ile bir anahtar adını okuyun, nextString() ve nextInt() gibi türe özgü yöntemleri kullanarak değeri okuyun ve hasNext() doğru olduğu sürece bunu yapmaya devam edin.

Oluşturucuyu çağırarak JsonWriter örneği oluşturabilir ve doğru OutputStreamWriter iletilebilir. Ardından, JSON verilerini okuyucuya benzer bir şekilde yazın. Mülk adı eklemek için name()'ü, ilgili değeri eklemek için de uygun bir value() yöntemini kullanın.

Bu sınıflar varsayılan olarak katı kurallara sahiptir. setLenient() kabul etme konusunda daha serbest olmalarını sağlar. Bu esnek ayrıştırıcı modu, org.json öğesinin varsayılan ayrıştırıcısıyla da uyumludur.

Yeni özellik sabitleri

<uses-feature> manfest öğesi, harici tüzel kişilere (Google Play gibi) uygulamanızın bağlı olduğu donanım ve yazılım özellikleri. Android bu sürümde uygulamaların bu öğeyle tanımlayabileceği aşağıdaki yeni sabit değerler:

  • "android.hardware.faketouch"

    Bu özellik, uygulamanın taklit edilmiş dokunmatik ekran (veya daha iyisi) sunan bir cihazla uyumlu olduğunu gösterir. Emülasyonlu dokunmatik ekran sunan bir cihaz, kullanıcı girişi sağlar. Dokunmatik ekranlı bir alt küme emülasyonu yapabilen bir sistem özellikler. Bu tür bir giriş sistemine örnek olarak ekranda imleç. Bu tür giriş sistemleri aşağı tıklama, yukarı tıklama ve sürükleme gibi temel dokunma etkinliklerini destekler. Ancak, daha karmaşık giriş türleri (hareketler, hızlı kaydırmalar vb.) daha zor veya bu imkansızdır (ve çoklu dokunmayla yapılan hareketler kesinlikle mümkün değildir).

    Uygulamanız karmaşık hareketler gerektirmiyorsa ve Uygulamanızın, emülasyonlu dokunmatik ekrana sahip cihazlardan filtrelenmesini istemiyorsanız "android.hardware.faketouch", <uses-feature> ile tanımlanmalıdır öğesine dokunun. Böylece, uygulamanız en fazla sayıda cihaz türünde kullanılabilecektir. Yalnızca emülasyonlu dokunmatik ekran girişi sağlayanlar da dahil.

    Dokunmatik ekranlı tüm cihazlar "android.hardware.faketouch" özelliğini de destekler. Çünkü dokunmatik ekran özellikleri, sahte dokunma kapasitelerinin üst kümesidir. Dolayısıyla, gerçekte herhangi bir bir <uses-feature> eklemeniz gerekir. öğesi oluşturun.

Yeni izinler

  • "android.permission.BIND_REMOTEVIEWS"

    Bu, <service> manifest dosyasında gerekli bir izin olarak belirtilmelidir. öğesi (RemoteViewsService uygulaması için). Örneğin, bir uygulama widget'ı oluşturmak için RemoteViewsService kullanan bir koleksiyonu görünümündeyken, manifest girişi aşağıdaki gibi görünebilir:

    <service android:name=".widget.WidgetService"
        android:exported="false"
        android:permission="android.permission.BIND_REMOTEVIEWS" />

Yeni platform teknolojileri

  • Depolama
    • Yerleşik eMMC depolama alanını etkinleştirmek için ext4 dosya sistemi desteği.
    • MTP cihazları desteklemek için dosya sistemini FUSE ile kullanın.
    • Klavyeleri ve USB hub'ları desteklemek için USB ana makine modu desteği.
    • MTP/PTP desteği
  • Linux Kernel'i
    • 2.6.36 sürümüne yükseltildi
  • Dalvik sanal makinesi
    • SMP'yi destekleyecek ve optimize edecek yeni kod
    • JIT altyapısında çeşitli iyileştirmeler
    • Çöp toplayıcı ile ilgili iyileştirmeler:
      • SMP için ayarlandı
      • Daha büyük yığın boyutları için destek
      • Bit eşlemler ve bayt arabellekleri için birleşik işleme
  • Dalvik Core Libraries
    • NIO'nun (modern G/Ç kitaplığı) yeni ve çok daha hızlı uygulaması
    • İyileştirilmiş istisna mesajları
    • Videonun doğruluğu ve performansla ilgili düzeltmeleri

API farklılıkları raporu

Android 3.0'daki (API Düzeyi) tüm API değişikliklerinin ayrıntılı görünümü için API Farklılıkları Raporu'na bakın.

API Düzeyi

Android 3.0 platformu, çerçeve API'si. Android 3.0 API bir tam sayı tanımlayıcısına atanır — 11: yani sistemde depolanır. "API Seviyesi" olarak adlandırılan bu tanımlayıcı, sistemin uygulamayı yüklemeden önce uygulamanın sistemle uyumlu olup olmadığını doğru şekilde belirlemesine olanak tanır.

Android 3.0'da kullanıma sunulan API'leri uygulamanızda kullanmak için uygulamayı, verilen Android kitaplığına göre derlemeniz gerekir Android 3.0 SDK platformu. İhtiyaçlarınıza bağlı olarak bir android:minSdkVersion="11" eklemeniz de gerekiyor özelliğinin <uses-sdk> öğesine manifest'ini kullanabilirsiniz. Uygulamanız yalnızca Android 2.3 ve daha sonraki sürümlerde çalışacak şekilde tasarlandıysa bir özelliğin bildirilmesi, uygulamanın daha erken sürümleri bulunuyor.

Daha fazla bilgi için API seviyesi nedir? başlıklı makaleyi okuyun.