تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
بدءًا من الإصدار 10 من نظام التشغيل Android (المستوى 29 من واجهة برمجة التطبيقات)، يتيح نظام Android التنقّل المستند إلى الإيماءات بشكل كامل. هناك أمران يجب أن يلتزم بهما مطوّرو التطبيقات لضمان توافق تطبيقاتهم مع هذه الميزة:
توسيع محتوى التطبيق من الحافة إلى الحافة
التعامل مع إيماءات التطبيقات المتعارضة
بالإضافة إلى ذلك، يقدّم نظام التشغيل Android 13 (المستوى 33 لواجهة برمجة التطبيقات) إيماءة الرجوع التوقّعية لأجهزة Android، مثل الهواتف والشاشات الكبيرة والأجهزة القابلة للطي، وهي جزء من إصدار متعدد السنوات. يمكن لمطوّري التطبيقات اتّخاذ خطوات لضمان توافق تطبيقاتهم مع ميزة "الرجوع التوقّعي".
توفير محتوى التطبيق من الحافة إلى الحافة
للاستفادة من مساحة الشاشة الإضافية التي يوفّرها شريط التنقّل العائم، عليك ضبط بعض التغييرات في تطبيقك.
قد يتعارض نموذج التنقّل بالإيماءات مع الإيماءات التي كان يستخدمها مطوّرو التطبيقات سابقًا. وقد تحتاج إلى إجراء تعديلات على واجهة المستخدم في تطبيقك نتيجةً لذلك.
التعارضات مع إيماءات الرجوع
إيماءة النظام الجديدة للرجوع هي التمرير سريعًا للداخل من الحافة اليسرى أو اليمنى للشاشة. وقد يتداخل ذلك مع عناصر التنقّل في التطبيق في تلك المناطق. للحفاظ على وظائف العناصر على الحافتَين اليمنى واليسرى من الشاشة، يمكنك إيقاف إيماءة الرجوع بشكل انتقائي من خلال إخبار النظام بالمناطق التي يجب أن تتلقّى إدخال اللمس. يمكنك إجراء ذلك من خلال تمرير
List<Rect> إلى واجهة برمجة التطبيقات View.setSystemGestureExclusionRects()
المقدَّمة في نظام التشغيل Android 10. تتوفّر هذه الطريقة أيضًا في ViewCompat اعتبارًا من androidx.core:core:1.1.0-dev01.
مثلاً:
Kotlin
varexclusionRects=listOf(rect1,rect2,rect3)funonLayout(changedCanvas:Boolean,left:Int,top:Int,right:Int,bottom:Int){// Update rect bounds and the exclusionRects listsetSystemGestureExclusionRects(exclusionRects)}funonDraw(canvas:Canvas){// Update rect bounds and the exclusionRects listsetSystemGestureExclusionRects(exclusionRects)}
Java
List<Rect>exclusionRects;publicvoidonLayout(booleanchangedCanvas,intleft,inttop,intright,intbottom){// Update rect bounds and the exclusionRects listsetSystemGestureExclusionRects(exclusionRects);}publicvoidonDraw(Canvascanvas){// Update rect bounds and the exclusionRects listsetSystemGestureExclusionRects(exclusionRects);}
تعارض مع إيماءات الصفحة الرئيسية أو التبديل السريع
تتضمّن إيماءات النظام الجديدة للانتقال إلى الشاشة الرئيسية والتبديل السريع تمريرات سريعة في أسفل الشاشة في المساحة التي كان يشغلها شريط التنقّل سابقًا. لا يمكن للتطبيقات إيقاف هذه الإيماءات كما يمكنها إيقاف إيماءة الرجوع.
تتطلّب الألعاب والتطبيقات الأخرى التي لا تتضمّن تسلسلاً هرميًا للعناصر المرئية من المستخدم غالبًا التمرير سريعًا بالقرب من مناطق إيماءات النظام. في هذه الحالات، يمكن للألعاب استخدام
Window.setSystemGestureExclusionRects()
لاستبعاد المناطق التي تتداخل مع المناطق المحجوزة لإيماءات النظام. يجب أن تحرص الألعاب على استبعاد هذه المناطق فقط عند الضرورة، مثلاً أثناء اللعب.
إذا كانت إحدى الألعاب تتطلّب من المستخدم التمرير سريعًا بالقرب من منطقة إيماءة الرجوع إلى الشاشة الرئيسية، يمكن للتطبيق طلب عرضها في وضع ملء الشاشة. يؤدي ذلك إلى إيقاف إيماءات النظام أثناء تفاعل المستخدم مع اللعبة، ولكنّه يتيح للمستخدم إعادة تفعيل إيماءات النظام من خلال التمرير سريعًا من أسفل الشاشة.
تحديث تطبيقك ليتوافق مع الإيماءة التوقعية للرجوع
يقدّم الإصدار Android 13 (المستوى 33 لواجهة برمجة التطبيقات) ميزة "الرجوع التوقّعي" على أجهزة Android، مثل الهواتف والشاشات الكبيرة والأجهزة القابلة للطي. تُعدّ إيماءة "الرجوع التوقّعي" جزءًا من إصدار متعدد السنوات. عند اكتمال تنفيذ هذه الميزة،
ستتيح للمستخدمين معاينة الوجهة أو النتيجة الأخرى لإيماءة الرجوع قبل
إكمالها بالكامل، ما يتيح لهم تحديد ما إذا كانوا يريدون مواصلة الرجوع أو البقاء في
الشاشة الحالية.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Ensure compatibility with gesture navigation\n\nBeginning with Android 10 (API level 29), the Android system supports fully\ngesture-based navigation. There are two things app developers must do to ensure\ntheir apps are compatible with this feature:\n\n- Extend app content from edge to edge.\n- Handle conflicting app gestures.\n\nIn addition, Android 13 (API level 33) introduces a\n[predictive back gesture](/guide/navigation/predictive-back-gesture) for Android\ndevices such as phones, large screens, and foldables that is part of a multiyear\nrelease. App developers can take steps to ensure that their apps support the\npredictive back gesture.\n\nProvide edge-to-edge app content\n--------------------------------\n\nTo take advantage of the additional screen space made available by the floating\nnavigation bar, you need to configure certain changes in your app.\n\nSee [Display content edge-to-edge in your app](/training/gestures/edge-to-edge)\nfor details.\n\nHandle conflicting app gestures\n-------------------------------\n\nThe gesture navigation model might conflict with gestures that were previously\nused by app developers. You might need to make adjustments to your app's user\ninterface as a result.\n\n### Conflicts with back gestures\n\nThe new system gesture for back is an inward swipe from either the left or the\nright edge of the screen. This might interfere with app navigation elements in\nthose areas. To maintain functionality of elements on the left and right edges\nof the screen, opt out of the back gesture selectively by indicating to the\nsystem which regions need to receive touch input. You can do this by passing a\n`List\u003cRect\u003e` to the [`View.setSystemGestureExclusionRects()`](/reference/android/view/View#setSystemGestureExclusionRects(java.util.List%3Candroid.graphics.Rect%3E))\nAPI introduced in Android 10. This method is also available in [`ViewCompat`](/reference/androidx/core/view/ViewCompat) as of\n`androidx.core:core:1.1.0-dev01`.\n\nFor example: \n\n### Kotlin\n\n```kotlin\nvar exclusionRects = listOf(rect1, rect2, rect3)\n\nfun onLayout(\n changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) {\n // Update rect bounds and the exclusionRects list\n setSystemGestureExclusionRects(exclusionRects)\n}\n\nfun onDraw(canvas: Canvas) {\n // Update rect bounds and the exclusionRects list\n setSystemGestureExclusionRects(exclusionRects)\n}\n```\n\n### Java\n\n```java\nList\u003cRect\u003e exclusionRects;\n\npublic void onLayout(\n boolean changedCanvas, int left, int top, int right, int bottom) {\n // Update rect bounds and the exclusionRects list\n setSystemGestureExclusionRects(exclusionRects);\n}\n\npublic void onDraw(Canvas canvas) {\n // Update rect bounds and the exclusionRects list\n setSystemGestureExclusionRects(exclusionRects);\n}\n```\n| **Note:** The `DrawerLayout` and `SeekBar` components support automatic opt-out behavior out of the box.\n\n### Conflicts with home or quick-switch gestures\n\nThe new system gestures for home and quick switch both involve swipes at the\nbottom of the screen in the space previously occupied by the nav bar. Apps\ncan't opt out of these gestures as they can with the back gesture.\n\nTo mitigate this problem, Android 10 introduces the\n[`WindowInsets.getMandatorySystemGestureInsets()`](/reference/android/view/WindowInsets.Type#mandatorySystemGestures())\nAPI, which informs apps of the touch recognition thresholds.\n\n### Games and other non-View apps\n\nGames and other apps that don't have a view hierarchy often require the user to\nswipe near the system gesture areas. In those cases, games can use\n[`Window.setSystemGestureExclusionRects()`](/reference/android/view/Window#setSystemGestureExclusionRects(java.util.List%3Candroid.graphics.Rect%3E))\nto exclude areas that overlap with areas reserved for system gestures. Games\nmust make sure to only exclude these areas when necessary, such as during\ngameplay.\n\nIf a game requires the user to swipe near the home gesture area, the app can\nrequest to be laid out in [immersive mode](/training/system-ui/immersive#immersive). This disables the system gestures\nwhile the user is interacting with the game, but lets the user re-enable\nthe system gestures by swiping from the bottom of the screen.\n\nUpdate your app to support the predictive back gesture\n------------------------------------------------------\n\nAndroid 13 (API level 33) introduces a predictive back gesture for Android\ndevices such as phones, large screens, and foldables. The predictive back\ngesture is part of a multiyear release. When fully implemented, this feature\nlets users preview the destination or other result of a back gesture before\nthey fully complete it, allowing them to decide whether to continue or stay in\nthe current view.\n\nSee\n[Add support for the predictive back gesture](/guide/navigation/predictive-back-gesture)\nfor details.\n\nAdditional resources\n--------------------\n\nTo learn more about gesture navigation, see the following:\n\n### Blog posts\n\n- [Gesture Navigation: handling visual overlaps (II)](https://medium.com/androiddevelopers/gesture-navigation-handling-visual-overlaps-4aed565c134c)\n\n### Videos\n\n- [Android 10: Gestural navigation](https://www.youtube.com/watch?v=Ljtz7T8R_Hk)\n- [Dark theme \\& gesture navigation (Google I/O '19)](https://www.youtube.com/watch?v=OCHEjeLC_UY)"]]