تعريف مضمن للرسومات غير النقطية في عناصر LayerList أو LevelList XML
-
20-12-2019 - |
سؤال
توثيق مواصفات موارد XML لـ قائمة الطبقات و قائمة المستوى الرسوميات تقول أن item
سوف يقبل العنصر فقط bitmap
كعنصر فرعيعلى بعض إجابات وفيما يتعلق بقوائم المستوى، أرى أن الناس يضيفون shape
العلامات كأطفال ل item
العلامات.لقد جربت ما يلي ويبدو أنه يعمل بشكل جيد.
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0">
<shape android:shape="rectangle">
<solid android:color="#ff0000" />
</shape>
</item>
<item android:maxLevel="1">
<shape android:shape="oval">
<solid android:color="#0000ff" />
</shape>
</item>
</level-list>
هنا سؤالي. هل تم توثيق هذا في أي مكان، أم يجب أن أتجنب هذا النوع من البناء لأنه غير مدعوم في جميع إصدارات واجهة برمجة التطبيقات، أم أن الوثائق ببساطة غير مكتملة وما ورد أعلاه قانوني تمامًا؟
للتوضيح، أعلم أنه يمكنني تحديد أي نوع من الرسوميات باستخدام ملفات موارد منفصلة والإشارة إليها باستخدام ملف android:drawable
يصف. يشير السؤال إلى المواصفات المضمنة للرسومات التعسفية ضمن XML لقائمة الطبقات أو قائمة المستويات.
المحلول 2
الجواب نعم، إنه سلوك مسموح ومدعوم.
على الرغم من عدم توثيقها، يتم استخدام العلامات غير النقطية في موارد Android XML الرسمية.على سبيل المثال مصدر progress_large_holo.xml يحتوي على ما يلي.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:drawable="@drawable/spinner_76_outer_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="1080" />
</item>
<item>
<rotate
android:drawable="@drawable/spinner_76_inner_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="720"
android:toDegrees="0" />
</item>
</layer-list>
تكشف مصادر أخرى أيضًا أن أي XML يتم قبوله كمورد قابل للرسم يمكن وضعه داخل ملف item
العلامات.
نصائح أخرى
ولا ينص على أنه يقبل فقط Bitmap
الأشياء، لكنها ستقبلها.يمكنك استخدام ال android:drawable
لتحديد رسم.اسحب الأشكال الخاصة بك إلى تعريف XML القابل للرسم الخاص بها وقم بالرجوع إليها في قائمة المستويات.