واجهات برمجة تطبيقات Android 3.0

مستوى واجهة برمجة التطبيقات: 11

بالنسبة للمطورين، يوفر نظام Android 3.0 الأساسي (HONEYCOMB) متاح كملف قابل للتنزيل لحزمة Android SDK. يتضمن النظام الأساسي القابل للتنزيل مكتبة ونظام Android بالإضافة إلى مجموعة من مظاهر المحاكيات وغيرها. لا تتضمن المنصة القابلة للتنزيل أي تطبيقات خارجية المكتبات.

أمّا المطوّرون، فيتوفّر نظام التشغيل Android 3.0 الأساسي قابل للتنزيل لحزمة Android SDK. تتضمن المنصة القابلة للتنزيل مكتبة Android وصورة نظام، بالإضافة إلى مجموعة من مظاهر و أخرى. لبدء تطوير التطبيقات أو اختبارها وفقًا للإصدار Android 3.0، عليك استخدِم "مدير حزمة تطوير البرامج (SDK) لنظام التشغيل Android" لتنزيل النظام الأساسي في حزمة تطوير البرامج (SDK) الخاصة بك.

نظرة عامة على واجهة برمجة التطبيقات

تقدم الأقسام أدناه نظرة عامة فنية على الميزات الجديدة للمطورين في Android 3.0، بما في ذلك الميزات والتغييرات الجديدة في واجهة برمجة التطبيقات لإطار العمل منذ الإصدار السابق.

أجزاء

الجزء هو مكون جديد في إطار العمل يسمح لك بفصل العناصر المميزة من النشاط إلى وحدات مستقلة تحدد واجهة المستخدم ودورة الحياة الخاصة بها. لإنشاء يجب تمديد فئة Fragment وتنفيذ العديد من مراحل النشاط طُرق معاودة الاتصال، مشابهة لـ Activity. يمكنك بعد ذلك دمج خيارات متعددة في نشاط واحد لإنشاء واجهة مستخدم متعددة الأجزاء، "لوحة البيانات" دورة الحياة الخاصة ومدخلات المستخدم.

ويمكنك أيضًا استخدام جزء بدون توفير واجهة مستخدم، واستخدام الجزء بدلاً من ذلك كعامل للنشاط، مثل إدارة تقدم عملية تنزيل لا تحدث إلا أثناء النشاط قيد التشغيل.

علاوةً على ذلك:

  • تكون الأجزاء مستقلة بذاتها ويمكنك إعادة استخدامها في أنشطة متعددة
  • يمكنك إضافة أجزاء وإزالتها واستبدالها وتحريكها داخل النشاط.
  • يمكنك إضافة أجزاء إلى حزمة خلفية يديرها النشاط، مع الحفاظ على حالة إلى الأجزاء أثناء تغييرها والسماح للمستخدم بالتنقل للخلف من خلال الولايات
  • من خلال تقديم بتنسيقات بديلة، يمكنك مزج الأجزاء ومطابقتها استنادًا إلى على حجم الشاشة والاتجاه
  • يمكن للأجزاء الوصول مباشرةً إلى نشاط الحاوية ويمكن أن تساهم في تضمين عناصر شريط الإجراءات الخاص بنشاطك (سنناقشه في ما يلي)

لإدارة الأجزاء في نشاطك، عليك استخدام واجهة برمجة التطبيقات FragmentManager التي توفّر العديد من واجهات برمجة التطبيقات للتفاعل مع الأجزاء، مثل: مثل العثور على أجزاء في النشاط وفصل الأجزاء عن المكدس الخلفي لاستعادة الحالة السابقة.

لإجراء معاملة، مثل إضافة جزء أو إزالته، يجب إنشاء FragmentTransaction. ويمكنك بعد ذلك استدعاء طرق مثل add() remove() أو replace(). بمجرد تطبيق كل التغييرات التي تريد إجراؤها على العملية، يجب استدعاء commit() ويطبّق النظام معاملة التجزئة على النشاط.

لمزيد من المعلومات حول استخدام الأجزاء، يُرجى الاطّلاع على وثائق الأجزاء. متعددة النماذج متوفرة أيضًا في API التوضيحية.

شريط الإجراءات

يعد شريط الإجراءات بديلاً لشريط العنوان التقليدي أعلى نافذة النشاط. وهو يتضمن شعار التطبيق في الزاوية اليسرى ويوفر واجهة جديدة للعناصر في قائمة الخيارات. بالإضافة إلى ذلك، يتيح لك شريط الإجراءات:

  • أضف عناصر القائمة مباشرةً في شريط الإجراءات - على هيئة "عناصر إجراءات".

    في إعلان XML لعنصر القائمة، أدرِج السمة android:showAsAction مع قيمة "ifRoom". عندما تكون هناك مساحة كافية، مباشرةً في شريط الإجراءات. وبخلاف ذلك، يتم وضع العنصر في القائمة الكاملة، يظهرها رمز القائمة على الجانب الأيمن من شريط الإجراءات.

  • استبدال بند عمل بأداة (مثل مربع البحث)—إنشاء "عرض الإجراء".

    في إعلان XML للعنصر في القائمة، أضِف السمة android:actionViewLayout باستخدام مورد تنسيق أو السمة android:actionViewClass مع اسم الفئة التطبيق المصغّر. (يجب أيضًا الإفصاح عن السمة android:showAsAction لكي تظهر السلعة. في شريط الإجراءات). فإذا لم تكن هناك مساحة كافية في شريط الإجراءات وظهر العنصر في القائمة الكاملة، فهي تعمل كعنصر قائمة عادي ولا تعرض الأداة.

  • إضافة إجراء إلى شعار التطبيق واستبداله بشعار مخصّص

    يتم تلقائيًا تخصيص رقم تعريف android.R.id.home لشعار التطبيق، الذي يقدِّمه النظام إلى معاودة الاتصال بالنشاط على "onOptionsItemSelected()" عند لمسه. ما عليك سوى الردّ على رقم التعريف هذا في معاودة الاتصال. لتنفيذ إجراء مثل الانتقال إلى "الصفحة الرئيسية" في تطبيقك الأخرى.

    لاستبدال الرمز بشعار، حدد شعار التطبيق في ملف البيان باستخدام android:logo ثم استدعاء setDisplayUseLogoEnabled(true) في نشاطك.

  • إضافة أشرطة التنقّل للتنقّل للخلف في الحزمة الخلفية للأجزاء
  • إضافة علامات تبويب أو قائمة منسدلة للتنقل عبر الأجزاء
  • خصِّص شريط الإجراءات من خلال إضافة مظاهر وخلفيات

يعد شريط الإجراءات معيارًا لجميع التطبيقات التي تستخدم المظهر المجسم الجديد، وهو وهي قيمة عادية أيضًا عند ضبط android:minSdkVersion أو android:targetSdkVersion على "11".

للحصول على مزيد من المعلومات حول شريط الإجراءات، اطّلِع على مستندات شريط الإجراءات. متعددة النماذج متوفرة أيضًا في API التوضيحية.

حافظة النظام

يمكن للتطبيقات الآن نسخ البيانات ولصقها (بخلاف النص المجرد) من وإلى النظام على مستوى النظام الحافظة. ويمكن أن تكون البيانات التي تم اقتصاصها نصًا عاديًا أو عنوان URI أو هدفًا.

من خلال توفير وصول النظام إلى البيانات التي تريد أن ينسخها المستخدم، من خلال موفّر المحتوى، السماح للمستخدم بنسخ محتوى معقد (مثل صورة أو بنية بيانات) من تطبيقك ولصقه في تطبيق آخر يدعم هذا النوع من المحتوى.

لبدء استخدام الحافظة، يجب الحصول على كائن ClipboardManager العام. عبر الاتصال بـ getSystemService(CLIPBOARD_SERVICE).

لنسخ عنصر إلى الحافظة، عليك إنشاء كائن ClipData جديد يحتوي على عنصر ClipData.Item واحد أو أكثر. الكائنات، يصف كل منها كيانًا واحدًا. لإنشاء عنصر ClipData التي تحتوي على ClipData.Item واحدة فقط، يمكنك استخدام إحدى الطرق المساعدة، مثل newPlainText() وnewUri() وnewIntent()، ويعرض كل منها كائن ClipData تم تحميله مسبقًا ClipData.Item التي تقدمها.

لإضافة ClipData إلى الحافظة، عليك تمريره إلى setPrimaryClip() لمثيل ClipboardManager.

يمكنك بعد ذلك قراءة ملف من الحافظة (للصقه) عن طريق طلب getPrimaryClip() على ClipboardManager. يمكن أن يؤدي التعامل مع بطاقة ClipData التي تتلقاها معقدة وتحتاج إلى التأكد من أنه يمكنك التعامل مع نوع البيانات في الحافظة قبل محاولة لصقه.

تحتفظ الحافظة بجزء واحد فقط من البيانات المقتطعة (علامة ClipData كائن) في الوقت نفسه، ولكن يمكن أن يحتوي ClipData واحد على عدة ClipData.Items.

لمزيد من المعلومات، يُرجى قراءة مقالة نسخ ولصق. يمكنك أيضًا الاطّلاع على تنفيذ بسيط للنسخ واللصق في الإصدارات التجريبية لواجهة برمجة التطبيقات. وتنفيذ أكثر اكتمالاً في عينة Note Pad.

سحب وإفلات

تعمل واجهات برمجة التطبيقات الجديدة على تبسيط عمليات السحب والإفلات في واجهة مستخدم التطبيق. سحب العملية هي نقل نوع من البيانات تتم في ClipData من مكان إلى آخر. نقطتا البداية والنهاية لعملية السحب هما View، وبالتالي فإن واجهات برمجة التطبيقات التي تتعامل مباشرةً مع عمليات السحب والإفلات هي في الصف View.

عملية السحب والإفلات لها دورة حياة محددة بعدة إجراءات سحب - كل منها محدّدة من خلال كائن DragEvent، مثل ACTION_DRAG_STARTED وACTION_DRAG_ENTERED ACTION_DROP تريد كل طريقة عرض تريد المشاركة في سحب العملية يمكنها الاستماع إلى هذه الإجراءات.

لبدء سحب المحتوى من نشاطك، يُرجى الاتصال بالرقم startDrag(). في View، مع تقديم كائن ClipData يمثل البيانات المراد سحبها، View.DragShadowBuilder لتسهيل "الظل" يراها المستخدمون تحت أصابعهم أثناء السحب، وObject يمكن مشاركته معلومات حول كائن السحب مع طرق العرض التي قد تتلقى الكائن.

لقبول كائن سحب في View (تلقي "الإفلات")، سجِّل طريقة العرض. باستخدام OnDragListener من خلال الاتصال بـ setOnDragListener(). عندما يقع حدث السحب على العرض، استدعاء النظام onDrag() لـ OnDragListener، الذي يتلقى DragEvent يصف نوع إجراء السحب الذي حدث (مثل ACTION_DRAG_STARTED وACTION_DRAG_ENTERED ACTION_DROP). أثناء السحب، يستدعي النظام onDrag() بشكل متكرر للعرض أسفل السحب لعرض دفق أحداث السحب. يمكن لشاشة الاستلام الاستعلام عن نوع الحدث الذي تم إرساله إلى "onDragEvent()" من خلال الاتصال بـ getAction() على DragEvent.

ملاحظة: على الرغم من أن حدث السحب قد يحمل كائن ClipData، فلا يرتبط ذلك بحافظة النظام. سحب وإفلات في حافظة النظام، لا ينبغي أبدًا أن تضع العملية البيانات التي تم سحبها في حافظة النظام.

لمزيد من المعلومات، يُرجى الاطلاع على مقالة السحب إزالة المستندات يمكنك أيضًا أن ترى تنفيذ السحب والإفلات في تطبيق واجهات برمجة التطبيقات التجريبية وHoneycomb Gallery التطبيق.

أدوات التطبيقات

يتيح Android 3.0 استخدام العديد من فئات التطبيقات المصغّرة الجديدة لتوفير المزيد من تطبيقات التطبيقات المصغّرة التفاعلية على المستخدمين. الشاشة الرئيسية، بما في ذلك: GridView وListView وStackView وViewFlipper وAdapterViewFlipper

والأهم من ذلك، يمكنك استخدام RemoteViewsService الجديد لإنشاء تطبيق. التطبيقات المصغّرة التي تحتوي على مجموعات، باستخدام التطبيقات المصغّرة مثل GridView وListView وStackView، والمتوفّرة للبيانات عن بُعد، من موفّر محتوى مثلاً

تتوافق الفئة AppWidgetProviderInfo (المحدّدة في ملف XML باستخدام العنصر <appwidget-provider>) أيضًا مع حقلَين جديدَين: autoAdvanceViewId وpreviewImage. يتيح لك الحقل autoAdvanceViewId تحديد معرّف الملف الشخصي العرض الفرعي لأداة التطبيق التي يجب أن يتقدّم بها تلقائيًا مضيف أداة التطبيق. تشير رسالة الأشكال البيانية يحدد حقل previewImage معاينة لما شكل التطبيق المصغّر ويتم عرضه للمستخدم من أداة اختيار التطبيقات المصغّرة. إذا لم يكن هذا الحقل التطبيق، يتم استخدام رمز التطبيق المصغّر للمعاينة.

للمساعدة في إنشاء صورة معاينة لأداة تطبيقك (لتحديدها في الحقل previewImage)، يشتمل محاكي Android على تطبيق يسمى "معاينة الأداة". لإنشاء صورة معاينة، شغِّل هذا التطبيق، ثم اختَر التطبيق المصغَّر لتطبيقك وإعداده بالطريقة التي تريد أن تظهر بها صورة المعاينة، ثم احفظ ووضعها في موارد تطبيقك القابلة للرسم.

يمكنك الاطّلاع على تنفيذ الميزات الجديدة للتطبيق المصغّر في تطبيق StackView المصغّر وأداة قائمة الطقس. التطبيقات.

إشعارات شريط الحالة

تم توسيع واجهات برمجة تطبيقات Notification لإتاحة المزيد من حالات المحتوى الغني بالمحتوى. من الأشرطة، بالإضافة إلى فئة Notification.Builder الجديدة التي تتيح لك بسهولة إنشاء كائنات Notification

تشمل الميزات الجديدة ما يلي:

  • ظهور رمز كبير في الإشعار، وذلك باستخدام الرمز setLargeIcon() عادة ما يكون هذا تطبيقات اجتماعية لعرض صورة جهة الاتصال للشخص الذي يُصدر أو إشعار تطبيقات الوسائط بعرض صورة مصغّرة للألبوم.
  • إتاحة تنسيقات مخصّصة في شريط الحالة، باستخدام setTicker()
  • يمكنك استخدام تنسيقات مخصّصة للإشعارات تتضمّن أزرارًا مع PendingIntent، وذلك من أجل الحصول على المزيد من تطبيقات الإشعارات التفاعلية. على سبيل المثال، يمكن للإشعار التحكّم في تشغيل الموسيقى بدون بدء نشاط.

أدوات تحميل المحتوى

تسهّل واجهات برمجة التطبيقات الجديدة لإطار العمل التحميل غير المتزامن للبيانات باستخدام فئة Loader. ويمكنك استخدامه مع مكونات واجهة المستخدم مثل طرق العرض لتحميل البيانات ديناميكيًا من سلاسل محادثات العامل. إنّ الفئة الفرعية CursorLoader مصمّمة خصيصًا لمساعدتك على إجراء ذلك في ما يخص البيانات التي تستند إليها ContentProvider.

ما عليك سوى تنفيذ واجهة LoaderCallbacks لتلقّي عمليات الاستدعاء عند طلب أداة تحميل جديدة أو عند توفّر بيانات ثم قم باستدعاء initLoader() لإعداد لنشاطك أو للجزء.

ولمزيد من المعلومات، اطّلِع على مستندات التحميلات. يمكنك أيضًا الاطّلاع على مثال على رمز برمجي باستخدام برامج تحميل في دالة LoaderCursor و نماذج LoaderThrottle.

واجهة برمجة تطبيقات Bluetooth A2DP وسماعات الرأس

يشتمل Android الآن على واجهات برمجة تطبيقات للتطبيقات للتحقُّق من حالة اتصال Bluetooth A2DP المتصل، أجهزة الملف الشخصي لسماعة الرأس. على سبيل المثال، يمكن للتطبيقات تحديد وقت تشغيل سماعة رأس بلوتوث متصلًا بالاستماع إلى الموسيقى وإبلاغ المستخدم حسب الاقتضاء. يمكن أن تتلقى الطلبات أيضًا عمليات البث لأوامر AT الخاصة بالموردين وإشعار المستخدم بحالة الاتصال الجهاز، مثلاً عند انخفاض طاقة بطارية الجهاز المتصل.

يمكنك إعداد BluetoothProfile المعنية من خلال طلب getProfileProxy() باستخدام A2DP أو HEADSET. ثابت الملف الشخصي وBluetoothProfile.ServiceListener لتلقي عمليات معاودة الاتصال عند توصيل عميل البلوتوث أو قطع اتصاله.

إطار عمل الصور المتحركة

هو إطار عمل مرن جديد تمامًا يتيح لك تحريك خصائص عشوائية لأي كائن. (عرض أو رسم أو جزء أو كائن أو أي شيء آخر). إنها تسمح لك بتحديد عدة جوانب الرسوم المتحركة، مثل:

  • المدة
  • مقدار التكرار والسلوك
  • نوع استقراء الوقت
  • تعمل الصور المتحركة على تشغيل الصور المتحركة معًا، أو بشكل تسلسلي، أو بعد تأخيرات محددة
  • مهلة إعادة تحميل الإطار

يمكنك تحديد جوانب الرسوم المتحركة هذه وغيرها، بالنسبة إلى عدد صحيح للكائن والعائم والنظام السداسي العشري. قيم اللون، افتراضيًا. أي، عندما يحتوي كائن على حقل خاصية لأحد هذه الأنواع، يمكنه تغيير قيمته بمرور الوقت للتأثير على الرسوم المتحركة. لتحريك أي نوع آخر من القيمة، فإنك تخبر إلى كيفية حساب القيم لهذا النوع المحدّد من خلال تنفيذ واجهة TypeEvaluator.

هناك نوعان من الصور المتحركة يمكنك استخدامهما لتحريك قيم السمة: ValueAnimator وObjectAnimator. يحتسب ValueAnimator قيم الحركة، لكنه لا يعرف السمة المحددة كائن أو خاصية يتم تحريكها نتيجة لذلك. إنها ببساطة تجري العمليات الحسابية، ويجب والاستماع إلى التحديثات ومعالجة البيانات بمنطقك الخاص. ObjectAnimator هي فئة فرعية من ValueAnimator يسمح لك بتعيين الكائن والخاصية على الحركة، كما أنها تتعامل مع جميع أعمال الرسوم المتحركة. أي أنك تمنح ObjectAnimator الكائن لتحريكه، وخاصية الكائن التي تريد تغييرها بمرور الوقت، ومجموعة من القيم لتطبيقها على الخاصية خلال ثم ابدأ تشغيل الرسوم المتحركة.

بالإضافة إلى ذلك، تتيح الفئة LayoutTransition النقل التلقائي. والرسوم المتحركة للتغييرات التي تجريها على تخطيط نشاطك. ولتفعيل الانتقالات لجزء من تنسيق، أنشئ كائن LayoutTransition واضبطه على أي ViewGroup من خلال الاتصال بـ setLayoutTransition(). يؤدي هذا إلى الرسوم المتحركة لتشغيلها عند إضافة عناصر إلى المجموعة أو إزالتها منها. لتحديد خيار مخصّص صور متحركة، وطلب setAnimator() على LayoutTransition وتوفير Animator مخصص، على سبيل المثال ValueAnimator أو ObjectAnimator التي تمت مناقشتها أعلاه.

لمزيد من المعلومات، اطّلِع على مستندات حركة الموقع. يمكنك أيضًا الاطلاع على نماذج متعددة باستخدام واجهات برمجة تطبيقات الرسوم المتحركة في واجهة برمجة التطبيقات تجريبي.

إطار عمل واجهة المستخدم الموسَّعة

  • تحديد الخيارات المتعدّدة في ListView وGridView

    يسمح وضع CHOICE_MODE_MULTIPLE_MODAL الجديد في setChoiceMode() للمستخدمين باختيار عناصر متعددة. من ListView أو GridView. عند استخدامها بالتزامن مع شريط الإجراءات، يمكن للمستخدمين تحديد عناصر متعددة ثم تحديد الإجراء تنفيذها من قائمة الخيارات في شريط الإجراءات (والذي تحولت إلى قائمة خيارات متعددة وضع الإجراء).

    لتفعيل ميزة الاختيار من متعدد، يُرجى الاتصال بالرقم setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL) وتسجيل MultiChoiceModeListener مع setMultiChoiceModeListener().

    عندما يضغط المستخدم مع الاستمرار على أحد العناصر، يتحول شريط الإجراءات إلى الخيارات المتعددة وضع الإجراء. يرسل النظام إشعارًا إلى جهاز "MultiChoiceModeListener" عند اختيار العناصر من خلال الاتصال بـ onItemCheckedStateChanged().

    لعرض مثال على الاختيار من متعدد، راجع List15. JavaScript الفئة في نموذج تطبيق عروض واجهة برمجة التطبيقات.

  • واجهات برمجة تطبيقات جديدة لتحويل طرق العرض

    تتيح لك واجهات برمجة التطبيقات الجديدة تطبيق عمليات التحويل الثنائية الأبعاد والثلاثية الأبعاد بسهولة على طرق العرض ضمن نشاطك. التصميم. ويمكن إجراء إحالات ناجحة جديدة من خلال مجموعة من خصائص العناصر التي تحدِّد سمات طريقة العرض. موضع التخطيط والاتجاه والشفافية والمزيد.

    تشمل الطرق الجديدة لضبط خصائص الملف الشخصي ما يلي: setAlpha() وsetBottom() وsetLeft() وsetRight() وsetBottom() وsetPivotX() وsetPivotY() وsetRotationX() وsetRotationY() وsetScaleX() وsetScaleY() وsetAlpha() وغير ذلك.

    تحتوي بعض الطرق أيضًا على سمة XML مقابلة يمكنك تحديدها في التنسيق لتطبيق تحويل تلقائي. تشمل السمات المتاحة ما يلي: translationX وtranslationY وrotation rotationX، rotationY، scaleX، scaleY، transformPivotX، transformPivotY وalpha.

    استخدام بعض هذه الخصائص الجديدة في الملف الشخصي مع إطار عمل الصور المتحركة الجديد (تمت مناقشة أعلاه)، يمكنك بسهولة تطبيق بعض الرسوم المتحركة الرائعة على طرق العرض. على سبيل المثال، لتدوير على محوره الصادي، زوّد ObjectAnimator بالرمز View، أي "التدوير ص" الخاصة بها، وقيم البداية والنهاية:

    Kotlin

    ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply {
        duration = 2000
        start()
    }
    

    Java

    ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360);
    animator.setDuration(2000);
    animator.start();
    
  • مظاهر جديدة للتصوير المجسم

    تمت إعادة تصميم التطبيقات المصغّرة للنظام والمظهر العام ودمج أدوات جديدة. "مجسم" مظهر واجهة المستخدم. يطبّق النظام المظهر الجديد. باستخدام نظام النمط والمظهر العادي.

    أي تطبيق يستهدف النظام الأساسي Android 3.0، من خلال ضبط android:minSdkVersion أو android:targetSdkVersion إلى "11"، يكتسب المظهر المجسم تلقائيًا. ومع ذلك، إذا يطبق التطبيق أيضًا المظهر الخاص به، فسيتجاهل المظهر مظهر مجسم، ما لم يتم تعديل الأنماط لاكتساب المظهر المجسم.

    لتطبيق المظهر المجسم على الأنشطة الفردية أو اكتسابها في المظهر الخاص بك تعريفات، استخدم أي من الأعمدة الجديدة العديدة Theme.Holo الموضوعات. إذا كان تطبيقك متوافقًا مع إصدار Android أقدم من 3.0 وتم تطبيقه مظاهر مخصصة، يجب عليك تحديد مظهر وفقًا للنظام الأساسي الإصدار.

  • تطبيقات مصغّرة جديدة
    • AdapterViewAnimator

      الفئة الأساسية لـ AdapterView التي تنفِّذ الصور المتحركة عند التبديل بين طرق العرض.

    • AdapterViewFlipper

      ViewAnimator بسيط يتحرك بين عرضين أو أكثر لهما تمت إضافتها إليه. يتم عرض طفل واحد فقط في كل مرة. وعند طلبها، يمكن أن ينقلب تلقائيًا بين لكل طفل على فترات منتظمة.

    • CalendarView

      للسماح للمستخدمين بتحديد التواريخ من التقويم عن طريق لمس التاريخ، كما يمكنهم التمرير أو التمرير التقويم إلى التاريخ المطلوب. يمكنك ضبط نطاق التواريخ المتاحة في الأداة.

    • ListPopupWindow

      تثبيت نفسها في عرض المضيف وعرض قائمة من الاختيارات، مثل قائمة من الخيارات اقتراحات عند الكتابة في طريقة عرض EditText.

    • NumberPicker

      لتمكين المستخدم من اختيار رقم من نطاق محدد مسبقًا. يعرض التطبيق المصغّر إدخالاً وزر لأعلى ولأسفل لاختيار رقم. يتيح لمس حقل الإدخال للمستخدم التمرير بين القيم أو النقر مرة أخرى لتعديل القيمة الحالية مباشرةً كما يتيح لك تعيين مواضع إلى السلاسل، بحيث يتم عرض السلسلة المقابلة بدلاً من الفهرس الموقع.

    • PopupMenu

      تعرض هذه السمة Menu في نافذة منبثقة مشروطة تكون ثابتة في إحدى طرق العرض. تشير رسالة الأشكال البيانية أسفل عرض الإرساء في حال وجود مساحة، أو فوقه إذا لم يكن هناك مساحة. إذا كانت أداة IME (لطيفة لوحة المفاتيح)، فلن تتداخل النافذة المنبثقة مع أداة IME حتى يلمس المستخدم القائمة.

    • SearchView

      توفر مربع بحث يمكنك تهيئته لعرض طلبات البحث إلى موقع محدد النشاط وعرض اقتراحات البحث (بالطريقة نفسها التي يستخدمها مربع حوار البحث التقليدي). هذا النمط يمكن الاستفادة منه على وجه الخصوص لتقديم أداة بحث في شريط الإجراءات. لمزيد من المعلومات راجع إنشاء واجهة بحث.

    • StackView

      طريقة عرض تعرض عناصرها الثانوية في حزمة ثلاثية الأبعاد وتسمح للمستخدمين بالتمرير مثل rolodex.

الرسومات

  • رسومات ثنائية الأبعاد مسرَّعة على الأجهزة

    يمكنك الآن تفعيل عارض OpenGL لتطبيقك من خلال ضبط android:hardwareAccelerated="true" في العنصر <application> الخاص بعنصر البيان. عنصر أو لفرد <activity> عناصر.

    تساعد هذه العلامة التطبيقات من خلال جعلها ترسم بشكل أسرع. ينتج عن ذلك رسوم متحركة أكثر سلاسة، وتمرير أكثر سلاسة، وأداء أفضل بشكل عام واستجابة لتفاعل المستخدم.

  • عرض دعم طبقات الأجهزة والبرامج

    لا تتضمّن View أي طبقة بشكل تلقائي. يمكنك تحديد أن طبقة العرض مدعومة بطبقة أجهزة أو برامج محددة بالقيمتين LAYER_TYPE_HARDWARE وLAYER_TYPE_SOFTWARE، باستخدام setLayerType() أو layerType .

    طبقة الأجهزة مدعومة بزخرفة خاصة بالأجهزة (بشكل عام كائنات مخزن الإطارات أو FBO على أجهزة OpenGL) ويتسبب في عرض طريقة العرض باستخدام ميزة عرض أجهزة Android. ولكن فقط في حالة تشغيل تسريع الأجهزة للعرض الهرمي. عندما يكون الجهاز يتم إيقاف التسريع، وتعمل طبقات الأجهزة مثل طبقات البرنامج تمامًا.

    طبقة البرامج مدعومة بصورة نقطية وتؤدي إلى عرض طريقة العرض باستخدام واجهة مسار عرض البرامج، حتى في حال تفعيل تسريع الأجهزة. ينبغي أن تكون طبقات البرنامج يتم تجنّبه عندما يتم تحديث العرض التدرّجي المتأثر بشكل متكرّر. سيتطلب كل تحديث إعادة عرض طبقة البرامج، والتي قد تكون بطيئة.

    لمزيد من المعلومات، اطّلِع على المستندَين LAYER_TYPE_HARDWARE وLAYER_TYPE_SOFTWARE.

  • محرك الرسومات الثلاثية الأبعاد في Renderscript

    Renderscript هو إطار عمل ثلاثي الأبعاد لوقت التشغيل يوفر واجهة برمجة تطبيقات لإنشاء مشاهد ثلاثية الأبعاد أيضًا. كلغة تظليل خاصة مستقلة عن النظام الأساسي لتحقيق أفضل أداء. باستخدام Renderscript، تسريع عمليات الرسومات ومعالجة البيانات. Renderscript هو وسيلة مثالية لإنشاء التأثيرات الثلاثية الأبعاد العالية الأداء للتطبيقات والخلفيات ولوحات العرض الدوّارة وغيرها

    لمزيد من المعلومات، اطلع على العرض والحوسبة الثلاثية الأبعاد باستخدام مستندات Renderscript.

الوسائط

  • فيديو باستخدام وضع "التسريع الزمني"

    تتيح واجهات برمجة التطبيقات Camcorder الآن إمكانية تسجيل فيديو في وضع "التسريع الزمني". يحدّد setCaptureRate() معدّل عرض اللقطات. تصويره.

  • إتاحة الزخرفة في عمليات بث الصور

    يسمح لك الإصدار SurfaceTexture الجديد بالتقاط صور على شكل OpenGL ES. زخرفة. من خلال الاتصال بـ setPreviewTexture() للحصول على على سبيل المثال Camera، يمكنك تحديد SurfaceTexture التي سيتم بناءً عليها رسم تشغيل الفيديو أو معاينة الإطارات من والكاميرا.

  • البث المباشر عبر HTTP

    يمكن للتطبيقات الآن تمرير عنوان URL لقائمة تشغيل M3U إلى إطار عمل الوسائط لبدء HTTP Live جلسة بث مباشر. يتوافق إطار عمل الوسائط مع معظم مواصفات البث المباشر عبر HTTP، بما في ذلك معدل نقل البيانات التكيفي راجع مستند تنسيقات الوسائط المتوافقة للحصول على مزيد من المعلومات.

  • بيانات EXIF

    تتضمّن "ExifInterface" حقولاً جديدة لكل من فتحة الصورة وحساسية الضوء ودرجة الإضاءة. الوقت.

  • الملفات الشخصية لكاميرات الفيديو

    طريقة hasProfile() جديدة وعدة فيديوهات تتيح لك ملفات الجودة الشخصية (مثل QUALITY_1080P وQUALITY_720P وQUALITY_CIF وغيرها) تحديد كاميرا الفيديو. وخيارات الجودة.

  • نقل ملفات الوسائط الرقمية

    تشمل المنصة دعمًا مدمجًا لبروتوكول نقل الوسائط/الصور (MTP/PTP) عبر USB، التي تتيح للمستخدمين نقل أي نوع من ملفات الوسائط بين الأجهزة وإلى كمبيوتر مضيف بسهولة. ويمكن لمطوّري البرامج الاستفادة من هذا الدعم، حيث يتم إنشاء تطبيقات تتيح للمستخدمين إنشاء محتوى غني ملفات الوسائط التي قد يرغبون في نقلها أو مشاركتها على جميع الأجهزة.

  • إدارة الحقوق الرقمية (DRM)

    إطار عمل جديد موسّع لإدارة الحقوق الرقمية (DRM) بغرض التحقق من المحتوى الرقمي وتنفيذه الحقوق. يتم تنفيذها في طبقتين معماريتين:

    • هي واجهة برمجة تطبيقات خاصة بإطار عمل DRM، ويتم تشغيلها من خلال Dalvik VM في التطبيقات القياسية.
    • يشير هذا المصطلح إلى مدير لإدارة الحقوق الرقمية للرموز البرمجية ينفّذ واجهة برمجة التطبيقات الخاصة بإطار العمل ويعرض واجهة لنظام إدارة الحقوق الرقمية. المكونات الإضافية لمعالجة إدارة الحقوق وفك التشفير لمختلف أنظمة إدارة الحقوق الرقمية.

    بالنسبة إلى مطوري التطبيقات، يقدم إطار العمل واجهة برمجة تطبيقات مختصرة وموحدة تعمل على تبسيط إدارة المحتوى المحمي تخفي واجهة برمجة التطبيقات تعقيد عمليات إدارة الحقوق الرقمية وتتيح وضع تشغيل متناسق لكل من المحتوى المحمي وغير المحمي، وعبر مجموعة متنوعة من إدارة الحقوق الرقمية المخططات.

    بالنسبة إلى الشركات المصنّعة للأجهزة ومالكي المحتوى ومزوّدي الوسائط الرقمية على الإنترنت، يمكن الاستفادة من إدارة الحقوق الرقمية للمكوّن الإضافي API في إطار العمل توفيرًا وسيلة لإضافة دعم لخطة إدارة الحقوق الرقمية (DRM) التي يختارها المستخدم إلى نظام Android: لتعزيز أمان المحتوى

    لا يوفّر إصدار المعاينة أي مكوّنات إضافية أصلية خاصة بإدارة الحقوق الرقمية (DRM) للتحقّق من المحتوى الرقمي وتنفيذه الحقوق. ومع ذلك، يمكن للشركات المصنّعة للأجهزة شحن مكوّنات DRM الإضافية مع أجهزتهم.

    يمكنك العثور على جميع واجهات برمجة تطبيقات DRM في حزمة android.drm.

دعم لوحة المفاتيح

  • إتاحة عناصر التعديل Control وMeta وCaps Lock وNum Lock و Scroll Lock. لمزيد من المعلومات اطّلِع على META_CTRL_ON والحقول ذات الصلة.
  • دعم للوحات المفاتيح الكاملة بنمط سطح المكتب، بما في ذلك دعم مفاتيح مثل Escape وHome وEnd "حذف" وغير ذلك. ويمكنك تحديد ما إذا كان مصدر الأحداث الرئيسية هو لوحة مفاتيح كاملة من خلال اتّباع الخطوات التالية: جارٍ الاستعلام عن getKeyboardType() والتحقّق من KeyCharacterMap.FULL
  • يمكن الآن استخدام ميزة القص والنسخ والنسخ باستخدام لوحة المفاتيح في TextView. واللصق وتحديد الكل، باستخدام مجموعات المفاتيح Control+X وControl+C Control+V وControl+A. يتيح أيضًا استخدام PageUp/PageDown وHome/End تحديد النص باستخدام لوحة المفاتيح.
  • يضيف KeyEvent عدة طرق جديدة لتسهيل عملية التحقّق من المفتاح. حالة التعديل بشكل صحيح ومتسق. يمكنك الاطّلاع على hasModifiers(int). hasNoModifiers(), metaStateHasModifiers(), metaStateHasNoModifiers()
  • يمكن للتطبيقات تنفيذ اختصارات لوحة مفاتيح مخصّصة من خلال التصنيف الفرعي Activity أو Dialog أو View وتنفيذ onKeyShortcut() يستدعي إطار العمل هذه الطريقة عند دمج مفتاح مع مفتاح التحكّم. عند إنشاء قائمة خيارات، يمكنك تسجيل لوحة المفاتيح. من خلال ضبط السمة android:alphabeticShortcut أو android:numericShortcut لكل <item> (أو باستخدام setShortcut()).
  • يتضمن Android 3.0 "لوحة مفاتيح افتراضية" جديدة جهاز يحمل رقم التعريف KeyCharacterMap.VIRTUAL_KEYBOARD. النسخة الافتراضية تحتوي لوحة المفاتيح على خريطة رئيسية بنمط سطح المكتب في الولايات المتحدة، وهي مفيدة لتجميع الأحداث الرئيسية من أجل الاختبار إدخال.

تقسيم أحداث اللمس

في السابق، كانت طريقة عرض واحدة فقط تقبل أحداث اللمس في آن واحد. الإصدار 3.0 من نظام التشغيل Android دعم تقسيم أحداث اللمس بين طرق العرض وحتى النوافذ، بحيث يمكن قبول طرق العرض المختلفة أحداث لمس متزامنة

يتم تفعيل أحداث اللمس المقسّمة تلقائيًا عندما يستهدف أحد التطبيقات. الإصدار 3.0 من نظام التشغيل Android. أي عندما يحدّد التطبيق إما android:minSdkVersion أو قيمة السمة android:targetSdkVersion إلى "11".

مع ذلك، تسمح لك السمات التالية بإيقاف أحداث اللمس من تقسيمها في طرق العرض داخلها. مجموعات طرق عرض محددة وعبر النوافذ

  • السمة android:splitMotionEvents لمجموعات الملف الشخصي يتيح لك هذا الخيار إيقاف أحداث اللمس المقسّمة التي تحدث بين طرق العرض الثانوية في أحد التنسيقات. مثلاً:
    <LinearLayout android:splitMotionEvents="false" ... >
        ...
    </LinearLayout>
    

    وبهذه الطريقة، لا يمكن لطرق العرض الفرعية في التنسيق الخطي تقسيم أحداث اللمس، إذ يمكن لطريقة عرض واحدة فقط بتلقي أحداث لمس في كل مرة.

  • خاصية النمط android:windowEnableSplitTouch يسمح لك بتعطيل أحداث اللمس عبر النوافذ، عن طريق تطبيقها على مظهر في النشاط أو تطبيقًا كاملاً. مثلاً:
    <style name="NoSplitMotionEvents" parent="android:Theme.Holo">
        <item name="android:windowEnableSplitTouch">false</item>
        ...
    </style>
    

    عند تطبيق هذا المظهر على <activity> أو <application>، لا يتم قبول سوى أحداث اللمس ضمن نافذة النشاط الحالية. على سبيل المثال، من خلال تعطيل التقسيم أحداث اللمس عبر النوافذ، فلا يمكن لشريط النظام تلقي أحداث اللمس في نفس الوقت الأخرى. لا يؤثّر ذلك في ما إذا كان بإمكان المشاهدات داخل النشاط تقسيم اللمس. الأحداث: لا يزال بإمكان النشاط تلقائيًا تقسيم أحداث اللمس بين طرق العرض.

    للمزيد من المعلومات عن إنشاء مظهر، يُرجى الاطّلاع على تطبيق الأنماط والمظاهر.

WebKit

  • فئة WebViewFragment جديدة لإنشاء جزء يتألف من WebView
  • طُرق WebSettings الجديدة:
    • يتيح لك setDisplayZoomControls() إخفاء عناصر التحكّم في التكبير أو التصغير التي تظهر على الشاشة مع السماح للمستخدم بالتكبير أو التصغير باستخدام إيماءات الأصابع (يجب ضبط setBuiltInZoomControls() true).
    • تسمح لك طريقة WebSettings الجديدة، وهي setEnableSmoothTransition()، لتمكين الانتقالات السلسة عند استخدام العرض الشامل والتكبير/التصغير. عند تفعيل هذا الخيار، سيختار WebView أحد الحلول. لتحقيق أفضل أداء (على سبيل المثال، قد لا يتم تحديث محتوى WebView أثناء عملية انتقالية).
  • طُرق WebView الجديدة:
    • يمكنك معاودة الاتصال بالرقم onPause() لإيقاف أي معالجة مؤقتًا. المرتبطة بـ WebView عندما تصبح مخفية. يفيد ذلك في تقليل وحدة المعالجة المركزية غير الضرورية أو حركة بيانات الشبكة عندما لا يكون WebView في المقدّمة.
    • معاودة الاتصال "onResume()"، لاستئناف المعالجة المرتبط بـ WebView الذي تم إيقافه مؤقتًا خلال onPause()
    • يتيح لك saveWebArchive() حفظ العرض الحالي كأرشيف ويب على الجهاز.
    • يبدأ showFindDialog() عملية بحث نصية في العرض الحالي.

المتصفح

يضيف تطبيق المتصفح الميزات التالية لتشغيل تطبيقات الويب:

  • التقاط الوسائط

    وفق تعريف HTML Media Capture المواصفات، يتيح المتصفح لتطبيقات الويب الدخول إلى الصوت والتقاط الصور والفيديو إمكانات الجهاز. على سبيل المثال، توفر لغة HTML التالية مدخلاً للمستخدم التقاط صورة لتحميلها:

    <input type="file" accept="image/*;capture=camera" />
    

    أو من خلال استبعاد المعلَمة capture=camera، يمكن للمستخدم اختيار التقاط صورة جديدة بالكاميرا أو اختيار صورة من الجهاز (مثلاً من تطبيق المعرض).

  • اتجاه الجهاز

    على النحو المحدّد في حدث اتجاه الجهاز المواصفات، يتيح المتصفح لتطبيقات الويب الاستماع إلى أحداث DOM التي توفر معلومات حول الاتجاه المادي وحركة الجهاز.

    يتم التعبير عن اتجاه الجهاز بالمحورين x وy وz، بالدرجات والحركة بيانات معدل التسارع والتدوير. يمكن تسجيل صفحة ويب في الاتجاه الأحداث من خلال الاتصال بـ window.addEventListener مع نوع الحدث "deviceorientation" والتسجيل في فعاليات الحركة من خلال تسجيل نوع الحدث "devicemotion".

  • الإحالات الناجحة الثلاثية الأبعاد في CSS

    كما هو موضح في التحويل الثلاثي الأبعاد لـ CSS مواصفات الوحدة النمطية، يتيح المتصفح تحويل العناصر المعروضة بواسطة CSS إلى ثلاثة الأبعاد.

أدوات تنسيق JSON

ستساعدك الصفوف الجديدة "JsonReader" و"JsonWriter" قراءة وكتابة تدفقات JSON. تتكامل واجهات برمجة التطبيقات الجديدة مع فئات org.json التي تعالج وثيقة في الذاكرة.

يمكنك إنشاء مثيل لـ JsonReader من خلال استدعاء الدالة طريقة الدالة الإنشائية وتمرير InputStreamReader التي تغذي سلسلة JSON. بعد ذلك، يمكنك بدء قراءة عنصر من خلال استدعاء beginObject()، وقراءة اسم المفتاح بـ nextName()، اقرأ القيمة باستخدام الطرق المرتبطة بالنوع، مثل nextString() وnextInt()، واستمر في ذلك عندما تكون hasNext() صحيحة.

يمكنك إنشاء مثيل لـ JsonWriter من خلال استدعاء الدالة الإنشائية لها لتمرير OutputStreamWriter المناسبة. ثم اكتب بيانات JSON بطريقة مشابه للقارئ، باستخدام name() لإضافة اسم السمة وطريقة value() مناسبة لإضافة القيم

تكون هذه الفئات صارمة بشكل تلقائي. setLenient() في كل فئة تهيئهم ليكونوا أكثر حرية في ما يقبلونه. هذا التساهل وضع التحليل متوافق أيضًا مع المحلِّل اللغوي التلقائي في org.json.

ثوابت الميزات الجديدة

<uses-feature> يجب استخدام عنصر manfest لإعلام الكيانات الخارجية (مثل Google Play) بمجموعة الأجهزة والميزات التي يعتمد عليها تطبيقك. في هذا الإصدار، يضيف Android الثوابت الجديدة التالية التي يمكن للتطبيقات تعريفها باستخدام هذا العنصر:

  • "android.hardware.faketouch"

    عند تعريفه، يشير ذلك إلى أنّ التطبيق متوافق مع جهاز يوفّر شاشة تعمل باللمس تمت محاكاتها (أو أفضل) يشير الجهاز الذي يوفّر شاشة تعمل باللمس إلى المحاكاة إلى أنّ المستخدم يمكنه إدخال البيانات. نظام يمكنه محاكاة مجموعة فرعية من الشاشة التي تعمل باللمس والإمكانات. ومن أمثلة نظام الإدخال هذا ماوس أو جهاز تحكم عن بُعد يقوم بتشغيل مؤشر الماوس على الشاشة تتيح أنظمة الإدخال هذه أحداث اللمس الأساسية مثل النقر للأسفل والنقر للأعلى والسحب. ومع ذلك، قد تكون أنواع الإدخال الأكثر تعقيدًا (مثل الإيماءات والحركات السريعة وما إلى ذلك) أكثر صعوبة أو مستحيل على أجهزة اللمس الزائفة (كما أن إيماءات اللمس المتعدد غير ممكنة بالتأكيد).

    إذا لا يتطلب التطبيق إيماءات معقدة وكنت لا تريد فلترة تطبيقك من الأجهزة المزوّدة بشاشة تعمل باللمس في المحاكاة، يمكنك يجب أن يفصح عن "android.hardware.faketouch" باستخدام <uses-feature> العنصر. وبهذه الطريقة، سيكون تطبيقك متاحًا لأكبر عدد من أنواع الأجهزة، بما في ذلك التطبيقات التي لا توفّر سوى إدخال لشاشة تعمل باللمس في وضع المحاكاة.

    تتوافق أيضًا جميع الأجهزة التي تتضمّن شاشة تعمل باللمس مع "android.hardware.faketouch"، لأنّ إمكانات الشاشة التي تعمل باللمس هي أهمّ إمكانات اللمس الزائف. وبالتالي، ما لم تكن تحتاج بالفعل إلى الشاشة التي تعمل باللمس، عليك إضافة <uses-feature> لـ fake touch.

الأذونات الجديدة

  • "android.permission.BIND_REMOTEVIEWS"

    يجب الإشارة إلى أنّ هذا الإذن مطلوب في بيان <service>. لتطبيق RemoteViewsService. على سبيل المثال، عندما جارٍ إنشاء تطبيق مصغّر يستخدم RemoteViewsService لتعبئة عرض المجموعة، فقد يبدو إدخال البيان كما يلي:

    <service android:name=".widget.WidgetService"
        android:exported="false"
        android:permission="android.permission.BIND_REMOTEVIEWS" />
    

التكنولوجيات الجديدة للأنظمة الأساسية

  • مساحة التخزين
    • دعم نظام الملفات ext4 لتفعيل مساحة تخزين eMMC الداخلية
    • نظام الملفات FUSE يتوافق مع أجهزة MTP.
    • دعم وضع مضيف USB لدعم لوحات المفاتيح وموزّعات USB.
    • دعم بروتوكول نقل الوسائط (MTP/PTP)
  • نواة Linux
    • تمت الترقية إلى الإصدار 2.6.36
  • Dalvik VM
    • رمز جديد لإتاحة بروتوكول SMP وتحسينه
    • إجراء تحسينات متنوعة على البنية الأساسية لتكنولوجيا الذكاء الاصطناعي (JIT)
    • التحسينات التي تم إجراؤها على جهاز تجميع القمامة:
      • تم الضبط على بروتوكول SMP
      • دعم أحجام أكبر لعناصر متعدّدة
      • معالجة موحدة للصور النقطية ومخازن البايت المؤقتة
  • مكتبات دالفيك الأساسية
    • تنفيذ جديد وأسرع بكثير من NIO (مكتبة وحدات الإدخال والإخراج الحديثة)
    • رسائل الاستثناءات المحسّنة
    • تصحيح الأخطاء والأداء طوال الوقت

تقرير الاختلافات في واجهة برمجة التطبيقات

للحصول على عرض تفصيلي لجميع تغييرات واجهة برمجة التطبيقات في Android 3.0 (مستوى واجهة برمجة التطبيقات) 11)، يُرجى الاطّلاع على تقرير الاختلافات في واجهة برمجة التطبيقات.

مستوى واجهة برمجة التطبيقات

يوفر نظام Android 3.0 الأساسي إصدارًا محدثًا من واجهة برمجة تطبيقات إطار العمل. واجهة برمجة التطبيقات Android 3.0 يتم تعيين معرّف عدد صحيح — 11: يمثّل في النظام نفسه. ويتيح هذا المعرّف، يُسمى "مستوى واجهة برمجة التطبيقات"، لتحديد ما إذا كان التطبيق متوافقًا مع النظام، قبل تثبيت التطبيق.

لاستخدام واجهات برمجة التطبيقات المقدّمة في الإصدار 3.0 من نظام التشغيل Android في تطبيقك، ستحتاج إلى تجميع التطبيق مقابل مكتبة Android المتوفرة النظام الأساسي لحزمة تطوير البرامج (SDK) لنظام التشغيل Android 3.0. بناءً على احتياجاتك، قد يجب أيضًا إضافة android:minSdkVersion="11" إلى العنصر <uses-sdk> في العنصر البيان. إذا تم تصميم تطبيقك للتشغيل فقط على الإصدار 2.3 من نظام التشغيل Android والإصدارات الأحدث، أن إعلان السمة يمنع تثبيت التطبيق عليه في وقت سابق من المنصة.

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ما هي واجهة برمجة التطبيقات؟ ما هو المستوى؟