Görünüm sınıfı oluşturma

"Oluştur" yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da düzenlerle nasıl çalışacağınızı öğrenin.

İyi tasarlanmış bir özel görünüm, iyi tasarlanmış diğer tüm sınıflara benzer. Bir projeyi belirli bir grup işlevsellikleri basit bir arayüzde, CPU ve belleği verimli bir şekilde kullanır. İçinde proje yöneticisinin yanı sıra sınıfınızın iyi tasarlanmış bir görünümü varsa, özel bir görünüm aşağıdakileri yapmalıdır:

  • Android standartlarına uygundur.
  • Android XML düzenleriyle çalışan özel stil özellikleri sağlayın.
  • Erişilebilirlik etkinlikleri gönderin.
  • Çeşitli Android platformlarıyla uyumlu olmalıdır.

Android çerçevesi, Google Analytics 4'te tarama odaklı bir görünüm oluşturmanıza bunların tümünü karşılayan gereksinimlerini karşılayın. Bu derste, temel çerçeveyi oluşturmak için Android çerçevesinin nasıl kullanılacağı bir görünümün işlevi sınıfını kullanır.

Daha fazla Özel görünüm bileşenleri hakkındaki bilgilere ulaşabilirsiniz.

Bir görünümü alt sınıfa ekleme

Android çerçevesinde tanımlanan tüm görünüm sınıfları View Sizin özel görünüm de View uzatın veya ve zaman kazanabilirsiniz. mevcut görünüm alt sınıflar (Button gibi).

Android Studio'nun görünümünüzle etkileşim kurmasına izin vermek için en azından Parametre olarak Context ve AttributeSet nesnesi. Bu oluşturucu, düzen düzenleyicisinin görünümünüzün bir örneğini oluşturmasına ve düzenlemesine olanak tanır.

Kotlin

class PieChart(context: Context, attrs: AttributeSet) : View(context, attrs)

Java

class PieChart extends View {
    public PieChart(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

Özel özellikleri tanımlama

Kullanıcı arayüzünüze yerleşik bir View eklemek için bunu bir XML öğesinde belirtin ve kontrol et görünüm ve davranışı temel alabilirsiniz. Dilerseniz özelleştirilebilir görüntüler. Alıcı: özel görünümünüzde bu davranışı etkinleştirmek için aşağıdakileri yapın:

  • Bir <declare-styleable> kaynak öğesinde görünümünüz için özel özellikler tanımlayın.
  • XML düzeninizdeki özelliklerin değerlerini belirtin.
  • Çalışma zamanında özellik değerlerini alın.
  • Alınan özellik değerlerini görünümünüze uygulayın.

Bu bölümde, özel özelliklerin nasıl tanımlanacağı ve değerlerinin nasıl belirtileceği anlatılmaktadır. Bir sonraki bölümde alma ve uygulama hakkında bilgi edinebilirsiniz.

Özel özellikleri tanımlamak için projenize <declare-styleable> kaynakları ekleyin. Bu kaynakları, düzenli olarak res/values/attrs.xml dosyası yükleyin. İşte attrs.xml dosyası örneği:

<resources>
   <declare-styleable name="PieChart">
       <attr name="showText" format="boolean" />
       <attr name="labelPosition" format="enum">
           <enum name="left" value="0"/>
           <enum name="right" value="1"/>
       </attr>
   </declare-styleable>
</resources>

Bu kodda showText ve labelPosition olmak üzere iki özel özellik tanımlanmaktadır. ve tarz sahibi olan PieChart adlı varlık. Stil yapılabilir varlığın adı, genel olarak aynıdır. olarak isim sınıfın adı değeri gösterir. Bu kurala uymak zorunlu olmasa da pek çok popüler kod editörler, ifade tamamlama sağlamak için bu adlandırma kuralına güvenir.

Özel özellikleri tanımladıktan sonra, bunları yerleşik XML dosyalarında olduğu gibi kullanabilirsiniz. özellikleri hakkında daha fazla bilgi edinin. Tek fark, özel özelliklerinizin farklı bir ad alanına ait olmasıdır. Aidiyet hissi yerine http://schemas.android.com/apk/res/android ad alanına ise http://schemas.android.com/apk/res/[your package name] aittir. Örneğin, özellikleri PieChart:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res-auto">
 <com.example.customviews.charting.PieChart
     custom:showText="true"
     custom:labelPosition="left" />
</LinearLayout>

Uzun ad alanı URI'sini tekrarlamaktan kaçınmak için örnek, xmlns yönergesi. Bu yönerge, custom takma adını http://schemas.android.com/apk/res/com.example.customviews ad alanına bakalım. Ad alanınız için istediğiniz takma adı seçebilirsiniz.

Özel görünümü düzene ekleyen XML etiketinin adına dikkat edin. Bu tamamen uygun adı özel görünüm sınıfı. Görüntüleme sınıfınız iç sınıfsa daha da uygun hale getirin görünümünün dış sınıfının adıyla değiştirin. Örneğin, PieChart sınıfının içi PieView adlı bir sınıfa sahip. To özelliklerinizden biri, Google'ın com.example.customviews.charting.PieChart$PieView etiketini kullanmak.

Özel özellikler uygula

XML düzeninden bir görünüm oluşturulduğunda, XML etiketindeki tüm öznitelikler okunur. kaynaktan paket haline getirilir ve görünümün oluşturucusuna bir AttributeSet Her ne kadar değerleri doğrudan AttributeSet kaynağından okuyabilir ve böylece bazı dezavantajları vardır:

  • Özellik değerlerindeki kaynak referansları çözümlenmez.
  • Stiller uygulanmaz.

Bunun yerine, AttributeSet öğesini şuraya geçirin: obtainStyledAttributes(). Bu yöntem bir TypedArray. dizisi değeri şu şekildedir: ve stillerini ayarlamalısınız.

Android kaynak derleyici, arama yapabilmeniz için birçok işlem yapar. obtainStyledAttributes(). daha kolay olur. Her <declare-styleable> için res/ dizinindeki kaynak herhangi bir kaynaksa, oluşturulan R.java hem bir özellik dizisi hem de Kimlikler ve dizideki her özelliğin dizinini tanımlayan sabit değerlerdir. Önceden tanımlı okunacak sabit değerler TypedArray özellikleri. Bunu şu şekilde yapabilirsiniz: PieChart sınıfı şu özelliklerini okur:

Kotlin

init {
    context.theme.obtainStyledAttributes(
            attrs,
            R.styleable.PieChart,
            0, 0).apply {

        try {
            mShowText = getBoolean(R.styleable.PieChart_showText, false)
            textPos = getInteger(R.styleable.PieChart_labelPosition, 0)
        } finally {
            recycle()
        }
    }
}

Java

public PieChart(Context context, AttributeSet attrs) {
   super(context, attrs);
   TypedArray a = context.getTheme().obtainStyledAttributes(
        attrs,
        R.styleable.PieChart,
        0, 0);

   try {
       mShowText = a.getBoolean(R.styleable.PieChart_showText, false);
       textPos = a.getInteger(R.styleable.PieChart_labelPosition, 0);
   } finally {
       a.recycle();
   }
}

TypedArray nesnenin paylaşılan bir kaynaktır ve kullanıldıktan sonra geri dönüştürülmesi gerekir.

Mülk ve etkinlik ekleme

Özellikler, görüntülemelerin davranışını ve görünümünü kontrol etmenin güçlü bir yoludur, ancak yalnızca okunabilirler ilk kullanıma sunulduğunda. Dinamik davranış sağlamak için bir mülk alıcı ve her biri için belirleyici çift özel özellik. Aşağıdaki snippet'te PieChart ürününün bir mülkü nasıl gösterdiği gösterilmektedir adı showText:

Kotlin

fun isShowText(): Boolean {
    return mShowText
}

fun setShowText(showText: Boolean) {
    mShowText = showText
    invalidate()
    requestLayout()
}

Java

public boolean isShowText() {
   return mShowText;
}

public void setShowText(boolean showText) {
   mShowText = showText;
   invalidate();
   requestLayout();
}

setShowText öğesinin, invalidate() yöntemini çağırdığına dikkat edin ve requestLayout(). Bu çağrılar son derece önemlidir. düzgün şekilde çalışmasını sağlamak için. İhtiyacınız olanlar özelliğini değiştirebilecek herhangi bir değişiklikten sonra görünümü geçersiz kılmaya görünüm, böylece sistemin yeniden çizilmesi gerektiğini bilir. Benzer şekilde, aşağıdaki durumlarda yeni bir düzen istemeniz gerekir: Bir özelliğin başka şekilde değişmesi görünümün boyutunu veya şeklini etkileyebilecek öğeler. Bu yöntem çağrılarını unutmak, zor bulunan hatalar.

Özel görünümler, önemli etkinlikleri iletmek için etkinlik işleyicileri de desteklemelidir. Örneğin, örnek, PieChart dinleyicilere bilgi vermek için OnCurrentItemChanged adlı özel bir etkinlik sunar. kullanıcı, sayfayı döndürdü. pasta grafiğini tıklayın.

Özellikle sizin tarafınızdan tek kullanıcı siz olduğunuzda mülkleri ve etkinlikleri göstermeyi kolayca unutabilirsiniz. görebilirsiniz. Görünümünüzün arayüzünü dikkatli bir şekilde tanımlamak için zaman ayırırsanız, gelecekte bakım işlemleri daha az azaltılır gösterir. Görünür öğeleri etkileyen tüm özellikleri her zaman görünüşü ya da davranışını görünümünü seçin.

Erişilebilirliğe uygun tasarım

Özel görünümünüz çok çeşitli kullanıcıları desteklemelidir. Buna, engelli bireylerin görmelerini veya dokunmatik ekranları kullanmalarını engelleyebilirsiniz. Engelli kullanıcıları desteklemek amacıyla şunları yapın:

  • Giriş alanlarınızı android:contentDescription ile etiketleyin özelliğini gönderin.
  • sendAccessibilityEvent() numaralı telefonu arayarak erişilebilirlik etkinliklerini gönderin gerektiğini unutmayın.
  • D-pad veya iztopu gibi alternatif kumandaları destekleyin.

Erişilebilir görünümler oluşturma hakkında daha fazla bilgi için Uygulamaları daha erişilebilir hale getirin.