Vector Drawable: یہ کیا ہے، XML فارمیٹ اور کیسے کام کرتا ہے

مصنف: IT Sectr اشاعت: 2026-06-12 مطالعے کا وقت: 9 منٹ

Vector Drawable Android کے لیے ویکٹر گرافکس کا ایک فارمیٹ ہے جو XML پر مبنی ہے اور معیار میں کمی کے بغیر اسکیل قابل تصاویر بنانے کی اجازت دیتا ہے۔ PNG اور JPEG کے برخلاف، ویکٹر جیامیٹری کنٹور اور بھراؤں کو متن ہدایات کے طور پر ذخیرہ کرتا ہے، جو کم سے کم فائل کا حجم اور کسی بھی سکرین کی کیفیت کے مطابقت یقینی بناتا ہے۔ Android Developers دستاویز (2026) کے مطابق، Vector Drawable مختلف ریزولیوشن کے لیے راسٹر وسائل کے سیٹ کے مقابلے میں APK کا حجم اوسط 40–60% تک کم کر دیتا ہے۔

اہم نکات

  • Vector Drawable XML پر مبنی Android ویکٹر گرافکس فارمیٹ ہے، API 21 سے معیاری ہے
  • اسکیلنگ معیار میں کمی کے بغیر — ویکٹر کسی بھی سکرین کیفیت (mdpi، hdpi، xhdpi اور اوپر) کے مطابق ھو جاتا ہے
  • APK کا حجم ایک سے زائد PNG فائلوں کو ایک XML فائل سے بدلنے پر 40–60% کم ھو جاتا ہے
  • اینیمیشن AnimatedVectorDrawable اور AnimatedStateListDrawable کے ذریعۙ معاون ہے
  • ڈارک تھیم کے مطابقت کا نفاذ وسائل کی نقل کیے بغیر android:theme وصف کے ذریعۙ ہوتا ہے

Vector Drawable کیا ہے؟

Vector Drawable ایک Android وسیلہ ہے جو SVG (Scalable Vector Graphics) وضاحت پر مبنی XML فارمیٹ میں ایک ویکٹر تصویر کی نمائندگی کرتا ہے۔ Google نے اس فارمیٹ کو Android 5.0 (API 21) میں آئیکنز، السٹریشنز اور دیگر گرافیکل UI عناصر کے لیے راسٹر تصاویر کے متبادل کے طور پر متعارف کروایا تھا۔

PNG کے برخلاف، جہاں تصویر ایک مقررہ سائز کی پیکسل ارے کے طور پر محفوظ ہوتی ہے، Vector Drawable شکلوں کو ریاضی طور پر بیان کرتا ہے — نقاط کے محاصہ، بیزیے منحنیات، بھراؤں اور خاکے کے ذریعۙ۔ اس کا مطلب ہے کہ ایک واحد ویکٹر تصویر مختلف سکرین کیفیتوں (mdpi، hdpi، xhdpi، xxhdpi، xxxhdpi، nodpi) کے لیے چھہ PNG فائلوں تک کی جگہ لے سکتی ہے، جو گرافکس وسائل کی دیکھ بھال کو شدید سادہ کر دیتا ہے۔

یہ فارمیٹ صرف ستاٹک تصاویر ہی نہیں بلکہ AnimatedVectorDrawable کے ذریعۙ اینیمیشن، اور تھیم وصفات کے ذریعۙ ڈارک تھیم مطابقت اور کسٹم رنگوں کی بھی معاونت کرتا ہے۔ Android 7.0 (API 24) سے، Vector Drawable گریدینٹ بھراؤں اور پیچیدہ کلپ آپریشنز (clipPath) کی بھی معاونت کرتا ہے، جو ڈیزائن کے امکانات کو وسیع کرتا ہے۔

Vector Drawable کے اہم اجزاء

ہر Vector Drawable میں چوڑائی، اونچائی اور ویوپورٹ (ایک ورتوئل کوارڈینیٹ سِسٹم جہاں شکلیں کھینچی جاتی ہیں) کے پیرامیٹرز کے ساتھ ایک جڑ vector عنصر ہوتا ہے۔ اندر گروپ (group) اور پیتھ (path) ہیں، جہاں path ڥاورڈز کے ایک تسلسل کے ذریعۙ جیامیٹری کی وضاحت کرتا ہے: M (moveTo)، L (lineTo)، C (cubicTo)، Z (close) اور دیگر۔ ہر path اپنا fillColor اور strokeColor رکھ سکتا ہے، جو تھیم وسائل کا حوالہ دے سکتے ہیں۔

اضافی عناصر میں کٹٹنگ کے لیے clip-path، گریڈینٹ ٹرانزیشن کے لیے gradient اور android:theme وصف کے ذریعۙ ڈارک تھیم مطابقت کے وصفات شامل ہیں۔ Vector Drawable میں سارے رنگوں کو تھیم وصفات (مثال: ?attr/colorPrimary) کے حوالے کے طور پر متعین کیا جا سکتا ہے، جو وسائل کی نقل کیے بغیر تھیموں کے درمیان سوئچکرنے پر آئیکن کی ظاہری کو بدل دیتا ہے۔

Vector Drawable فارمیٹ: XML ساخت

Vector Drawable XML فائل res/drawable/ ڈائرکٹری میں رکھی جاتی ہے اور اس کا ایک جڑ عنصر ہوتا ہے۔ اندر درجہ بندی کی منظمی کے لیے نیڑیڈ عناصر اور خاکے کی وضاحت کے لیے عناصر ہو سکتے ہیں۔ ہر path میں ایک pathData وصف ہوتا ہے — SVG پیتھ فارمیٹ میں ڈرائنگ ڥاورڈز کا ایک سٹرنگ۔

xml
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">

    <path
        android:fillColor="@color/ic_launcher_background"
        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2z"
        android:strokeWidth="1"
        android:strokeColor="#333333"/>

</vector>

مثال میں 24×24 ویوپورٹ میں 10 یونٹ کے ریڈیس کے ساتھ ایک دائرہ بیان کیا گیا ہے۔ fillColor پیرامیٹر ایک رنگ وسیلۙ کا حوالہ دیتا ہے، جبکہ strokeWidth اور strokeColor خاکے کی وضاحت کرتے ہیں۔ چوڑائی اور اونچائی dp میں متعین کی جاتی ہیں — یہ اضافی تبدیلوں کے بغیر مختلف پیکسل کیفیت کے سکرینوں پر درست اسکیلنگ کو یقینی بناتا ہے۔

گروپنگ اور تبدیلیں

group عنصر ایک سے زائد pathوں کو گروپ کرنے اور ان پر مشترک تبدیلیں لاگو کرنے کی اجازت دیتا ہے: گھرمائی (rotation)، منتقلی (translateX، translateY) اور پیمانے کی تبدیلی (scaleX، scaleY)۔ گروپ نیڑیڈ ھو سکتے ہیں، جو کارکردگی میں کمی کے بغیر سوؤں عناصر کے ساتھ پیچیدہ درجہ بندی بنانے کے قابل بناتا ہے۔

xml
<vector ...>
    <group android:name="arrow_group"
        android:pivotX="12"
        android:pivotY="12"
        android:rotation="90">
        <path .../>
    </group>
</vector>

pivotX/pivotY وصف کے ساتھ گروپنگ اینیمیشن کے لیے استعمال ہوتی ہے: آپ تصویر کے ایک حصے کو دیگر عناصر سے آزاد گھوما یا سکیل کر سکتے ہیں، جو متحرک ستیٹ آئیکنز (مثال: لوڈنگ → کامیابی) بنانے کے لیے مفید ہے۔

Vector Drawable بنام راسٹر گرافکس

ویکٹر اور راسٹر گرافکس کے درمیان انتخاب کا انصھار استعمال کے معاملے پر منحصر ہے۔ Vector Drawable آئیکنز، السٹریشنز اور کم تفصیلات کے UI عناصر کے لیے موزوں ہے، جبکہ ہزاروں رنگوں کی تصویریں اور پیچیدہ تصاویر راسٹر فارمیٹوں میں رہتی ہیں۔

پیرامیٹرVector DrawablePNG
اسکیلنگبدون معیاری کمیبڑھانے پر کمی
فائل کا حجم0.5–5 KB10–100 KB فی ریزولیوشن
فائلوں کی تعداد1 XML6 PNG (mdpi–xxxhdpi)
اینیمیشنمعاونصرف فریم سوئچنگ
تھیم مطابقت?attr کے ذریعۙعلاحدہ سیٹ
پیچیدہ مناظرمحدودکوئی بھی

Android Performance Patterns (Google I/O 2016) کے مطابق، PNG آئیکنز کو Vector Drawable سے بدلنے سے بڑی تعداد میں گرافکل وسائل والے ایپلیکیشنز کے لیے APK کا حجم 40–60% کم ہو جاتا ہے۔ تاہم، سوؤں path کے ساتھ پیچیدہ ویکٹروں کو رنڈر کرتے وقت CPU لوڈ بڑھ جاتا ہے، لہذا اینیمیشن اور بار بار دوبارہ ڎightنچائی کے لیے پیش ورد کیچ شدہ راسٹر استعمال کرنے کی سفارش کی جاتی ہے۔

Vector Drawable کب چنیں

Vector Drawable انٹرفیس آئیکنز (ٹول بار، نیویگیشن، سٹیٹس)، لوگوز، سادہ السٹریشنز اور متحرک عناصر کے لیے موزوں ہے۔ یہ فارمیٹ ایک سے زائد سکرینوں کی معاونت کرتے وقت خاص فائدۙ دے تا ہے: چھ کیفیتوں کے لیے PNG بنانے کے بجائے، ایک XML فائل کافی ہے۔ یہ ڈیزائن کی دیکھ بھال کو سادہ کرتا ہے اور سائز بے میل کی غلطیوں کو ختم کرتا ہے۔ تصویروں اور فوٹو ریالسٹک گریڈینٹ تصاویر کے لیے، WebP کمپریشن کے ساتھ راسٹر فارمیٹ اب بھی استعمال ہوتے ہیں۔

Vector Drawable اینیمیشن

Android دو میکانزم کے ذریعۙ Vector Drawable اینیمیشن کی معاونت کرتا ہے: AnimatedVectorDrawable (API 21 سے دستیاب) اور AnimatedStateListDrawable۔ پہلا path کے وصفات — گھرمائی، منتقلی، رنگ تبدیلی اور شکل تبدیلی کو متحرک کرنے کی اجازت دیتا ہے۔ دوسرا هموار تبادلوں کے ساتھ مختلف حالات (دباؤ، نمایاں) کے درمیان سوئچ کرتا ہے۔

AnimatedVectorDrawable تین XML فائلوں کا استعمال کرتا ہے: ویکٹر Drawable، اینیمیشن کی وضاحت کرنے والا ObjectAnimator، اور ایک بائنڈنگ AnimatedVectorDrawable جو ہدف (گروپ یا path کا نام) کو اینیمیٹر سے منتلک کرتا ہے۔ اینیمیشن fillColor، strokeColor، rotation، translateX/Y، scaleX/Y اور یہاں تک کہ pathData — ایک شکل کو دوسری شکل میں آہستگی سے تبدیل کرنا (morphing) — تبدیل کر سکتا ہے۔

مورفنگ اینیمیشن کی مثال

ایک اینیمیشن پر غور کریں جہاں ایک پلاس آئیکن بند کرنے والے آئیکن میں تبدیل ھو جاتا ہے۔ اہم پابندی: ابتدائی اور حتمی حالت میں pathData ڥاورڈز کی تعداد مطابق ہونی چاہیے، ورنہ اینیمیشن کام نہیں کرے گی۔

xml
<!-- res/drawable/anim_plus_to_close.xml -->
<animated-vector xmlns:android="...">
    <target
        android:name="plus_path"
        android:animation="@anim/plus_to_close"/>
</animated-vector>

ObjectAnimator plus_to_close 300 ملی سیکنڈ میں pathData پراپرٹی کو اصلی پلاس شکل سے بند کرنے والی شکل میں بدل دیتا ہے۔ سیسٹم خودکار طور پر SVG پیتھ ڥاورڈز کے دو سیٹوں کے درمیان محاصہ کو انٹرپولیٹ کرتا ہے۔ اس قسم کی اینیمیشن Material Design میں بٹن اور آئیکن کی حالت کے ہموار تبادلوں کے لیے وسیع پیمانے پر استعمال ہوتی ہے۔

Vector Drawable کوڈ کی مثالیں

ڈارک تھیم کی معاونت کے ساتھ ایک واپس تیر کا نشان آئیکن کے لیے ایک مکمل XML ویکٹر مثال دیکھیں۔ رنگ ایک تھیم وصف کے حوالے سے مقرر کیا جاتا ہے، جو وسائل کی نقل کیے بغیر ہلکے اور ڈارک تھیموں کے درمیان سوئچ کرتے وقت خودکار طور پر آئیکن کا رنگ بدل دیتا ہے۔

xml
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:tint="?attr/colorControlNormal">

    <group android:name="arrow">
        <path
            android:fillColor="@android:color/white"
            android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
    </group>

</vector>

android:tint پیرامیٹر ?attr/colorControlNormal کی قیمت کے ساتھ خودکار طور پر سیسٹم کنٹرول رنگ — ہلکے تھیم پر گھیرا سلیٹر، ڈارک تھیم پر سفید — لاگو کرتا ہے۔ arrow نام کا گروپ AnimatedVectorDrawable کے ذریعۙ اس آئیکن کو متحرک کرنے کی اجازت دیتا ہے۔

کوڈ سے Vector Drawable لوڈ کرنا

Android میں بالواسطہ طور پر Vector Drawable لوڈ کرنے کے لیے AppCompatResources.getDrawable() کلاس یا ContextCompat.getDrawable() کا طریقہ استعمال کریں۔ جدید Jetpack Compose مناصب میں، راسٹر اور ویکٹر Drawable painterResource کے ذریعۙ لوڈ کیے جاتے ہیں، جو خودکار طور پر وسیلۙ کا فارمیٹ متعین کرتا ہے۔

kotlin
import androidx.appcompat.content.res.AppCompatResources

val vectorDrawable = AppCompatResources.getDrawable(
    context,
    R.drawable.ic_arrow_back
)

// Jetpack Compose
Icon(
    painter = painterResource(R.drawable.ic_arrow_back),
    contentDescription = "Back",
    tint = MaterialTheme.colorScheme.onSurface
)

AppCompatResources.getDrawable() استعمال کرتے وقت، AppCompat لائبریری API لیول کے مطابق خودکار طور پر صحیح drawable ورژن کا انتخاب کرتی ہے: Android 5.0 (API 21) سے پہلے کے آلات پر ایک راسٹر فال بیک استعمال ہو سکتا ہے؛ نئے آلات پر Vector Drawable استعمال ہوتا ہے۔ Jetpack Compose میں، painterResource اس مطابقت کو خودکار طور پر سنبھالتا ہے۔

اکثر پوچے جانے والے سوالات

Vector Drawable کس Android ورژن سے معاون ہے؟

Vector Drawable مصدری طور پر Android 5.0 (API 21) سے معاون ہے۔ پرانے ورژنوں کے لیے AppCompat لائبریری استعمال کرنی ضروری ہے (ویکٹر وسائل API 7+ والے آلات پر اس کے ذریعۙ کام کرتے ہیں)۔ build.gradle میں vectorDrawables.useSupportLibrary = true کا جھنڈا بھی ضروری ہے۔

کیا Jetpack Compose میں Vector Drawable استعمال کیا جا سکتا ہے؟

ہاں، Jetpack Compose painterResource() فنکشن کے ذریعۙ Vector Drawable کی معاونت کرتا ہے۔ Icon کمپوننٹ خودکار طور پر res/drawable/ سے ویکٹر وسیلۙ لوڈ کرتا ہے اور ٹنٹ کے لیے Material تھیم لاگو کرتا ہے۔ ویکٹر modifier پیرامیٹر کے ذریعۙ متعین کسی بھی سائز پر معیار میں کمی کے بغیر سکیل ہوتے ہیں۔

Vector Drawable اور SVG میں کیا فرق ہے؟

SVG مختلف وسائل (فلٹرز، ماسکز، سرایل شامل) کے ساتھ ایک آلمی ویب معیار ہے۔ Vector Drawable محدود SVG ڥاورڈز زیر سیٹ کے ساتھ Android کے لیے یہ ایک مطابق ورژن ہے۔ Android SVG کو براہ راست معاونت نہیں کرتا، صرف Android Studio Asset Studio کے ذریعۙ SVG سے تیار کردہ Vector Drawable کو معاونت کرتا ہے۔

SVG کو Vector Drawable میں کیسے تبدیل کریں؟

سب سے آسان طریقہ Android Studio کا استعمال کرنا ہے: drawable فالڈر پر دائں کلیک کریں → New → Vector Asset → Import local SVG file۔ سٹوڈیو خودکار طور پر SVG کو بہترین بناتا ہے اور XML Vector Drawable تیار کرتا ہے۔ دوسرا اپشن آن لائن کنورٹرز جیسے SVG2VectorDrawable یا ShapeShifter ہیں، جو اینیمیشن کے ساتھ برآمد کی معاونت کرتا ہے۔

پرانے آلات پر Vector Drawable کیوں ظاہر نہیں ہوتا؟

مسئلہ عام طور پر AppCompat کی معاونت کی کمی سے متعلق ہے۔ یقینی بنائیں کہ build.gradle میں vectorDrawables.useSupportLibrary = true کا جھنڈا مقرر ہے اور AppCompatDelegate استعمال ہوتا ہے۔ یہ بھی چیک کریں کہ Vector Drawable میں AppCompat لائبریری کے استعمال کردہ ورژن میں دستیاب نہ ہونے والی خوبیاں تو نہیں ہیں۔

خلاصہ

  • Vector Drawable XML پر مبنی Android ویکٹر گرافکس کا ایک فارمیٹ ہے، API 21 سے معیاری ہے
  • اسکیلنگ معیار میں کمی کے بغیر — ایک XML فائل مختلف کیفیتوں کے لیے چھ راسٹر تصاویر کی جگہ لے لیتی ہے
  • APK کا حجم PNG آئیکنز کو ویکٹر مساوی سے بدلنے پر 40–60% کم ہو جاتا ہے
  • اینیمیشن شکل کی تبدیلی اور رنگ تبدیلی کی معاونت کے ساتھ AnimatedVectorDrawable کے ذریعۙ نفاذ کی جاتی ہے
  • ڈارک تھیم ?attr/colorControlNormal اور android:theme وصفات کے ذریعۙ معاون ہے
  • AppCompat useSupportLibrary کے ذریعۙ Android 2.3 (API 7) تک پیچھی مطابقت فراہم کرتا ہے
  • استعمال کریں: آئیکنز اور انٹرفیس عناصر کے لیے Vector Drawable، فوٹو ریالسٹک تصاویر کے لیے PNG/WebP

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں