בנוסף לשיטות קלט תוכנות – כמו מקלדות שמופיעות במסך – מערכת Android תומכת במקלדות פיזיות שמחוברות למכשיר. מקלדת מספקת דרך נוחה להזנת טקסט ומאפשרת למשתמשים לנווט באפליקציה ולנהל איתה אינטראקציה. ברוב המכשירים הניידים, כמו טלפונים, המגע הוא אופן האינטראקציה העיקרי, אבל טאבלטים ומכשירים דומים פופולריים, ומשתמשים רבים אוהבים לחבר אליהם אביזרי מקלדת.
יותר ויותר מכשירים עם Android מציעים חוויית שימוש כזו, ולכן חשוב לבצע אופטימיזציה של האפליקציה כך שתתמוך באינטראקציה באמצעות מקלדת. במסמך הזה מוסבר איך לשפר את הניווט באמצעות מקלדת.
בדיקת האפליקציה
יכול להיות שהמשתמשים כבר יכולים לנווט באפליקציה באמצעות מקלדת, כי מערכת Android מפעילה כברירת מחדל את רוב הפעולות הנדרשות.
אפשר להתמקד בכל הווידג'טים האינטראקטיביים שסופקו על ידי מסגרת Android, כמו Button
ו-EditText
. המשמעות היא שהמשתמשים יכולים לנווט באמצעות התקני בקרה כמו מקש D או מקלדת, וכל ווידג'ט יגהץ או ישנה את המראה שלו כשהוא יקבל את המיקוד.
כדי לבדוק את האפליקציה, מבצעים את הפעולות הבאות:
- מתקינים את האפליקציה במכשיר שיש בו מקלדת חומרה.
אם אין לכם מכשיר חומרה עם מקלדת, מחברים מקלדת Bluetooth או מקלדת USB.
אפשר גם להשתמש במהדמנת Android:
- ב-AVD Manager, לוחצים על New Device או בוחרים פרופיל קיים ולוחצים על Clone.
- בחלון שמופיע, מוודאים שהאפשרויות מקלדת ו-DPad מופעלות.
- כדי לבדוק את האפליקציה, משתמשים רק במקש Tab כדי לנווט בממשק המשתמש. מוודאים שכל אמצעי הבקרה בממשק המשתמש מקבל את המיקוד כמצופה.
חפשו מקרים שבהם המיקוד זז באופן לא צפוי.
- מתחילים שוב מההתחלה של האפליקציה ומנווטים בממשק המשתמש באמצעות פקדי כיוון, כמו מקשי החיצים במקלדת. בכל רכיב בממשק המשתמש שאפשר להתמקד בו, לוחצים על למעלה, למטה, שמאלה וימינה.
חפשו מקרים שבהם המיקוד זז באופן לא צפוי.
אם נתקלתם במקרים שבהם הניווט באמצעות מקש Tab או באמצעות לחצני הכיוון לא עובד כצפוי, תוכלו לציין איפה צריך להיות המיקוד בפריסה, כפי שמתואר בקטעים הבאים.
ניווט בכרטיסיות
כשמשתמש מנווט באפליקציה באמצעות מקש Tab במקלדת, המערכת מעבירה את המיקוד של הקלט בין הרכיבים על סמך הסדר שבו הם מופיעים בפריסה. לדוגמה, אם משתמשים בפריסה יחסית והסדר של הרכיבים במסך שונה מהסדר בקובץ, יכול להיות שתצטרכו לציין את סדר המיקוד באופן ידני.
לדוגמה, בפריסה הבאה, שני לחצנים מיושרים בצד שמאל, ושדה טקסט מיושר משמאל ללחצן השני. כדי להעביר את המיקוד מהלחצן הראשון לשדה הטקסט ואז ללחצן השני, צריך להגדיר במפורש את סדר המיקוד של כל אחד מהרכיבים שאפשר להתמקד בהם באמצעות המאפיין android:nextFocusForward
.
<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>
עכשיו, במקום שהמיקוד יעבור מ-button1
ל-button2
ואז ל-editText1
, הוא יעבור בהתאם למיקום שלו במסך: מ-button1
ל-editText1
ואז ל-button2
.
טיפול בניווט לפי כיוון
המשתמשים יכולים גם לנווט באפליקציה באמצעות מקשי החיצים במקלדת, בדיוק כמו כשמנווטים באמצעות מקש D או טרקר-בול. המערכת מספקת "השערה הטובה ביותר" לגבי התצוגה שצריך להתמקד בה בכיוון נתון, על סמך הפריסה של התצוגות במסך. עם זאת, לפעמים המערכת טועה.
אם המערכת לא מעבירה את המיקוד לתצוגה המתאימה כשמנווטים בכיוון מסוים, צריך לציין איזו תצוגה צריכה לקבל את המיקוד באמצעות המאפיינים הבאים:
כל מאפיין מציין את התצוגה הבאה שתקבל את המיקוד כשהמשתמש מנווט בכיוון הזה, כפי שצוין במזהה התצוגה. הדוגמה הבאה ממחישה זאת:
<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" ... />
מקורות מידע נוספים
כדאי לעיין במקורות המידע הבאים: