گرافیک برداری چند چگالی اضافه کنید

اندروید استودیو شامل ابزاری به نام Vector Asset Studio است که به شما کمک می‌کند آیکون‌های متریال را اضافه کنید و فایل‌های Scalable Vector Graphic (SVG) و Adobe Photoshop Document (PSD) را به عنوان منابع برداری قابل ترسیم به پروژه خود وارد کنید. استفاده از فایل‌های برداری قابل ترسیم به جای بیت‌مپ‌ها، اندازه APK شما را کاهش می‌دهد زیرا می‌توان همان فایل را برای تراکم‌های مختلف صفحه نمایش بدون از دست دادن کیفیت تصویر تغییر اندازه داد. برای نسخه‌های قبلی اندروید که از فایل‌های برداری قابل ترسیم پشتیبانی نمی‌کنند، Vector Asset Studio می‌تواند در زمان ساخت، فایل‌های برداری قابل ترسیم شما را به اندازه‌های مختلف بیت‌مپ برای هر تراکم صفحه نمایش تبدیل کند.

درباره استودیوی وکتور اسِت

Vector Asset Studio یک گرافیک برداری را به عنوان یک فایل XML که تصویر را توصیف می‌کند، به پروژه اضافه می‌کند. نگهداری یک فایل XML می‌تواند آسان‌تر از به‌روزرسانی چندین گرافیک رستری با وضوح‌های مختلف باشد.

برای استفاده از فایل‌های برداری (vector drawables) با Jetpack Compose، باید حداقل سطح API را روی اندروید ۵.۰ (سطح API ۲۱) و بالاتر تنظیم کنید.

اندروید ۴.۴ (سطح API 20) و پایین‌تر از vector drawableها پشتیبانی نمی‌کند. اگر حداقل سطح API شما روی یکی از این سطوح API تنظیم شده باشد، هنگام استفاده از Vector Asset Studio دو گزینه دارید: فایل‌های Portable Network Graphic (PNG) (پیش‌فرض) تولید کنید یا از تکنیک سازگاری معکوس در AndroidX استفاده کنید.

برای سازگاری با نسخه‌های قبلی، Vector Asset Studio تصاویر رستری از فایل‌های قابل ترسیم برداری تولید می‌کند. فایل‌های قابل ترسیم برداری و رستری در APK با هم بسته‌بندی شده‌اند. می‌توانید فایل‌های قابل ترسیم برداری را در کد کاتلین Drawable یا در کد XML @drawable خطاب کنید. وقتی برنامه شما اجرا می‌شود، تصویر برداری یا رستری مربوطه بسته به سطح API به طور خودکار نمایش داده می‌شود.

اگر می‌خواهید فقط از vector drawableها استفاده کنید، می‌توانید از AndroidX 1.0.0 یا بالاتر استفاده کنید. این تکنیک قبل از اجرای Vector Asset Studio، همانطور که در AndroidX توضیح داده شده است، نیاز به تغییر در فایل build.gradle شما دارد. کلاس VectorDrawableCompat در AndroidX به شما امکان می‌دهد VectorDrawable در اندروید 2.1 (سطح API 7) و بالاتر پشتیبانی کنید.

انواع گرافیک برداری پشتیبانی شده

مشخصات طراحی متریال گوگل، آیکون‌های متریال را ارائه می‌دهد که می‌توانید در برنامه‌های اندروید خود از آنها استفاده کنید. Vector Asset Studio به شما کمک می‌کند تا آیکون‌های متریال را انتخاب، وارد و اندازه‌گذاری کنید، همچنین میزان شفافیت و تنظیمات آینه‌ای راست به چپ (RTL) را تعریف کنید.

Vector Asset Studio همچنین به شما امکان می‌دهد فایل‌های SVG و PSD خود را وارد کنید. SVG یک استاندارد باز مبتنی بر XML از کنسرسیوم جهانی وب (W3C) است. فرمت فایل PSD از ویژگی‌های Adobe Photoshop پشتیبانی می‌کند. Vector Asset Studio از استانداردهای ضروری پشتیبانی می‌کند، اما از همه ویژگی‌های SVG و PSD پشتیبانی نمی‌کند. وقتی یک فایل SVG یا PSD را مشخص می‌کنید، Vector Asset Studio بلافاصله در مورد اینکه آیا کد گرافیکی پشتیبانی می‌شود یا خیر، بازخورد می‌دهد. این برنامه فایل را به یک فایل XML حاوی کد VectorDrawable تبدیل می‌کند. اگر خطایی دریافت کردید، باید تأیید کنید که فایل vector drawable شما مطابق انتظار ظاهر می‌شود. برای اطلاعات بیشتر در مورد ویژگی‌های مجاز PSD، به پشتیبانی و محدودیت‌های فایل‌های PSD مراجعه کنید.

برای اندروید ۵.۰ (سطح API ۲۱) و بالاتر، می‌توانید از کلاس AnimatedVectorDrawable برای متحرک‌سازی ویژگی‌های کلاس VectorDrawable استفاده کنید. با AndroidX، می‌توانید از کلاس AnimatedVectorDrawableCompat برای متحرک‌سازی کلاس VectorDrawable برای اندروید ۳.۰ (سطح API ۱۱) و بالاتر استفاده کنید. برای اطلاعات بیشتر، به بخش تصاویر برداری متحرک در Compose مراجعه کنید.

ملاحظات مربوط به فایل‌های SVG و PSD

یک تصویر برداری قابل ترسیم برای آیکون‌های ساده مناسب است. آیکون‌های متریال نمونه‌های خوبی از انواع تصاویری هستند که به عنوان تصاویر برداری قابل ترسیم در یک برنامه به خوبی کار می‌کنند. در مقابل، بسیاری از آیکون‌های راه‌اندازی برنامه جزئیات زیادی دارند، بنابراین به عنوان تصاویر رستر بهتر عمل می‌کنند.

بارگذاری اولیه یک تصویر برداری قابل ترسیم می‌تواند چرخه‌های CPU بیشتری نسبت به تصویر رستری مربوطه داشته باشد. پس از آن، میزان استفاده از حافظه و عملکرد بین این دو مشابه است. توصیه می‌کنیم حداکثر اندازه یک تصویر برداری را به 200 در 200 نقطه در اینچ محدود کنید. در غیر این صورت، ترسیم آن می‌تواند خیلی طولانی شود.

اگرچه فایل‌های وکتوری drawable از یک یا چند رنگ پشتیبانی می‌کنند، در بسیاری از موارد منطقی است که آیکون‌ها را با رنگ مشکی ( android:fillColor="#FF000000" ) رنگ‌آمیزی کنید. با استفاده از این روش، می‌توانید یک رنگ به فایل وکتوری drawable که در یک طرح قرار داده‌اید اضافه کنید و رنگ آیکون به رنگ رنگ تغییر می‌کند. اگر رنگ آیکون مشکی نباشد، ممکن است رنگ آیکون با رنگ رنگ ترکیب شود.

راه‌حل‌های سازگاری رو به عقب با قابلیت ترسیم بردار

جدول زیر دو تکنیکی را که می‌توانید برای سازگاری با نسخه‌های قبلی استفاده کنید، خلاصه می‌کند:

تکنیک فایل‌های Drawable در APK عناصر XML قابل ترسیم با VectorDraw نسخه ساخت پرچم کد برنامه
نسل PNG وکتور و رستر زیرمجموعه پشتیبانی می‌شود

SVG: افزونه اندروید برای Gradle 1.5.0 یا بالاتر

PSD: اندروید استودیو ۲.۲ یا بالاتر

پیش‌فرض پشتیبانی از انواع تکنیک‌های کدنویسی
اندروید ایکس ۱.۰ یا بالاتر بردار پشتیبانی کامل افزونه اندروید برای Gradle 3.2 یا بالاتر دستورات کتابخانه پشتیبانی مورد نیاز است زیرمجموعه‌ای از تکنیک‌های کدنویسی پشتیبانی می‌شود

استفاده از vector drawableها می‌تواند APK کوچک‌تری تولید کند، اما بارگذاری اولیه vector drawableها می‌تواند بیشتر طول بکشد.

نسل PNG

اندروید ۵.۰ (سطح API ۲۱) و بالاتر، پشتیبانی از فایل‌های برداری قابل ترسیم را ارائه می‌دهد. اگر برنامه شما حداقل سطح API پایین‌تری داشته باشد، Vector Asset Studio فایل برداری قابل ترسیم را به پروژه شما اضافه می‌کند. همچنین، در زمان ساخت، Gradle تصاویر رستری PNG را با وضوح‌های مختلف ایجاد می‌کند. Gradle چگالی‌های PNG مشخص شده توسط ویژگی generatedDensities زبان خاص دامنه (DSL) را در یک فایل build.gradle تولید می‌کند.

برای اندروید ۵.۰ (سطح API ۲۱) و بالاتر، Vector Asset Studio از تمام عناصر VectorDrawable پشتیبانی می‌کند. برای سازگاری با اندروید ۴.۴ (سطح API ۲۰) و پایین‌تر، Vector Asset Studio از عناصر XML زیر پشتیبانی می‌کند:

<vector>

  • android:width
  • android:height
  • android:viewportWidth
  • android:viewportHeight
  • android:alpha

<group>

  • android:rotation
  • android:pivotX
  • android:pivotY
  • android:scaleX
  • android:scaleY
  • android:translateX
  • android:translateY

<path>

  • android:pathData
  • android:fillColor
  • android:strokeColor
  • android:strokeWidth
  • android:strokeAlpha
  • android:fillAlpha
  • android:strokeLineCap
  • android:strokeLineJoin
  • android:strokeMiterLimit

شما می‌توانید کد XML که Vector Asset Studio تولید می‌کند را تغییر دهید، اگرچه این بهترین روش نیست. تغییر مقادیر در کد نباید مشکلی ایجاد کند، مادامی که معتبر و ثابت باشند. اگر می‌خواهید عناصر XML اضافه کنید، باید مطمئن شوید که بر اساس حداقل سطح API شما پشتیبانی می‌شوند.

اندروید ایکس

این تکنیک به AndroidX 1.0 یا بالاتر و افزونه Android برای Gradle 3.2 یا بالاتر نیاز دارد و فقط از vector drawableها استفاده می‌کند. کلاس VectorDrawableCompat در AndroidX به شما امکان می‌دهد VectorDrawable در اندروید 2.1 (سطح API 7) و بالاتر پشتیبانی کنید.

قبل از استفاده از Vector Asset Studio، باید یک دستور به فایل build.gradle خود اضافه کنید:

کاتلین

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

dependencies {
    implementation("androidx.appcompat:appcompat:1.7.1")
}

گرووی

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.7.1'
}

اجرای استودیوی دارایی‌های برداری

برای شروع استودیوی Vector Asset:

  1. در اندروید استودیو، یک پروژه اپلیکیشن اندروید را باز کنید.

  2. در پنجره پروژه ، نمای اندروید را انتخاب کنید.

  3. روی پوشه res کلیک راست کرده و New > Vector Asset را انتخاب کنید.

    برخی دیگر از نماها و پوشه‌های پروژه نیز این آیتم منو را دارند.

    استودیوی Vector Asset ظاهر می‌شود.

    شکل 1. استودیوی وکتور اسِت.

  4. اگر به جای آن، کادر محاوره‌ای Need Newer Android Plugin for Gradle ظاهر شد، نسخه Gradle خود را به شرح زیر اصلاح کنید:

    1. فایل > ساختار پروژه را انتخاب کنید.

    2. در پنجره ساختار پروژه ، گزینه Project را انتخاب کنید.

    3. در فیلد Android Plugin Version ، نسخه Android Plugin for Gradle را به ۱.۵.۰ یا بالاتر تغییر دهید و روی OK کلیک کنید.

      Gradle پروژه را همگام‌سازی می‌کند.

    4. در نمای اندروید پنجره‌ی پروژه ، روی پوشه‌ی res کلیک راست کرده و New > Vector Asset را انتخاب کنید.

      استودیوی Vector Asset ظاهر می‌شود.

  5. با وارد کردن یک گرافیک برداری ادامه دهید.

وارد کردن یک گرافیک برداری

Vector Asset Studio به شما کمک می‌کند تا یک فایل گرافیکی برداری را به پروژه برنامه خود وارد کنید. یکی از مراحل زیر را دنبال کنید:

اضافه کردن آیکون متریال

بعد از باز کردن Vector Asset Studio ، می‌توانید یک آیکون Material به صورت زیر اضافه کنید:

  1. در Vector Asset Studio، گزینه Clip art را انتخاب کنید.

  2. در قسمت Clip art، روی دکمه کلیک کنید.

  3. پنجره‌ی «انتخاب آیکون» ظاهر می‌شود. می‌توانید با انتخاب یک دسته‌بندی آیکون از منو یا تایپ کردن در فیلد جستجو، همانطور که در شکل ۲ نشان داده شده است، آیکون‌های قابل مشاهده را فیلتر کنید.

    شکل 2. فیلتر کردن آیکون‌های متریال در Vector Asset Studio.

    یک آیکون Material انتخاب کنید و روی OK کلیک کنید. آیکون در پیش‌نمایش Vector Drawable ظاهر می‌شود.

  4. به صورت اختیاری نام منبع، اندازه، میزان شفافیت و تنظیمات آینه‌سازی از راست به چپ (RTL) را تغییر دهید:

    • نام - اگر نمی‌خواهید از نام پیش‌فرض استفاده کنید، یک نام جدید تایپ کنید. Vector Asset Studio به طور خودکار یک نام منحصر به فرد ایجاد می‌کند (یک عدد به انتهای نام اضافه می‌کند) اگر نام منبع از قبل در پروژه وجود داشته باشد. این نام می‌تواند فقط شامل حروف کوچک، زیرخط و اعداد باشد.

    • لغو - اگر می‌خواهید اندازه تصویر را تنظیم کنید، این گزینه را انتخاب کنید. وقتی اندازه جدیدی را تایپ می‌کنید، تغییر در قسمت پیش‌نمایش ظاهر می‌شود.

      مقدار پیش‌فرض 24 x 24 dp است که در مشخصات طراحی متریال تعریف شده است. برای بازگشت به مقدار پیش‌فرض، تیک این کادر را بردارید.

    • شفافیت - از نوار لغزنده برای تنظیم شفافیت تصویر استفاده کنید. تغییر در قسمت پیش نمایش ظاهر می‌شود.

    • فعال کردن انعکاس خودکار برای طرح‌بندی RTL - اگر می‌خواهید وقتی طرح‌بندی از راست به چپ است، به جای چپ به راست، تصویر آینه‌ای نمایش داده شود، این گزینه را انتخاب کنید. برای مثال، برخی از زبان‌ها از راست به چپ خوانده می‌شوند؛ اگر یک آیکون فلش دارید، ممکن است بخواهید در این حالت یک تصویر آینه‌ای از آن نمایش دهید. توجه داشته باشید که اگر با یک پروژه قدیمی‌تر کار می‌کنید، ممکن است لازم باشد android:supportsRtl="true" را به مانیفست برنامه خود اضافه کنید. انعکاس خودکار در اندروید 5.0 (سطح API 21) و بالاتر و با AndroidX پشتیبانی می‌شود.

  5. روی بعدی کلیک کنید.

  6. در صورت تمایل، دایرکتوری ماژول و منابع را تغییر دهید:

    • فهرست Res - مجموعه منبع منبع را که می‌خواهید بردار قابل ترسیم را به آن اضافه کنید، انتخاب کنید: src/main/res ، src/debug/res ، src/release/res یا یک مجموعه منبع تعریف‌شده توسط کاربر. مجموعه منبع اصلی برای همه انواع ساخت، از جمله اشکال‌زدایی و انتشار، اعمال می‌شود. مجموعه‌های منبع اشکال‌زدایی و انتشار، مجموعه منبع اصلی را نادیده می‌گیرند و برای یک نسخه از ساخت اعمال می‌شوند. مجموعه منبع اشکال‌زدایی فقط برای اشکال‌زدایی است. برای تعریف یک مجموعه منبع جدید، File > Project Structure > app > Build Types را انتخاب کنید. به عنوان مثال، می‌توانید یک مجموعه منبع بتا تعریف کنید و نسخه‌ای از یک آیکون ایجاد کنید که شامل متن "BETA" در گوشه پایین سمت راست باشد. برای اطلاعات بیشتر، به پیکربندی انواع ساخت مراجعه کنید.

    ناحیه‌ی Output Directories، بردار قابل ترسیم و دایرکتوری که در آن نمایش داده خواهد شد را نمایش می‌دهد.

  7. روی پایان کلیک کنید.

    Vector Asset Studio یک فایل XML که بردار قابل ترسیم را تعریف می‌کند، به پروژه در پوشه app/src/main/res/drawable/ اضافه می‌کند. از نمای اندروید پنجره Project ، می‌توانید فایل XML بردار تولید شده را در پوشه drawable مشاهده کنید.

  8. پروژه را بسازید.

    اگر حداقل سطح API، اندروید ۴.۴ (سطح API ۲۰) و پایین‌تر باشد و تکنیک AndroidX را فعال نکرده باشید، Vector Asset Studio فایل‌های PNG تولید می‌کند. از نمای فایل‌های پروژه در پنجره پروژه ، می‌توانید فایل‌های PNG و XML تولید شده را در پوشه app/build/generated/res/pngs/debug/ مشاهده کنید.

    شما نباید این فایل‌های رستری تولید شده را ویرایش کنید، بلکه باید با فایل XML برداری کار کنید. سیستم ساخت، فایل‌های رستری را در صورت نیاز به طور خودکار بازسازی می‌کند، بنابراین نیازی به نگهداری آنها ندارید.

وارد کردن فایل SVG یا PSD

بعد از باز کردن Vector Asset Studio ، می‌توانید یک فایل SVG یا PSD را به صورت زیر وارد کنید:

  1. در Vector Asset Studio، گزینه Local file را انتخاب کنید.

    این فایل باید روی یک درایو محلی باشد. برای مثال، اگر در شبکه قرار دارد، ابتدا باید آن را در یک درایو محلی دانلود کنید.

  2. با کلیک کردن روی ... یک فایل تصویری مشخص کنید.

    تصویر در پیش‌نمایش Vector Drawable ظاهر می‌شود.

    اگر فایل SVG یا PSD حاوی ویژگی‌های پشتیبانی نشده باشد، همانطور که در شکل 3 نشان داده شده است، خطایی در پایین Vector Asset Studio ظاهر می‌شود.

    شکل 3. Vector Asset Studio که برخی خطاها را نشان می‌دهد.

    اگر خطایی مشاهده کردید، باید مطمئن شوید که vector drawable وارد شده به درستی رندر می‌شود. برای مشاهده خطاها، در لیست اسکرول کنید.

    برای فهرستی از عناصر پشتیبانی‌شده، به راه‌حل‌های سازگاری معکوس Vector Drawable مراجعه کنید. برای اطلاعات بیشتر در مورد فایل‌های PSD مجاز، به پشتیبانی و محدودیت‌های فایل‌های PSD مراجعه کنید.

  3. به صورت اختیاری نام منبع، اندازه، میزان شفافیت و تنظیمات آینه‌سازی از راست به چپ (RTL) را تغییر دهید:

    • نام - اگر نمی‌خواهید از نام پیش‌فرض استفاده کنید، یک نام جدید تایپ کنید. Vector Asset Studio به طور خودکار یک نام منحصر به فرد ایجاد می‌کند (یک عدد به انتهای نام اضافه می‌کند) اگر نام منبع از قبل در پروژه وجود داشته باشد. این نام می‌تواند فقط شامل حروف کوچک، زیرخط و اعداد باشد.

    • نادیده گرفتن - اگر می‌خواهید اندازه تصویر را تنظیم کنید، این گزینه را انتخاب کنید. پس از انتخاب آن، اندازه به اندازه خود تصویر تغییر می‌کند. هر زمان که اندازه را تغییر دهید، تغییر در ناحیه پیش‌نمایش ظاهر می‌شود. پیش‌فرض 24 x 24 dp است که در مشخصات طراحی متریال تعریف شده است.

    • شفافیت - از نوار لغزنده برای تنظیم شفافیت تصویر استفاده کنید. تغییر در قسمت پیش نمایش ظاهر می‌شود.

    • فعال کردن انعکاس خودکار برای طرح‌بندی RTL - اگر می‌خواهید وقتی طرح‌بندی از راست به چپ است، به جای چپ به راست، تصویر آینه‌ای نمایش داده شود، این گزینه را انتخاب کنید. برای مثال، برخی از زبان‌ها از راست به چپ خوانده می‌شوند؛ اگر یک آیکون فلش دارید، ممکن است بخواهید در این حالت یک تصویر آینه‌ای از آن نمایش دهید. توجه داشته باشید که اگر با یک پروژه قدیمی‌تر کار می‌کنید، ممکن است لازم باشد android:supportsRtl="true" را به مانیفست برنامه خود اضافه کنید. انعکاس خودکار توسط اندروید ۵.۰ (سطح API ۲۱) و بالاتر و AndroidX پشتیبانی می‌شود.

  4. روی بعدی کلیک کنید.

  5. به صورت اختیاری دایرکتوری منابع را تغییر دهید:

    • فهرست Res - مجموعه منبع منبع را که می‌خواهید بردار قابل ترسیم را به آن اضافه کنید، انتخاب کنید: src/main/res ، src/debug/res ، src/release/res یا یک مجموعه منبع تعریف‌شده توسط کاربر. مجموعه منبع اصلی برای همه انواع ساخت، از جمله اشکال‌زدایی و انتشار، اعمال می‌شود. مجموعه‌های منبع اشکال‌زدایی و انتشار، مجموعه منبع اصلی را نادیده می‌گیرند و برای یک نسخه از ساخت اعمال می‌شوند. مجموعه منبع اشکال‌زدایی فقط برای اشکال‌زدایی است. برای تعریف یک مجموعه منبع جدید، File > Project Structure > app > Build Types را انتخاب کنید. به عنوان مثال، می‌توانید یک مجموعه منبع بتا تعریف کنید و نسخه‌ای از یک آیکون ایجاد کنید که شامل متن "BETA" در گوشه پایین سمت راست باشد. برای اطلاعات بیشتر، به پیکربندی انواع ساخت مراجعه کنید.

    ناحیه‌ی Output Directories، بردار قابل ترسیم و دایرکتوری که در آن نمایش داده خواهد شد را نمایش می‌دهد.

  6. روی پایان کلیک کنید.

    Vector Asset Studio یک فایل XML که بردار قابل ترسیم را تعریف می‌کند، به پروژه در پوشه app/src/main/res/drawable/ اضافه می‌کند. از نمای اندروید پنجره Project ، می‌توانید فایل XML بردار تولید شده را در پوشه drawable مشاهده کنید.

  7. پروژه را بسازید.

    اگر حداقل سطح API، اندروید ۴.۴ (سطح API ۲۰) و پایین‌تر باشد و تکنیک AndroidX را فعال نکرده باشید، Vector Asset Studio فایل‌های PNG تولید می‌کند. از نمای فایل‌های پروژه در پنجره پروژه ، می‌توانید فایل‌های PNG و XML تولید شده را در پوشه app/build/generated/res/pngs/debug/ مشاهده کنید.

    شما نباید این فایل‌های رستری تولید شده را ویرایش کنید، بلکه باید با فایل XML برداری کار کنید. سیستم ساخت، فایل‌های رستری را در صورت نیاز به طور خودکار بازسازی می‌کند، بنابراین نیازی به نگهداری آنها ندارید.

ارجاع به یک فایل برداری در Jetpack Compose

بعد از اینکه از Vector Asset Studio برای اضافه کردن یک فایل به پوشه res/drawable خود استفاده کردید، می‌توانید آن را در کد خود ارجاع دهید.

در Jetpack Compose، رایج‌ترین روش برای نمایش وکتور شما استفاده از Icon یا Image composable است.

Icon ترکیبی، روش استاندارد نمایش عناصر کوچک و تک‌رنگ هستند. این آیکون‌ها از اصول طراحی متریال، مانند اعمال رنگ‌آمیزی پویا بر اساس تم‌های متریال ۳ و دسترسی خودکار از طریق توضیحات محتوا، پشتیبانی می‌کنند.

از API painterResource برای ارائه فایل‌های برداری XML به composable استفاده کنید:

Icon(
    painter = painterResource(id = R.drawable.ic_speedometer),
    tint = MaterialTheme.colorScheme.primary, // Applies dynamic theme color
    contentDescription = "Current Speed", // Essential for accessibility
)

برای بردارهای پیچیده و چند رنگ، از Image composable استفاده کنید:

Image(
     painter = painterResource(id = R.drawable.ic_complex_vector),
     contentDescription = null // Decorative element
)

برای سایر سناریوهای پیچیده، مانند سفارشی‌سازی یک تصویر یا بهینه‌سازی عملکرد، به بخش «کار با تصاویر» مراجعه کنید. برای متحرک‌سازی بردارها، به بخش «تصاویر برداری متحرک در Compose» مراجعه کنید.

اصلاح کد XML تولید شده توسط Vector Asset Studio

شما می‌توانید کد XML قابل ترسیم برداری را تغییر دهید، اما نمی‌توانید PNGها و کد XML مربوطه را که در زمان ساخت تولید می‌شوند، تغییر دهید. با این حال، ما این کار را توصیه نمی‌کنیم.

هنگام استفاده از تکنیک تولید PNG، Vector Asset Studio اطمینان حاصل می‌کند که وکتور قابل ترسیم و PNGها مطابقت داشته باشند و فایل manifest حاوی کد مناسب باشد. اگر کدی اضافه کنید که در اندروید ۴.۴ (سطح API ۲۰) و پایین‌تر پشتیبانی نمی‌شود ، تصاویر وکتور و PNG شما ممکن است متفاوت باشند. همچنین باید مطمئن شوید که فایل manifest حاوی کدی است که از تغییرات شما پشتیبانی می‌کند.

برای تغییر فایل XML برداری وقتی از تکنیک AndroidX استفاده نمی‌کنید:

  1. در پنجره پروژه ، روی فایل XML بردار تولید شده در پوشه drawable دوبار کلیک کنید.

    فایل XML در پنجره‌های ویرایشگر و پیش‌نمایش ظاهر می‌شود.

    شکل ۴. یک فایل XML برداری که در ویرایشگر کد و پنجره پیش‌نمایش نمایش داده می‌شود.

  2. کد XML را بر اساس آنچه که توسط حداقل سطح API پشتیبانی می‌شود، ویرایش کنید:

    • اندروید ۵.۰ (سطح API ۲۱) و بالاتر - Vector Asset Studio از تمام عناصر Drawable و VectorDrawable پشتیبانی می‌کند. می‌توانید عناصر XML را اضافه کنید و مقادیر را تغییر دهید. برای Jetpack Compose، می‌توانید vector drawable را برای سفارشی‌سازی بیشتر در ImageVector بارگذاری کنید.

    • اندروید ۴.۴ (سطح API ۲۰) و پایین‌تر - Vector Asset Studio از تمام عناصر Drawable و زیرمجموعه‌ای از عناصر VectorDrawable پشتیبانی می‌کند. برای مشاهده لیست، به بخش راه‌حل‌های سازگاری با نسخه‌های قبلی Vector Drawable مراجعه کنید. می‌توانید مقادیر را در کد تولید شده تغییر دهید و عناصر XML پشتیبانی شده را اضافه کنید.

  3. پروژه را بسازید و بررسی کنید که تصاویر برداری قابل ترسیم و تصاویر رستری مربوطه یکسان به نظر برسند.

    به یاد داشته باشید که PNG های تولید شده ممکن است در پنجره Preview به دلیل موتورهای رندر متفاوت و هرگونه تغییری که قبل از ساخت در vector drawable ایجاد شده است، متفاوت از آنچه در برنامه نمایش داده می‌شود، نمایش داده شوند. اگر کدی را به فایل XML برداری ایجاد شده توسط Vector Asset Studio اضافه کنید، هیچ ویژگی پشتیبانی نشده‌ای در اندروید ۴.۴ (سطح API 20) و پایین‌تر در فایل‌های PNG تولید شده ظاهر نمی‌شود. در نتیجه، هنگام اضافه کردن کد، همیشه باید بررسی کنید که PNG های تولید شده با vector drawable مطابقت داشته باشند. برای انجام این کار، می‌توانید در نمای Project Files از پنجره Project ، روی PNG دوبار کلیک کنید. همانطور که در شکل ۵ نشان داده شده است، حاشیه سمت چپ Code Editor نیز تصویر PNG را هنگام اشاره کد شما به drawable نمایش می‌دهد.

    شکل 5. یک تصویر PNG که در حاشیه سمت چپ ویرایشگر کد نمایش داده می‌شود.

حذف یک بردار قابل ترسیم از یک پروژه

برای حذف یک بردار قابل ترسیم از یک پروژه:

  1. در پنجره پروژه ، فایل XML برداری تولید شده را با انتخاب فایل و فشردن کلید Delete (یا انتخاب Edit > Delete ) حذف کنید.

    کادر محاوره‌ای «حذف ایمن» ظاهر می‌شود.

  2. در صورت تمایل، گزینه‌هایی را برای یافتن محل استفاده فایل در پروژه انتخاب کنید و روی تأیید کلیک کنید.

    اندروید استودیو فایل را از پروژه و درایو حذف می‌کند. با این حال، اگر تصمیم گرفته باشید مکان‌هایی را در پروژه که فایل در آنها استفاده شده است جستجو کنید و برخی از کاربردهای آن را پیدا کنید، می‌توانید آنها را مشاهده کرده و تصمیم بگیرید که آیا فایل را حذف کنید یا خیر.

  3. ساخت > پروژه پاک را انتخاب کنید.

    هرگونه فایل PNG و XML که به صورت خودکار تولید شده و مربوط به بردار قابل ترسیم حذف شده باشد، از پروژه و درایو حذف می‌شود.

ارائه یک برنامه حاوی فایل‌های برداری قابل ترسیم

اگر از تکنیک AndroidX استفاده کرده‌اید یا حداقل سطح API شما اندروید ۵.۰ (سطح API ۲۱) یا بالاتر است، APK شما شامل فایل‌های برداری قابل ترسیمی خواهد بود که با Vector Asset Studio اضافه کرده‌اید. این APKها در مقایسه با زمانی که تصاویر برداری به PNG تبدیل می‌شوند، کوچک‌تر خواهند بود.

وقتی حداقل سطح API شما شامل اندروید ۴.۴ (سطح API ۲۰) یا پایین‌تر باشد، و فایل‌های برداری قابل ترسیم و تصاویر رستر مربوطه را در پروژه خود داشته باشید، دو گزینه برای ارائه فایل‌های APK خود دارید:

  • یک APK ایجاد کنید که شامل هر دو فایل برداری drawable و نمایش‌های رستری مربوطه باشد. این راه حل ساده‌ترین راه برای پیاده‌سازی است.
  • برای سطوح مختلف API، APKهای جداگانه ایجاد کنید. وقتی تصاویر رستر مربوطه را در APK برای اندروید ۵.۰ (سطح API ۲۱) و بالاتر قرار نمی‌دهید، APK می‌تواند اندازه بسیار کوچکتری داشته باشد. برای اطلاعات بیشتر، به پشتیبانی از چندین APK مراجعه کنید.

پشتیبانی و محدودیت‌های فایل‌های PSD

Vector Asset Studio از تمام ویژگی‌های فایل‌های PSD پشتیبانی نمی‌کند. لیست زیر خلاصه‌ای از ویژگی‌های پشتیبانی‌شده و پشتیبانی‌نشده‌ی PSD و همچنین برخی از جزئیات تبدیل را ارائه می‌دهد.

سند

پشتیبانی شده:

  • یک حالت رنگی PSD از نوع بیت‌مپ، خاکستری، ایندکس‌شده، RGB، Lab یا CMYK.
  • عمق رنگ ۸، ۱۶ یا ۳۲ بیت.

جزئیات تبدیل:

  • ابعاد سند PSD به ابعاد قابل ترسیم برداری و ابعاد قابل مشاهده تبدیل می‌شوند.

پشتیبانی نمی‌شود:

  • یک حالت رنگی PSD از نوع دو رنگ یا چند کاناله.

اشکال

پشتیبانی شده:

  • ماسک‌های برش، اگر پایه برش شکل دیگری داشته باشد.
  • عملیات شکل، شامل ادغام/اضافه کردن، تقاطع، تفریق و حذف.

پشتیبانی نمی‌شود:

  • قانون پر کردن زوج-فرد که توسط اشکال فتوشاپ استفاده می‌شود. در اندروید ۶.۰ (سطح API ۲۳) و پایین‌تر، فایل‌های وکتوری قابل ترسیم فقط از قانون پر کردن غیرصفر پشتیبانی می‌کنند. در شکل‌های خود-متقاطع، این محدودیت می‌تواند منجر به تفاوت در رندر بین PSD و فایل وکتوری قابل ترسیم حاصل شود. برای رفع این مشکل، android:fillType="evenOdd" را به شکل در فایل وکتوری قابل ترسیم اضافه کنید. به عنوان مثال:

    <vector xmlns:android="https://schemas.android.com/apk/res/android"
      android:viewportHeight="168"
      android:height="24dp"
      android:viewportWidth="209"
      android:width="24dp">
    
      <path
          android:fillAlpha="1.0"
          android:fillColor="#000000"
          android:fillType="evenOdd"
          android:pathData="M24,58 L24,167 L114,167 L114,66 M64,1 L64,96 L208,96 L208,8 M1,97 L146,139 L172,47"/>
    </vector>

سکته مغزی و پر کردن

پشتیبانی شده:

  • خطوط، شامل رنگ، شفافیت، عرض، اتصال، کلاهک، خط تیره و ترازبندی.
  • پر کردن‌ها و خطوط با رنگ ثابت.
  • رنگ‌های خط دور و داخل متن که به صورت RGB، Lab یا CMYK مشخص شده‌اند.

جزئیات تبدیل:

  • اگر یک خط چین باشد، با استفاده از یک پایه برش، برش داده شود، یا از ترازبندی متفاوتی نسبت به مرکز استفاده کند، Vector Asset Studio آن را به یک شکل پر شده در vector drawable تبدیل می‌کند.

پشتیبانی نمی‌شود:

  • رنگ‌های پرکننده و خطوط حاشیه‌ای غیر از رنگ‌های توپر، مانند گرادیان‌ها.

کدورت

پشتیبانی شده:

  • لایه‌های شکل با شفافیت ۰.

جزئیات تبدیل:

  • Vector Asset Studio برای محاسبه‌ی آلفای پرکننده، میزان شفافیت (opacity) لایه را در شفافیت (opacity) آن لایه ضرب می‌کند.
  • این ابزار، میزان شفافیت (opacity) پایه برش (clipping base) (در صورت وجود پایه برش) را در آلفای پرکننده (fill alpha) ضرب می‌کند تا آلفای پرکننده نهایی را محاسبه کند.
  • این ابزار، میزان شفافیت خط دور (Stroke) را در شفافیت لایه ضرب می‌کند تا آلفای خط دور (Stroke alpha) را محاسبه کند.
  • این ابزار، میزان شفافیت (opacity) پایه برش (در صورت وجود پایه برش) را در آلفای خط دور ضرب می‌کند تا آلفای نهایی خط دور را محاسبه کند.

لایه‌ها

پشتیبانی شده:

  • هر لایه شکلی قابل مشاهده .

جزئیات تبدیل:

  • Vector Asset Studio نام لایه‌ها را در فایل vector drawable حفظ می‌کند.

پشتیبانی نمی‌شود:

  • جلوه‌های لایه‌ای
  • تنظیمات و لایه‌های متنی.
  • حالت‌های ترکیبی (نادیده گرفته شده).

پشتیبانی و محدودیت‌های فایل‌های SVG

Vector Asset Studio از تمام ویژگی‌های فایل SVG پشتیبانی نمی‌کند. بخش زیر خلاصه‌ای از ویژگی‌های پشتیبانی‌شده و پشتیبانی‌نشده هنگام تبدیل یک فایل SVG به VectorDrawable توسط این ابزار، به همراه جزئیات بیشتر تبدیل، ارائه می‌دهد.

ویژگی‌های پشتیبانی‌شده

VectorDrawable از تمام ویژگی‌های Tiny SVG 1.2 به جز متن پشتیبانی می‌کند.

اشکال

VectorDrawable از مسیرهای SVG پشتیبانی می‌کند.

این ابزار اشکال اولیه مانند دایره، مربع و چندضلعی را به مسیر تبدیل می‌کند.

دگرگونی‌ها

این ابزار از ماتریس‌های تبدیل پشتیبانی می‌کند و آنها را مستقیماً روی مسیرهای فرزند اعمال می‌کند.

گروه‌ها

این ابزار از عناصر گروهی برای انتقال، مقیاس‌بندی و چرخش پشتیبانی می‌کند. گروه‌ها از ویژگی opacity پشتیبانی نمی‌کنند.

این ابزار همچنین هرگونه استایل گروهی یا میزان شفافیت را به مسیرهای فرزند اعمال می‌کند.

پر کردن و ضربه زدن

مسیرها را می‌توان با استفاده از رنگ‌های یکدست یا گرادیان (خطی، شعاعی یا زاویه‌ای) پر و خط‌خطی کرد. فقط خط‌خطی‌های مرکزی پشتیبانی می‌شوند. حالت‌های ترکیبی پشتیبانی نمی‌شوند. مسیرهای خط‌چین پشتیبانی نمی‌شوند.

ماسک

این ابزار از یک ماسک برش در هر گروه پشتیبانی می‌کند.

ویژگی‌هایی که توسط واردکننده‌ی SVG پشتیبانی نمی‌شوند

هر ویژگی که در بخش ویژگی‌های پشتیبانی‌شده قبلی ذکر نشده باشد، پشتیبانی نمی‌شود. ویژگی‌های قابل توجه پشتیبانی نشده شامل موارد زیر است:

  • جلوه‌های فیلتر: جلوه‌هایی مانند سایه‌های افتاده، تاری‌ها و ماتریس رنگ پشتیبانی نمی‌شوند.
  • متن: تبدیل متن به شکل با استفاده از ابزارهای دیگر توصیه می‌شود.
  • پر کردن الگوها

منابع اضافی

برای اطلاعات بیشتر در مورد گرافیک برداری، به منابع اضافی زیر مراجعه کنید:

مستندات

محتوا را مشاهده می‌کند