الفرق بين المراجعتين لصفحة: «ReactNative/view»
ط تصحيح الروابط |
|||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: View في React Native}}</noinclude> | <noinclude>{{DISPLAYTITLE: View في React Native}}</noinclude> | ||
المُكوِّن <code>View</code> هو المكوِّن الأساسيّ لبناء واجهة مستخدم، وهو حاوية تدعم التخطيط باستخدام [ | المُكوِّن <code>View</code> هو المكوِّن الأساسيّ لبناء واجهة مستخدم، وهو حاوية تدعم التخطيط باستخدام [[ReactNative/flexbox|flexbox]]،وتدعم [[ReactNative/style|التنسيق]]، وبعض مبادئ [[ReactNative/handling touches|معالجة اللمسات]]، وأدوات [[ReactNative/accessibility|التحكم في إمكانية الوصول]]. يُربَطُ المُكوِّن <code>View</code> مباشرةً مع العرض الأصيل الذي يُعادله حسب نظام التشغيل الذي يعمل عليه React Native، سواء أكان ذلك عرض <code>UIView</code>، أو <code><nowiki><div></nowiki></code>، أو <code>android.view</code> وما إلى ذلك. | ||
صُمِّم المُكوِّن <code>View</code> ليتداخل داخل عروضٍ أخرى ويمكن أن لا يحتوي على أي عناصر أبناء كما يُمكن أن يحتوي على العديد من العناصر الأبناء من أي نوع. | صُمِّم المُكوِّن <code>View</code> ليتداخل داخل عروضٍ أخرى ويمكن أن لا يحتوي على أي عناصر أبناء كما يُمكن أن يحتوي على العديد من العناصر الأبناء من أي نوع. | ||
سطر 24: | سطر 24: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
صُمِّمت مكوّنات <code>View</code>لتُستخدَم مع كائن [ | صُمِّمت مكوّنات <code>View</code>لتُستخدَم مع كائن [[ReactNative/stylesheet|StyleSheet]] من أجل الوضوح وتحسين الأداء، رغم أنّ التنسيقات السطريّة (inline styles) مدعومة أيضًا. | ||
==أحداث اللمس الاصطناعية (Synthetic Touch Events)== | ==أحداث اللمس الاصطناعية (Synthetic Touch Events)== | ||
بالنسبة لخاصيات مُستجيب (responder) المُكوِّن <code>View</code> (الخاصيّة <code>onResponderMove</code> مثلا)، يكون حدث اللمس الاصطناعي الذي يُمرَّر إليها على الشكل التالي: | بالنسبة لخاصيات مُستجيب (responder) المُكوِّن <code>View</code> (الخاصيّة <code>onResponderMove</code> مثلا)، يكون حدث اللمس الاصطناعي الذي يُمرَّر إليها على الشكل التالي: |
مراجعة 20:14، 13 سبتمبر 2021
المُكوِّن View
هو المكوِّن الأساسيّ لبناء واجهة مستخدم، وهو حاوية تدعم التخطيط باستخدام flexbox،وتدعم التنسيق، وبعض مبادئ معالجة اللمسات، وأدوات التحكم في إمكانية الوصول. يُربَطُ المُكوِّن View
مباشرةً مع العرض الأصيل الذي يُعادله حسب نظام التشغيل الذي يعمل عليه React Native، سواء أكان ذلك عرض UIView
، أو <div>
، أو android.view
وما إلى ذلك.
صُمِّم المُكوِّن View
ليتداخل داخل عروضٍ أخرى ويمكن أن لا يحتوي على أي عناصر أبناء كما يُمكن أن يحتوي على العديد من العناصر الأبناء من أي نوع.
يُنشئ هذا المثال مُكوِّن View
يُغلِّف صندوقين ملونين ومكونَ نصٍّ في صف مع حشو (padding):
class ViewColoredBoxesWithText extends Component {
render() {
return (
<View
style={{
flexDirection: 'row',
height: 100,
padding: 20,
}}>
<View style={{backgroundColor: 'blue', flex: 0.3}} />
<View style={{backgroundColor: 'red', flex: 0.5}} />
<Text>Hello World!</Text>
</View>
);
}
}
صُمِّمت مكوّنات View
لتُستخدَم مع كائن StyleSheet من أجل الوضوح وتحسين الأداء، رغم أنّ التنسيقات السطريّة (inline styles) مدعومة أيضًا.
أحداث اللمس الاصطناعية (Synthetic Touch Events)
بالنسبة لخاصيات مُستجيب (responder) المُكوِّن View
(الخاصيّة onResponderMove
مثلا)، يكون حدث اللمس الاصطناعي الذي يُمرَّر إليها على الشكل التالي:
nativeEvent
-
changedTouches
: مصفوفة جميع أحداث اللمس التي تغيّرت منذ آخر حدث. -
identifier
: مُعرِّف (ID) اللمسة. -
locationX
: موقع X للّمسة، نسبةً للعنصر. -
locationY
: موقع Y للّمسة، نسبةً للعنصر. -
pageX
: موضع X للّمسة، نسبةً للعنصر الجذر (root element). -
pageY
: موقع Y للّمسة، نسبةً للعنصر الجذر. -
target
: مُعرِّف العقدة (node id) للعنصر الذي يستقبل حدث اللمسة. -
timestamp
: مُعرِّف وقتٍ (time identifier) للمسة، ما يُفيد في حساب السرعة. -
touches
: مصفوفة جميع اللمسات الحالية على الشاشة.
-
للمزيد، انظر صفحة نظام مستجيب الإيماءات.
الخاصيات
onStartShouldSetResponder
هل يريد هذا العرض أن يصبح مستجيبًا عند بدء اللمس؟
مثال: View.props.onStartShouldSetResponder: (event) => [true | false]
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
accessible
عندما تكون قيمتُها القيمةَ true
، فهذا يُشير إلى أنّ العرضَ هو عنصرُ إمكانيةِ الوصول (accessibility element). افتراضيًّا، جميع العناصر القابلة للمس هي عناصر إمكانية وصول.
النوع | مطلوب |
---|---|
قيمة منطقيّة | لا |
accessibilityLabel
تستبدِل النص الذي يقرأه قارئ الشاشة عندما يتفاعل المستخدم مع العنصر. افتراضيًا، يُنشأ الملصق (label) عن طريق العبور عبر جميع المكوّنات الأبناء وتجميع كافة العقد النصية مفصولةً بمسافة.
النوع | مطلوب |
---|---|
سلسلة نصيّة | لا |
accessibilityHint
يُساعد تلميح إمكانية الوصول (accessibility hint) المستخدمينَ على فهم ما سيحدث عندما يقومون بإجراءٍ على عنصر إمكانية الوصول عندما لا تكون النتيجة واضحةً من مُلصَق إمكانية الوصول.
النوع | مطلوب |
---|---|
سلسلة نصيّة | لا |
accessibilityRole
تقوم الخاصيّة accessibilityRole
بتوصيل الغرض من المكون (أي دَوره) إلى مُستخدمِ تقنيةٍ مساعدة (assistive technology).
يُمكن للخاصيّة accessibilityRole
أن تحمل أحد القيم التالية:
-
'none'
- تُستخدَم عندما لا يكون للعنصر أي دور. -
'button'
- تستخدم عندما تجب معاملة العنصر كزر. -
'link'
- تستخدم عندما تجب معاملة العنصر كرابط. -
'search'
- تستخدم عندما تجب معاملة عنصر حقل النص كعنصر بحث كذلك. -
'image'
- تستخدم عندما تجب معاملة العنصر كصورة. يمكن دمجها مع زرٍ أو رابطٍ مثلا. -
'keyboardkey'
- تستخدم عندما يتصرَّف العنصرُ كمفتاح لوحة مفاتيح. -
'text'
- تستخدم عندما تجب معاملة العنصر كنص ثابت لا يمكن تغييره. -
'adjustable'
- تستخدم عندما يمكن "تعديل" العنصر (مثل شريط تمريرٍ [slider]). -
'imagebutton'
- تستخدم عندما تجب معاملة العنصر كزرٍ مع كونِه صورة في نفس الوقت. -
'header'
- تستخدم عندما يتصرف عنصرٌ كترويسةٍ (header) لقسمِ محتوى (كعنوان شريط التنقل). -
'summary'
- تستخدم عندما يمكن استخدام عنصر ما لتقديم ملخص سريع للظروف الحالية في التطبيق عند بدء تشغيل التطبيق لأول مرة. -
'alert'
- تستخدم عندما يحتوي عنصر على نص مهم لعرضه للمستخدم. -
'checkbox'
- تستخدم عندما يمثل عنصر مربعًا يمكن تحديده أو إلغاء تحديده أو في حالة تحديد مختلطة. -
'combobox'
- تستخدم عندما يمثل عنصر مربع تحرير وسرد (combo box)، مما يسمح للمستخدم بالاختيار من بين عدة خيارات. -
'menu'
- تستخدم عندما يكون المكون قائمةً من الخيارات. -
'menubar'
- تستخدم عندما يكون المكون عبارة عن حاوية متعددة القوائم. -
'menuitem'
- تستخدم لتمثيل عنصرٍ داخل قائمة. -
'progressbar'
- تستخدم لتمثيل مكون يشير إلى تقدم المهمة (شريط تقدم). -
'radio'
- تستخدم لتمثيل زر اختيار. -
'radiogroup'
- تستخدم لتمثيل مجموعة من أزرار الاختيار. -
'scrollbar'
- تستخدم لتمثيل شريط تمرير. -
'spinbutton'
- تستخدم لتمثيل زر يفتح قائمة من الخيارات. -
'switch'
- تستخدم لتمثيل مُحوِّلة يمكن تشغيلها وإيقاف تشغيلها. -
'tab'
- تستخدم لتمثيل علامة تبويب. -
'tablist'
- تستخدم لتمثيل قائمة من علامات التبويب. -
'timer'
- تستخدم لتمثيل مؤقت. -
'toolbar'
- تستخدم لتمثيل شريط أدوات (حاوية من أزرارٍ ومكوّنات إجراءات).
النوع | مطلوب |
---|---|
سلسلة نصيّة | لا |
accessibilityState
تصف الحالة الحالية لمكوّنٍ ما لمستخدمِ تقنيةٍ مساعدة.
انظر دليل إمكانية الوصول لمزيد من المعلومات.
النوع | مطلوب |
---|---|
object: {disabled: bool, selected: bool, checked: bool or 'mixed', busy: bool, expanded: bool}
|
لا |
accessibilityValue
تُمثل القيمة الحالية للمكون. يمكن أن تكون قيمتها وصفًا نصيًا لقيمة المكون، ويمكن أن تحتوي على معلومات النطاق (الحد الأدنى [minimum]، القيمة الحالية [current]، والحد الأقصى [maximum]) للمكونات المعتمدة على النطاق (range-based components)، كأشرطة التمرير (sliders) وأشرطة التقدم (progress bars).
انظر دليل إمكانية الوصول لمزيد من المعلومات.
النوع | مطلوب |
---|---|
object: {min: number, max: number, now: number, text: string}
|
لا |
accessibilityActions
تسمح إجراءات إمكانية الوصول (Accessibility actions) لتقنيّة مساعدة باستدعاء إجراءات مكونٍ برمجيًا. يجب أن تحتوي الخاصية accessibilityActions
على قائمة كائنات إجراءات (action objects). يجب أن يحتوي كل كائن إجراء على اسم الحقل وعلى ملصق (label).
انظر دليل إمكانية الوصول لمزيد من المعلومات.
النوع | مطلوب |
---|---|
مصفوفة | لا |
onAccessibilityAction
دالةٌ تُستدعى عند قيام المستخدم بتنفيذ إجراءات إمكانية الوصول. معامل هذه الدالة الوحيد هو حدثٌ يحتوي على اسم الإجراء المراد تنفيذه.
انظر دليل إمكانية الوصول لمزيد من المعلومات.
النوع | مطلوب |
---|---|
دالة | لا |
onAccessibilityTap
عندما تكون الخاصيّة accessible
ذات القيمة true
، سيحاول النظام استدعاء هذه الدالة عندما يقوم المستخدم بإجراء إيماءةِ نقرِ إمكانيةِ وصول (accessibility tap gesture).
النوع | مطلوب |
---|---|
دالة | لا |
onMagicTap
عندما تكون الخاصيّة accessible
ذات القيمة true
، سيستدعي النظام هذه الدالة عندما يقوم المستخدم بإجراء إيماءةِ نقر سحريّة (magic tap gesture).
النوع | مطلوب | المنصة |
---|---|---|
دالة | لا | iOS |
onAccessibilityEscape
عندما تكون الخاصيّة accessible
ذات القيمة true
، سيستدعي النظام هذه الدالة عندما يقوم المستخدم بإجراء إيماءةِ إفلات (escape gesture).
النوع | مطلوب | المنصة |
---|---|---|
دالة | لا | iOS |
accessibilityViewIsModal
قيمة تشير إلى ما إذا كان ينبغي على VoiceOver أن يتجاهل العناصر الموجودة داخل عروض المتلقي الأشقّاء. القيمة الافتراضيّة هي false
.
انظر دليل إمكانية الوصول لمزيد من المعلومات.
النوع | مطلوب | المنصة |
---|---|---|
قيمة منطقيّة | لا | iOS |
accessibilityElementsHidden
قيمة تشير إلى ما إذا كانت عناصر إمكانية الوصول الموجودة في عنصر إمكانية الوصول هذا مخفيةً أو لا. القيمة الافتراضيّة هي false
.
انظر دليل إمكانية الوصول لمزيد من المعلومات.
النوع | مطلوب | المنصة |
---|---|---|
قيمة منطقيّة | لا | iOS |
accessibilityIgnoresInvertColors
قيمةٌ تُشير إلى ما إذا كان ينبغي قلب هذا العرض عند تشغيل قلب الألوان (color inversion). القيمة true
تُشير إلى عدم قلب العرض حتى إذا تم تشغيل قلب الألوان.
انظر دليل إمكانية الوصول لمزيد من المعلومات.
النوع | مطلوب | المنصة |
---|---|---|
قيمة منطقيّة | لا | iOS |
accessibilityLiveRegion
يشير إلى ما إذا كان ينبغي لخدمات إمكانية الوصول إعلام المستخدم عند تَغيُّر هذا العرض. يعمل في Android API المستوى 19 أو أحدث فقط. القيم الممكنة:
-
'none'
: يجب ألا تعلن خدمات إمكانية الوصول عن تغيُّرات هذا العرض. -
'polite'
: يجب أن تعلن خدمات إمكانية الوصول عن تغيُّرات هذا العرض. -
'assertive'
: يجب أن تُقاطع خدمات إمكانية الوصول الكلامَ الحالي للإعلان فورًا عن تغيُّرات هذا العرض.
راجع توثيق View على موقع Android للمزيد.
النوع | مطلوب | المنصة |
---|---|---|
enum('none', 'polite', 'assertive')
|
لا | Android |
importantForAccessibility
تتحكم في مدى أهمية العرض لإمكانية الوصول، ويكون مُهمًّا إذا كان يُطلِق أحداث إمكانية الوصول (accessibility events) وإذا كان يُبلَّغ عنه إلى خدمات إمكانية الوصول (reported to accessibility services) التي تَسْتَعلِم الشاشة (query the screen). هذه خاصيّةٌ تعمل على نظام Android فقط.
القيم الممكنة:
-
'auto'
: يحدد النظام ما إذا كان العرض مُهمًا لإمكانيّة الوصول – القيمة الافتراضية (مستحسن). -
'yes'
: العرض مهم لإمكانيّة الوصول. -
'no'
: العرض ليس مهمّا لإمكانيّة للوصول. -
'no-hide-descendants'
: العرض ليس مهمّا لإمكانيّة للوصول ولا أي من مكوّناته الأحفاد.
راجع توثيق importantForAccessibility على موقع Android للمزيد.
النوع | مطلوب | المنصة |
---|---|---|
enum('auto', 'yes', 'no', 'no-hide-descendants')
|
لا | Android |
hitSlop
تُحدد هذه الخاصيّة المدى الذي يمكن أن يبدأ فيه لمس الزّر بعيدًا عن العرض. توصي إرشادات الواجهة النموذجية بأهداف لمسٍ لا تقل عن 30 إلى 40 نقطة (وحدات بكسل مستقلّة عن الكثافة [density-independent pixels]).
على سبيل المثال، إذا كان عرض قابل للّمس ذا ارتفاعٍ يبلغ 20، يمكن تمديد ارتفاع الجزء القابل للّمس إلى 40 باستخدام: hitSlop={{top: 10, bottom: 10, left: 0, right: 0}}
.
ملاحظة: لا تمتد منطقة اللمس أبدًا بعد حدود العرض الأب، ودائمًا ما يأخذ مؤشر Z-index الخاص بالعروض الأشقّاء (المجاورة) الأولويّةَ إذا وقعت اللمسة على عرضين متداخلين.
النوع | مطلوب |
---|---|
object: {top: number, left: number, bottom: number, right: number}
|
لا |
nativeID
تُستخدَم لتحديد موقع هذا العرض من الشيفرة الأصيلة.
ملاحظة: يؤدي هذا إلى تعطيل تحسين "إزالةُ عرضِ التخطيط فقط (layout-only view removal)" لهذا العرض!
النوع | مطلوب |
---|---|
سلسلة نصيّة | لا |
onLayout
دالةٌ تُستدعى عند حدوث تغيّرات التركيب والتخطيط مع الحدث {nativeEvent: {layout: {x, y, width, height}}}
.
يُطلَق هذا الحدث على الفور بمجرد حساب التخطيط، ولكن قد لا ينعكس التخطيط الجديد على الشاشة في وقت استلام الحدث، خاصة إذا كان تحريكُ تخطيطٍ (layout animation) قيد التحرُّك.
النوع | مطلوب |
---|---|
دالة | لا |
onMoveShouldSetResponder
هل هذا العرض "يتطلّب" الاستجابة للّمس (touch responsiveness)؟ تُستدعى هذه الدالة في كل حركة لمسٍ على المكوّن View
عندما لا يكون المستجيب (the responder).
View.props.onMoveShouldSetResponder: (event) => [true | false]
، بحيثُ يكون event
حدثَ لمسٍ اصطناعي (synthetic touch event) كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onMoveShouldSetResponderCapture
إذا أراد مُكوِّنُ View
أبٍ منع مكوّنِ View
ابنٍ من أن يصبح المستجيب أثناء تحريك المستخدم لإصبعه، فيجب أن يحتويَ على هذا المعالج مُعيدًا القيمة true
.
View.props.onMoveShouldSetResponderCapture: (event) => [true | false]
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onResponderGrant
يستجيب العرض الآن لأحداث اللمس. هذا هو الوقت المناسب لإبراز وإظهار ما يحدث للمستخدم. مثال: View.props.onResponderGrant: (event) => {}
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onResponderMove
عندما يُحرِّك المستخدمُ إصبعه. مثال: View.props.onResponderMove: (event) => {}
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onResponderReject
دالةٌ تُستدعى عندما يكون مستجيبٌ آخر نشِطًا ولا يُحرِّره للعرض الذي يُريد أن يكون المستجيب.
مثال: View.props.onResponderReject: (event) => {}
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onResponderRelease
دالةٌ تُستدعى عند نهاية اللمس. مثال: View.props.onResponderRelease: (event) => {}
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onResponderTerminate
دالةٌ تُستدعى عندما يُأخَذ المستجيب من العرض. قد تأخذه عروض أخرى بعد استدعاء onResponderTerminationRequest
، أو قد يأخذه نظام التشغيل دون طلب (يحدث هذا مع مركز التحكم أو مركز التنبيهات على iOS مثلًا)
مثال: View.props.onResponderTerminate: (event) => {}
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onResponderTerminationRequest
دالة تُستدعى عندما يريد عرضٌ آخر أن يصبح مستجيبًا ويطلب من هذا العرض تحرير المستجيب الخاص به. إعادة القيمة true
يسمح بإطلاقه.
مثال: View.props.onResponderTerminationRequest: (event) => {}
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
onStartShouldSetResponderCapture
إذا أراد مُكوِّن View
منع مُكوِّنِ View
ابنٍ من أن يصبح مستجيبًا عند بداية اللمس، فيجب أن يحتويَ على هذا المعالج مُعيدًا القيمة true
.
مثال: View.props.onStartShouldSetResponderCapture: (event) => [true | false]
، بحيث يكون event
حدثَ لمسٍ اصطناعيّ كما هو موضح أعلاه.
النوع | مطلوب |
---|---|
دالة | لا |
pointerEvents
تتحكم في ما إذا كان العرض قادرًا على أن يكون هدفًا (target) لأحداث اللمس.
-
'auto'
: يمكن أن يكون العرض هدفًا لأحداث اللمس. -
'none'
: لا يعد العرض هدفًا لأحداث اللمس أبدًا. -
'box-none'
: لا يعد العرض هدفًا لأحداث اللمس أبدًا، ولكن يمكن أن تكون عروضه الفرعية أهدافًا. يتصرف العرض كما لو كان ذا الأصناف التالية في CSS:
.box-none {
pointer-events: none;
}
.box-none * {
pointer-events: auto;
}
-
'box-only'
: يمكن أن يكون العرض هدفًا لأحداث اللمس، ولكنَّ عروضه الفرعية لا يُمكن لها أن تكون أهدافًا. يتصرف العرض كما لو كان ذا الأصناف التالية في CSS:
.box-only {
pointer-events: auto;
}
.box-only * {
pointer-events: none;
}
ملاحظة: نظرًا لأن pointerEvents
لا تؤثر على التخطيط أو المظهر، ولأنّ React Native ينحرف عن المواصفة (spec) عبر إضافة أوضاعٍ (modes) إضافية، فإنّ المطورين قد اختاروا عدم تضمين الخاصيّة pointerEvents
على style
. على بعض المنصات، سيحتاج المطورون إلى تطبيقها على شكل className
على أي حال. استخدامُ style
أو لا هو تفصيل تطبيق (implementation detail) خاص بالمنصّة.
النوع | مطلوب |
---|---|
enum('box-none', 'none', 'box-only', 'auto')
|
لا |
removeClippedSubviews
هذه خاصيةُ أداءٍ محجوزة (reserved performance property) موفَّرةٌ من طرف RCTView
وهي مفيدة لتمرير المحتوى عندما يكون هناك العديد من العروض الفرعية، ويكون معظمها خارج الشاشة. لكي تكون هذه الخاصية فعالة، يجب تطبيقها على عرض يحتوي على العديد من العروض الفرعية التي تمتد خارج نطاقه. يجب أن تحتوي العروض الفرعية أيضًا على الخاصيّة overflow: hidden
، كما يجب أن يحتويَ عليها العرض الحاوي (أو أحد عروضه الآباء).
النوع | مطلوب |
---|---|
قيمة منطقيّة | لا |
style
النوع | مطلوب |
---|---|
تنسيقات العرض | لا |
testID
يُستخدَم لتحديد موقع هذا العرض في الاختبارات الشاملة (end-to-end tests).
ملاحظة: يؤدي هذا إلى تعطيل تحسين "إزالةُ عرضِ التخطيط فقط (layout-only view removal)" لهذا العرض!
النوع | مطلوب |
---|---|
سلسلة نصيّة | لا |
collapsable
العروض التي تُستخدَم فقط لتخطيط المكونات الأبناء، أو تلك التي لا تَرسُمُ أي شيء، قد تُزال تلقائيًا من التسلسل الهرمي الأصيل (native hierarchy) كتحسين. عيّن القيمة false
لهذه الخاصية لتعطيل هذا التحسين والتأكّد من وجود هذا العرض في التسلسل الهرمي الأصيل للعروض.
النوع | مطلوب | المنصة |
---|---|---|
قيمة منطقيّة | لا | Android |
needsOffscreenAlphaCompositing
ما إذا كان هذا العرض يحتاج إلى تصييره خارج الشاشة وتكوينه باستخدام قيمة ألفا من أجل الحفاظ على الألوان الصحيحة وسلوك المزج بنسبة 100٪. يلجأ الإعداد الافتراضي (false
) إلى رسم المكون وأبناءه باستخدام قيمة ألفا مُطبقّة على الطلاء المستخدم لرسم كل عنصر بدلاً من تصيير كامل المكوّن خارج الشاشة وتكوينه مرة أخرى بقيمة ألفا. قد يكون هذا الإعداد الافتراضي بارزًا وغير مرغوب فيه في الحالة التي يحتوي فيها العرض الذي تقوم بتعيين العتامة له على عدة عناصر متداخلة (كعروض متعددة متداخلة أو نصٍّ وخلفية).
التصيير خارج الشاشة للحفاظ على سلوك ألفا الصحيح مُكلِّف وصعب التنقيح لمطوري التطبيقات غير الأصيلة، ولهذا السبب فهو غير مُمكَّن افتراضيًا. إذا كنت بحاجة إلى تمكين هذه الخاصية لتحريكٍ ما، فجرّب دمجها مع الخاصيّة renderToHardwareTextureAndroid
إذا كانت محتويات العرض ثابتة (أي لا يلزم إعادة رسمها في كل إطار). إذا مُكِّنت تلك الخاصية، فسيُصيَّر هذا العرض خارج الشاشة مرة واحدة، وسيُحفَظ في تركيب عتاد (hardware texture)، ثم سيُكوَّن على الشاشة باستخدام قيمة ألفا لكل إطار دون الحاجة إلى تبديل أهداف التصيير على وحدة معالجة الرسومات (GPU).
النوع | مطلوب |
---|---|
قيمة منطقيّة | لا |
renderToHardwareTextureAndroid
ما إذا ينبغي أن يُصيِّر هذا العرض نفسه (وجميع أبنائه) في تركيب عتاد واحد على وحدة معالجة الرسومات.
هذا مفيدٌ على نظام Android للتحريكات والتفاعلات التي تُعدِّل فقط العتامة (opacity)، التدوير (rotation)، النقل (translation)، و/أو المقياس (scale): في هذه الحالات، لا يلزم إعادة رسم العرض ولن تحتاج قوائم العرض إلى إعادة التنفيذ. يمكن إعادة استخدام التركيب وإعادة تكوينه بمعاملات مختلفة. الجانب السلبي هو أن هذا قد يستخدم ذاكرة الفيديو المحدودة، لذلك يجب أن يُعاد تعيين القيمة false
لهذه الخاصيّة في نهاية التفاعل أو التحريك.
النوع | مطلوب | المنصة |
---|---|---|
قيمة منطقيّة | لا | Android |
shouldRasterizeIOS
ما إذا كان ينبغي تصيير هذا العرض كصورة نقطية (bitmap) قبل التركيب.
هذا مفيدٌ على نظام iOS للتحريكات والتفاعلات التي لا تُعدِّل أبعاد هذا المكون ولا أبعاد مكوناته الأبناء؛ على سبيل المثال، عند نقل (translating) موضع (position) عرضٍ ثابت، يتيح التنقيط (rasterization) للمُصيِّر إعادةَ استخدام صورة نقطية مخزنة مؤقتًا (أو مُخبّأة: cached) لعرضٍ ثابت وتركيبها بسرعة أثناء كل إطار.
يجلبُ التنقيط مرور رسمٍ خارج الشاشة وتستهلك الصورة النقطية الذاكرة. اختبر وقِس عند استخدام هذه الخاصية.
النوع | مطلوب | المنصة |
---|---|---|
قيمة منطقيّة | لا | iOS |
nextFocusDown
تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لأسفل. انظر توثيق Android.
النوع | مطلوب | المنصة |
---|---|---|
عدد | لا | Android |
nextFocusForward
تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم للأمام. انظر توثيق Android.
النوع | مطلوب | المنصة |
---|---|---|
عدد | لا | Android |
nextFocusLeft
تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لليسار. انظر توثيق Android.
النوع | مطلوب | المنصة |
---|---|---|
عدد | لا | Android |
nextFocusRight
تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لليمين. انظر توثيق Android.
النوع | مطلوب | المنصة |
---|---|---|
عدد | لا | Android |
nextFocusUp
تُحدِّد العرض التالي الذي سيستقبل التركيز عندما ينتقل المستخدم لأعلى. انظر توثيق Android.
النوع | مطلوب | المنصة |
---|---|---|
عدد | لا | Android |
clickable
لتحديد ما إذا كان هذا العرض قابلًا للنقر أو قابلا للّمس للحصول على تلميحات إمكانية الوصول.
النوع | مطلوب | المنصة |
---|---|---|
قيمة منطقيّة | لا | Android |