İ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.