Android, dokunmatik klavyeler gibi yazılım giriş yöntemlerinin yanı sıra cihaza bağlı fiziksel klavyeleri de destekler. Klavye, metin girişi için uygun bir mod ve kullanıcıların uygulamanızda gezinip etkileşimde bulunabileceği bir yol sunar. Telefon gibi çoğu elde taşınabilir cihazda birincil etkileşim modu olarak dokunma kullanılsa da tabletler ve benzeri cihazlar popülerdir ve birçok kullanıcı bunlara klavye aksesuarları bağlamayı tercih eder.
Android destekli daha fazla cihaz bu tür bir deneyim sunduğundan uygulamanızı klavye üzerinden etkileşimi destekleyecek şekilde optimize etmeniz önemlidir. Bu belgede, klavyeyle gezinmeyi nasıl iyileştirebileceğiniz açıklanmaktadır.
Uygulamanızı test etme
Android sistemi, gerekli davranışların çoğunu varsayılan olarak etkinleştirdiğinden kullanıcılar uygulamanızda klavye kullanarak gezinebiliyor olabilir.
Android çerçevesi tarafından sağlanan tüm etkileşimli widget'lar (ör.
Button ve
EditText) odaklanılabilir. Bu sayede kullanıcılar, D-pad veya klavye gibi kontrol cihazlarıyla gezinebilir. Her widget, giriş odağı kazandığında parlar veya görünümünü değiştirir.
Uygulamanızı test etmek için aşağıdaki prosedürü uygulayın:
- Uygulamanızı donanım klavyesi olan bir cihaza yükleyin.
Klavyeli bir donanım cihazınız yoksa Bluetooth klavye veya USB klavye bağlayın.
Android emülatörünü de kullanabilirsiniz:
- AVD Yöneticisi'nde New Device'ı (Yeni Cihaz) tıklayın veya mevcut bir profili seçip Clone'u (Klonla) tıklayın.
- Açılan pencerede Klavye ve DPad'in etkinleştirildiğinden emin olun.
- Uygulamanızı test etmek için kullanıcı arayüzünüzde gezinirken yalnızca sekme tuşunu kullanın. Her kullanıcı arayüzü kontrolünün beklendiği gibi odaklandığından emin olun.
Odağın beklenmedik şekilde değiştiği durumlar olup olmadığına bakın.
- Uygulamanızın başından tekrar başlayın ve klavyedeki ok tuşları gibi yön kontrollerini kullanarak kullanıcı arayüzünüzde gezinin. Kullanıcı arayüzünüzdeki her odaklanılabilir öğeden Yukarı, Aşağı, Sol ve Sağ tuşlarına basın.
Odağın beklenmedik şekilde değiştiği durumlar olup olmadığına bakın.
Sekme tuşu veya yön kontrolleriyle gezinmenin beklendiği gibi çalışmadığı durumlarla karşılaşırsanız aşağıdaki bölümlerde açıklandığı gibi, düzeninizde odağın nerede olması gerektiğini belirtin.
Sekmede gezinmeyi yönetme
Kullanıcı, klavyedeki Tab tuşunu kullanarak uygulamanızda gezinirken sistem, giriş odağını düzen içinde görünme sırasına göre öğeler arasında geçirir. Örneğin, göreli düzen kullanıyorsanız ve ekrandaki öğelerin sırası dosyadaki sıradan farklıysa odak sırasını manuel olarak belirtmeniz gerekebilir.
Örneğin, aşağıdaki düzende iki düğme sağ tarafa, bir metin alanı ise ikinci düğmenin soluna hizalanmıştır. Odaklanmayı ilk düğmeden metin alanına ve ardından ikinci düğmeye geçirmek için düzenin, odaklanılabilir öğelerin her birinin odaklanma sırasını android:nextFocusForward özelliğiyle açıkça tanımlaması gerekir.
<androidx.constraintlayout.widget.ConstraintLayout ...> <Button android:id="@+id/button1" android:nextFocusForward="@+id/editText1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" ... /> <Button android:id="@+id/button2" android:nextFocusForward="@+id/button1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/button1" ... /> <EditText android:id="@id/editText1" android:nextFocusForward="@+id/button2" app:layout_constraintBottom_toBottomOf="@+id/button2" app:layout_constraintRight_toLeftOf="@id/button2 ... /> ... </androidx.constraintlayout.widget.ConstraintLayout>
Artık odak, button1'dan button2'ye ve ardından editText1'ye gitmek yerine ekrandaki görünüme göre uygun şekilde hareket ediyor: button1'dan editText1'ye ve ardından button2'ye.
Yönlü gezinmeyi işleme
Kullanıcılar, uygulamanızda gezinmek için klavyedeki ok tuşlarını da kullanabilir. Bu tuşlar, D-pad veya trackball ile gezinirken olduğu gibi çalışır. Sistem, ekrandaki görünümlerin düzenine göre belirli bir yönde hangi görünüme odaklanılacağı konusunda "en iyi tahmini" sağlar. Ancak sistem bazen yanlış tahminde bulunabilir.
Sistem, belirli bir yönde gezinirken odağı uygun görünüme aktarmıyorsa aşağıdaki özelliklerle odağın hangi görünüme aktarılması gerektiğini belirtin:
Her özellik, kullanıcı o yönde gezinirken odaklanılacak bir sonraki görünümü, görünüm kimliğiyle belirtildiği şekilde tanımlar. Bu durum, aşağıdaki örnekte gösterilmektedir:
<Button android:id="@+id/button1" android:nextFocusRight="@+id/button2" android:nextFocusDown="@+id/editText1" ... /> <Button android:id="@id/button2" android:nextFocusLeft="@id/button1" android:nextFocusDown="@id/editText1" ... /> <EditText android:id="@id/editText1" android:nextFocusUp="@id/button1" ... />
Ek kaynaklar
Aşağıdaki ilgili kaynaklara göz atın: