Kullanıcılar, büyük ekranlı cihazlarda uygulamalarla daha sık etkileşime girmek için fare, dokunmatik yüzey, ekran kalemi veya oyun kumandası. Uygulamanızın şuradan girişi kabul etmesini etkinleştirmek için: harici cihazlarda aşağıdakileri yapın:
- Sekme ve ok tuşlarıyla klavyeyle gezinme gibi temel klavye desteğini test edin. Tuş metni girişi onayını girin ve medya uygulamalarında Boşluk tuşuyla oynatma/duraklatma
- Uygun durumlarda standart klavye kısayolları ekleyin; örneğin, Ctrl + Z geri almak için, kaydetmek için Ctrl + S tuşlarına basın
- Bağlam için sağ tıklama şeklinde temel fare etkileşimlerini test edin. üzerine gelindiğinde ve fare tekerleğinde veya dokunmatik yüzey kaydırma etkinliklerinde özel görünümler
- Çizim uygulamaları veya oyunlar için ekran kalemi gibi uygulamaya özel giriş cihazlarını test edin oyunlar için kumandalar ve müzik uygulamaları için MIDI kumandaları
- Uygulamanın öne çıkmasını sağlayabilecek gelişmiş giriş desteği göz önünde bulundurun masaüstü ortamlarda Örneğin, DJ uygulamaları için geçiş yapmak üzere dokunmatik alanı kullanabilirsiniz. oyunlar için fare yakalama ve gelişmiş klavye kısayolları klavye odaklı kullanıcılar
Klavye
Uygulamanızın klavye girişine yanıt verme şekli, iyi bir büyük ekrana katkıda bulunur sahip olacaksınız. Üç tür klavye girişi vardır: gezinme, tuş vuruşları ve kısayollar.
Navigasyon
Dokunmatik odaklı uygulamalarda klavyeyle gezinme nadiren uygulanır ancak kullanıcılar uygulamayı kullanırken ve ellerini klavyeye koyduğunda bunu beklemezler. O da telefon, tablet ve tablet gibi cihazlarda erişilebilirlik katlanabilir cihazlar da olabilir.
Birçok uygulama için gereken tek şey ok tuşu ve sekmeyle gezinme
çoğunlukla Android yapısı tarafından otomatik olarak işlenir. Örneğin,
Varsayılan olarak Button
odaklanılabilir ve klavyeyle gezinme işlevi genellikle çalışır.
kullanabilirsiniz. Şu görünümlerde klavyeyle gezinmeyi etkinleştirmek için:
geliştiriciler bunları odaklanılabilir olarak işaretlemelidir. Böylece,
aşağıda gösterildiği gibi programlı olarak veya XML'de yapılmaktadır. Görüntüleyin
Odaklanma Kullanım
konulu videomuzu izleyin.
Kotlin
yourView.isFocusable = true
Java
yourView.setFocusable(true);
Alternatif olarak, düzen dosyanızda focusable
özelliğini ayarlayabilirsiniz:
android:focusable="true"
Odak etkinleştirildikten sonra Android çerçevesi bir gezinme eşlemesi oluşturur odaklanılabilir tüm görüntülemelerde Bu genellikle beklendiği gibi çalışır ve başka bir şey yapılmasına gerek yoktur. Bir geçerli olması durumunda, bu ayar aşağıdaki şekilde geçersiz kılınabilir:
Kotlin
// Arrow keys yourView.nextFocusLeftId = R.id.view_to_left yourView.nextFocusRightId = R.id.view_to_right yourView.nextFocusTopId = R.id.view_above yourView.nextFocusBottomId = R.id.view_below // Tab key yourView.nextFocusForwardId = R.id.next_view
Java
// Arrow keys yourView.setNextFocusLeftId(R.id.view_to_left); yourView.setNextFocusRightId(R.id.view_to_left); yourView.setNextFocusTopId(R.id.view_to_left); yourView.setNextFocusBottomId(R.id.view_to_left); // Tab key yourView.setNextFocusForwardId(R.id.next_view);
Uygulamanızın işlevlerinin her bölümüne erişmeye çalışmak iyi bir uygulamadır her sürümden önce yalnızca klavyeyi kullanın. Arşivlemek istediğiniz fare veya dokunmatik giriş olmadan en sık yapılan işlemler.
Erişilebilirlik özelliklerine sahip kullanıcılar için klavye desteğinin gerekiyor.
Tuş vuruşları
Ekrandaki sanal klavye tarafından işlenecek metin girişi için
(IME), ör. EditText
, uygulamalar
herhangi bir ek işlem gerektirmeden büyük ekranlı cihazlarda beklendiği gibi davranmalıdır.
en az bir haftalık
çaba gerekiyorsa Çerçeve tarafından tahmin edilemeyecek tuş vuruşları için uygulamalar
kendileri tarafından yönetilmeleri gerekir. Bu durum özellikle
özel görünümler oluşturabilirsiniz.
Örneğin, mesaj göndermek için Enter tuşunu kullanan sohbet uygulamaları, medya Boşluk tuşuyla oynatmayı başlatıp durduran uygulamalar ve bunu kontrol eden oyunlar klavyeyi w, a, s ve d tuşlarıyla hareket ettirin.
Çoğu uygulama
onKeyUp()
ve alınan her anahtar kodu için beklenen davranışı aşağıda gösterildiği gibi ekleyin
aşağıda bulabilirsiniz:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_ENTER -> { sendChatMessage() true } KeyEvent.KEYCODE_SPACE -> { playOrPauseMedia() true } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { sendMessage(); return true; } else if (KeyEvent.KEYCODE_SPACE){ playOrPauseMedia(); return true; } else { return super.onKeyUp(keyCode, event); } }
Bir anahtar serbest bırakıldığında onKeyUp
etkinliği gerçekleşir. Bu geri çağırmanın kullanılması,
bir tuş basılı tutulduğunda uygulamaların birden fazla onKeyDown
etkinliğini işlemesi gerekmez
veya yavaş serbest bırakılır. Anahtarın sahibi olduğu anı bilmek isteyen oyun ve uygulamalar
veya kullanıcıların klavye tuşlarını basılı tutmasını bekleyen kullanıcılar
onKeyDown()
etkinliği belirler ve tekrarlanan onKeyDown
etkinliklerini kendileri işler.
Klavye desteği sağlama hakkında daha fazla bilgi için bkz. Klavye işlemlerini işleme.
Kısayollar
Donanım kullanılırken yaygın olarak kullanılan Ctrl, Alt ve Üst Karakter tabanlı kısayollar beklenir klavye kısayollarını da kullanabilirsiniz. Uygulama bunları yapmazsa deneyim can sıkıcı olabilir. İleri düzey kullanıcılar, sık sık iletişim kurduğunuzda uygulamaya özel görevleri kullandı. Kısayollar, uygulamanın daha kolay kullanılmasını ve ayırt edilmesini sağlar bu adımları uygulayabilirsiniz.
Ctrl + S (kaydet), Ctrl + Z (geri al) ve Ctrl + ÜstKrktr + Z (yeniden yap). Daha gelişmiş bazı kısayollar örneği için bkz. dönüşüm hunisinin VLC Media Player kısayol tuşları.
Kısayollar
dispatchKeyShortcutEvent()
.
Bu, belirli bir öğe için tüm meta tuş kombinasyonlarını (Alt, Ctrl ve Üst Karakter) keser
anahtar koduna sahip olur. Belirli bir meta anahtarı kontrol etmek için
KeyEvent.isCtrlPressed()
KeyEvent.isShiftPressed()
,
KeyEvent.isAltPressed()
,
veya
KeyEvent.hasModifiers()
Kısayol kodunu diğer tuş vuruşu işlemlerinden (ör. onKeyUp()
) ayırma
ve onKeyDown()
), kod bakımını kolaylaştırabilir ve varsayılan
meta anahtar kontrollerini manuel olarak uygulamak zorunda kalmadan meta anahtarları kabul etmenizi
dikkate almanız gerekir. Tüm meta anahtar kombinasyonlarına izin vermek
yeni klavye düzenlerine ve işletim sistemlerine alışkın olan kullanıcılara ulaşabilirsiniz.
Kotlin
override fun dispatchKeyShortcutEvent(event: KeyEvent): Boolean { return when (event.keyCode) { KeyEvent.KEYCODE_O -> { openFile() // Ctrl+O, Shift+O, Alt+O true } KeyEvent.KEYCODE_Z-> { if (event.isCtrlPressed) { if (event.isShiftPressed) { redoLastAction() // Ctrl+Shift+Z pressed true } else { undoLastAction() // Ctrl+Z pressed true } } } else -> { return super.dispatchKeyShortcutEvent(event) } } }
Java
@Override public boolean dispatchKeyShortcutEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_O) { openFile(); // Ctrl+O, Shift+O, Alt+O return true; } else if(event.getKeyCode() == KeyEvent.KEYCODE_Z) { if (event.isCtrlPressed()) { if (event.isShiftPressed()) { redoLastAction(); return true; } else { undoLastAction(); return true; } } } return super.dispatchKeyShortcutEvent(event); }
Ayrıca, kontrol ederek onKeyUp()
kısayolları da uygulayabilirsiniz:
KeyEvent.isCtrlPressed()
,
KeyEvent.isShiftPressed()
,
veya
KeyEvent.isAltPressed()
olduğu gibi değiştirebilirsiniz. Bu yöntemin sürdürülmesi daha kolay
meta davranışı, kısayoldan çok uygulama davranışında yapılan bir değişikliktir.
Örneğin, W "ileri doğru yürü" anlamına geldiğinde ve Üst Karakter + W "ileri doğru koş" anlamına gelir.
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) { KeyEvent.KEYCODE_W-> { if (event.isShiftPressed) { if (event.isCtrlPressed) { flyForward() // Ctrl+Shift+W pressed true } else { runForward() // Shift+W pressed true } } else { walkForward() // W pressed true } } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_W) { if (event.isShiftPressed()) { if (event.isCtrlPressed()) { flyForward(); // Ctrl+Shift+W pressed return true; } else { runForward(); // Shift+W pressed return true; } } else { walkForward(); return true; } } return super.onKeyUp(keyCode, event); }
Ekran kalemi
Büyük ekranlı cihazların çoğunda ekran kalemi bulunur. Android uygulamaları ise bunu Dokunmatik ekran girişi. Bazı cihazlarda USB veya Bluetooth çizimi de olabilir örneğin Wacom Intuos. Android uygulamaları Bluetooth girişi alabilir, ancak USB girişiyle çalışmaz.
Ekran kalemi etkinliği, dokunmatik ekran etkinliği olarak
View.onTouchEvent()
veya
View.onGenericMotionEvent()
,
ve bir
MotionEvent.getSource()
türü
SOURCE_STYLUS
MotionEvent
, ek veriler de içerecek:
MotionEvent.getToolType()
TOOL_TYPE_FINGER
, TOOL_TYPE_STYLUS değerini döndürür, veyaTOOL_TYPE_ERASER
yüzeye temas eden araca bağlı olarakMotionEvent.getPressure()
ekran kalemine uygulanan fiziksel basıncı bildirir (destekleniyorsa)MotionEvent.getAxisValue()
MotionEvent.AXIS_TILT
ile veMotionEvent.AXIS_ORIENTATION
Ekran kaleminin fiziksel yönünü ve yönünü okumak için kullanılabilir. (destekleniyorsa)
Geçmiş puanlar
Android, giriş etkinliklerini toplu hale getirir ve kare başına bir kez gönderir. Ekran kalemi
bu rapor etkinlikleri ekrandan çok daha sık
olarak raporlayabilir. Oluştururken
yakın zamanda gerçekleşmiş olabilecek etkinlikleri kontrol etmek
getHistorical
API'lerini kullanarak geri bildirim gönderebilirsiniz:
MotionEvent.getHistoricalX()
MotionEvent.getHistoricalY()
MotionEvent.getHistoricalPressure()
MotionEvent.getHistoricalAxisValue()
Avuç içi reddi
Kullanıcılar ekran kalemi kullanarak çizerken, yazarken veya uygulamanızla etkileşime geçerken bazen
ekrana avuç içiyle dokunun. Dokunma etkinliği (
ACTION_DOWN
veya
ACTION_POINTER_DOWN
)
sistem, bildirimi tanımadan ve dikkate almadan önce uygulamanıza bildirilebilir.
yanlışlıkla avuç içine dokunma.
Android, avuç içi dokunma etkinliklerini iptal etmek için
MotionEvent
. Uygulamanız
ACTION_CANCEL
,
hareketi yapın. Uygulamanız
ACTION_POINTER_UP
şu olup olmadığını kontrol et:
FLAG_CANCELED
ayarlandı. Eğer
Bu nedenle hareketi iptal edin.
Yalnızca FLAG_CANCELED
için kontrol etmeyin. Android 13 itibarıyla kolaylık olması açısından
sistem ACTION_CANCEL
etkinlikleri için FLAG_CANCELED
özelliğini ayarlar, ancak önceki sürümler
lütfen unutmayın.
Android 12
Android 12 (API düzeyi 32) ve önceki sürümlerde avuç içi reddi algılanabilir
yalnızca tek noktalı dokunma etkinliklerinde kullanılabilir. İşaretçi yalnızca avuç içi dokunuşuysa
sistem, hareket etkinliği nesnesine ACTION_CANCEL
ayarlayarak etkinliği iptal eder.
Diğer işaretçiler çalışmadığında sistem, ACTION_POINTER_UP
değerini ayarlar.
avuç içi reddinin algılanması için yeterli değil.
Android 13
Android 13 (API düzeyi 33) ve sonraki sürümlerde sadece işaretçi olarak avuç içi dokunması varsa
sistem, şurada ACTION_CANCEL
ve FLAG_CANCELED
ayarlarını yaparak etkinliği iptal eder:
hareket etkinliği nesnesini oluşturur. Diğer işaretçiler hatalıysa sistem,
ACTION_POINTER_UP
ve FLAG_CANCELED
.
Uygulamanız ACTION_POINTER_UP
ile hareket etkinliği aldığında,
FLAG_CANCELED
etkinliğinin, avuç içi reddini gösterip göstermediğini (veya
başka bir etkinliğin iptali için).
Not alma uygulamaları
ChromeOS, kayıtlı not alma uygulamalarını kullanıma sunan özel bir amaca sahiptir. yardımcı olur. Bir uygulamayı not alma uygulaması olarak kaydetmek için, aşağıdaki kodu Android manifesti:
<intent-filter>
<action android:name="org.chromium.arc.intent.action.CREATE_NOTE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Bir uygulama kaydedildiğinde, kullanıcı bunu varsayılan not alma uygulaması olarak seçebilir
uygulamasını indirin. Yeni bir not istendiğinde, uygulama hazır boş bir not oluşturmalıdır
(ekran kalemi girişi için). Kullanıcı bir resme ek açıklama eklemek istediğinde (ör.
ekran görüntüsü veya indirilmiş bir resim), uygulama şunu içeren ClipData
ile başlatılır:
content://
URI içeren bir veya daha fazla öğe. Uygulamanın, aşağıdaki bilgileri içeren bir not oluşturması gerekir:
ilk eklenen resmi arka plan resmi olarak kullanır ve
Kullanıcı ekran kalemiyle ekranda çizim yapabilir.
Not alma amaçlarını ekran kalemi olmadan test edin
Bir uygulamanın, etkin bir uygulama olmadan not alma amaçlarına doğru yanıt verip vermediğini test etmek ekran kalemiyse, aşağıdaki yöntemi kullanarak not alma seçeneklerini ChromeOS:
- Geliştirici moduna geçin ve cihazı yazılabilir hale getirin
- Bir terminal açmak için Ctrl + Alt + F2 tuşlarına basın
sudo vi /etc/chrome_dev.conf
komutunu çalıştırın--ash-enable-palette
öğesini düzenlemek ve sondaki yeni bir satıra eklemek içini
tuşlarına basın dosyanın- Esc tuşuna basıp :, w, q yazıp Enter tuşuna basarak kaydedin
- Normal ChromeOS kullanıcı arayüzüne dönmek için Ctrl + Alt + F1 tuşlarına basın.
- Çıkış yapın ve tekrar giriş yapın
Artık rafta bir ekran kalemi menüsü bulunur:
- Raftaki ekran kalemi düğmesine dokunun ve Yeni not'u seçin. Açılış boş bir çizim notu.
- Ekran görüntüsü alın. Rafta ekran kalemi düğmesi > Ekran görüntüsü al veya bir resim indirin. "Resimlere ek açıklama ekle" seçeneği olacaktır. bildirimi görürsünüz. Resim hazır olarak başlatılacaktır. şeklinde olur.
Fare ve dokunmatik alan desteği
Çoğu uygulamanın genellikle yalnızca üç büyük ekran merkezli olması gerekir etkinlikler: right-click, hover ve sürükleyip bırakın.
Sağ tıklama
Uygulamanın içerik menüsü göstermesine neden olan tüm işlemler (ör. dokunma ve CANNOT TRANSLATE
sağ tıklama etkinliklerine de tepki vermesi gerekir. Sağ tıklamayı işlemek için
bir etkinlik olduğunda, uygulamalar bir
View.OnContextClickListener
.
Bağlam menüsü oluşturmayla ilgili ayrıntılar için bkz.
Bağlamsal Menüler Oluşturma.
Kotlin
yourView.setOnContextClickListener { showContextMenu() true }
Java
yourView.setOnContextClickListener(v -> { showContextMenu(); return true; });
İmleçle üzerine gelin
Geliştiriciler, uygulama düzenlerinin şık ve kolay bir şekilde kullanılmasını sağlayabilir. üzerine gelin. Bu durum özellikle özel görünümler için geçerlidir. En önemli iki Bunun yaygın örnekleri şunlardır:
- Bir öğenin etkileşimli davranışı (ör. Fare işaretçisi simgesi değiştirilerek tıklanabilir veya düzenlenebilir
- İmlecin bulunduğu sırada büyük bir liste veya ızgaradaki öğelere görsel geri bildirim ekleme imleçle üzerine gelin
Kotlin
// Change the icon to a "hand" pointer on hover, // Highlight the view by changing the background. yourView.setOnHoverListener { view, _ -> addVisualHighlighting(true) view.pointerIcon = PointerIcon.getSystemIcon(view.context, PointerIcon.TYPE_HAND) false // listener did not consume the event. }
Java
yourView.setOnHoverListener((view, event) -> { addVisualHighlighting(true); view.setPointerIcon(PointerIcon .getSystemIcon(view.getContext(), PointerIcon.TYPE_HAND)); return true; });
Sürükleme ve bırakma
Çok pencereli bir ortamda, kullanıcılar öğeleri sürükleyip bırakabilmeyi bekler yardımcı olur. Bu durum, tabletlerin, telefonların ve katlanabilir cihazlar da kullanılabilir.
Geliştiriciler, kullanıcıların öğeleri ana sayfalarında uygulamasını indirin. Sık karşılaşılan bazı örnekler: ses çalarların ses dosyaları ve çizim dosyaları almak için programın fotoğrafları almayı beklemesi beklenir.
Sürükleyip bırakma desteği eklemek için Android Dokümanları sürükle ve bırak ile göz atma burada ChromeOS blog yayını
ChromeOS ile ilgili özel noktalar
- Erişim için
requestDragAndDropPermissions
üzerinden izin istemeyi unutmayın uygulamanın dışından sürüklenen öğeler - Bir öğenin sürüklenebilmesi için
View.DRAG_FLAG_GLOBAL
işaretinin olması gerekir ve onları başka uygulamalara
Gelişmiş işaretçi desteği
Fare ve dokunmatik alan girişini gelişmiş şekilde işleyen uygulamalar
Şunun için Android dokümanları:
View.onGenericMotionEvent()
ve
MotionEvent.getSource()
birbirinden farklı
SOURCE_MOUSE
ve
SOURCE_TOUCHSCREEN
Gerekli davranışı uygulamak için MotionEvent
inceleyin:
- Hareket
ACTION_HOVER_MOVE
etkinlik oluşturur. - Düğmeler
ACTION_BUTTON_PRESS
veACTION_BUTTON_RELEASE
etkinlikleri oluşturur. Ayrıca tüm fare/dokunmatik alan düğmelerinin mevcut durumunu kontrol etmek içingetButtonState()
- Fare tekerleği kaydırması
ACTION_SCROLL
etkinlik oluşturur.
Oyun kumandaları
Bazı büyük ekranlı Android cihazlar dört adede kadar oyun kumandasını destekler. Geliştiriciler, bu işlemleri yapmak için standart Android oyun kumandası API'lerini kullanmalıdır. (Oyun kumandalarını destekleme bölümünü inceleyin)
Düğmeler, ortak bir eşleme sonrasında ortak değerlerle eşlenir. Maalesef tüm oyun kumandası üreticileri aynı eşleme kurallarını uygulamaz. Kullanıcılara farklı seçenekler arasından seçim yapma olanağı tanıyarak çok daha iyi bir deneyim en çok kullanılan kumanda eşlemeleridir. Görüntüleyin Oyun kumandası düğmesine basılan düğmeleri işle konulu videomuzu izleyin.
Giriş çeviri modu
ChromeOS, varsayılan olarak giriş çeviri modunu etkinleştirir. Çoğu Android uygulaması için Bu mod, uygulamaların masaüstü ortamında beklendiği gibi çalışmasına yardımcı olur. Birkaç örnek dokunmatik alanda iki parmakla kaydırmanın, farenin otomatik olarak etkinleştirilmesini tekerlek kaydırmayı ve ham görüntüleme koordinatlarını pencere koordinatlarına eşleme. Genellikle uygulama geliştiricilerin bu davranışlardan hiçbirini uygulamaları gerekmez. .
Bir uygulama, özel giriş davranışı uygularsa (örneğin, özel bir iki parmakla dokunmatik yüzeyde sıkıştırma işlemi veya bu giriş çevirileri uygulama tarafından beklenen giriş etkinliklerini görürseniz giriş çevirisini devre dışı bırakabilirsiniz modunu açmak için aşağıdaki etiketi Android manifest'e ekleyin:
<uses-feature
android:name="android.hardware.type.pc"
android:required="false" />
Ek kaynaklar
ziyaret edin.Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Android uygulamasında ekran kalemi desteğini geliştirme
- Özel metin düzenleyiciler
- Tablet ve büyük ekran desteği