هل يستطيع Android استخدام SVG مباشرة كـdrawable؟
يستخدم مورد VectorDrawable مفردات XML الخاصة بـAndroid: عنصر vector مع منفذ عرض (viewport) وأبعاد عرض ومسارات رسم. وإعادة تسمية logo.svg إلى logo.xml لا تترجم هذه العناصر. فـSVG يستخدم أسماء مختلفة للتعبئات والحدود والتحويلات، ويدعم ميزات ترفضها أداة التصدير هذه عن قصد.
استخدم محوّل SVG إلى Android لأيقونة واجهة بسيطة أو رسم توضيحي مسطح. فهو يقبل ملف SVG ترفعه أو إحدى نتائجك غير المقفلة. وإذا بدأت بصورة نقطية، فحوّل الصورة إلى فيكتور بالتتبّع أولًا، وافحص الحدود، ثم صدّر. تحويل الموارد لا يُجري تتبّعًا جديدًا ولا يرفع شرط إلغاء القفل عن نتيجة موجودة.
مثال صغير يمكنك تكراره
احفظ هذا المثلث باسم triangle.svg وارفعه. اختر اسم المورد ic_triangle وضلعًا أطول بحجم 24 dp.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path fill="#fa643c" d="M12 2L22 22H2Z"/>
</svg>
يحتوي ملف XML الذي تنزّله على منفذ عرض بحجم 24 × 24، وأبعاد عرض بحجم 24 dp، ومسار واحد. وتصبح تعبئته البرتقالية لونًا بصيغة Android التي تبدأ بقناة الشفافية: #fffa643c. ضع ic_triangle.xml في app/src/main/res/drawable/. وفي التخطيط (layout)، استخدم android:src="@drawable/ic_triangle"؛ وفي كود التطبيق، استخدم معرّف مورد drawable المقابل.
يصف منفذ العرض الشكل الهندسي. وتصف أبعاد dp حجم العرض المقصود لـdrawable. ويحتفظ ملف SVG المستطيل بنسبة أبعاده: اختيار ضلع أطول بحجم 48 dp لا يمطّه إلى مربع. ويبدأ اسم المورد بحرف لاتيني صغير ويمكن أن يحتوي على أحرف صغيرة وأرقام وشرطات سفلية.
ما الذي يبقى بعد التحويل؟
يدعم المحوّل لدينا المسارات والأشكال الهندسية الأساسية، والألوان المصمتة، وعتامة التعبئة، وأنماط الحدود المتوافقة، وقاعدتي التعبئة nonzero وeven-odd. ويسطّح التحويلات المدعومة في إحداثيات المسارات. والتعبئة بقاعدة even-odd هي سبب استهداف هذا التصدير لـAPI 24 وما بعده. ولا ينشئ أغلفة توافق للتطبيقات الأقدم.
النصوص والتدرجات والأقنعة والقص (clipping) والصور المضمّنة والتأثيرات تحتاج إلى خطوة تحضير مختلفة. حوّل النص إلى مسارات في محرر الفيكتور لديك. وحوّل الحدود ذات التحويلات إلى مسارات إذا كان التحويل يغيّر مقياس محوريها بشكل مختلف. وقد تغيّر عتامة المجموعة الأشكال المتداخلة، لذا ترفضها أداة التصدير بدلًا من تطبيق العتامة على كل شكل على حدة وتغيير الصورة. وتسرد النتيجة كل ما أُزيل لأنه غير آمن.
للتصاميم المفصّلة، قد يكون تصدير PNG موردًا أنسب. فالعدد الكبير جدًا من المسارات قد يستهلك وقتًا في العرض حتى لو كان الملف فيكتورًا من الناحية التقنية. احذف النقاط غير الضرورية واختبر بالحجم الفعلي على الشاشة.
تحقّق من النتيجة في التطبيق
ابنِ المورد في Android Studio وافحصه على خلفيات فاتحة وداكنة. تحقّق من الثقوب داخل الحروف، والحدود الرفيعة، والألوان المقصودة، والشفافية. وقارن الأصل بـdrawable بأحجام صغيرة، حيث تهم التفاصيل الصغيرة أكثر. نجاح تجميع ملف XML يؤكد أن المورد مقبول؛ لكن عرض الجهاز وإعدادات الصبغة (tint) في تطبيقك هي التي تحدد مظهره النهائي.
لأيقونة المشغّل، استخدم مولد أيقونات التطبيقات. فأيقونات المشغّل لها متطلبات خاصة بالكثافات وبالطبقات التكيفية لا يجمعها تصدير drawable العادي.