این مطالب طبق تجربه ی شخصی نوشته شده است، به مرور زمان اصلاح و کامل خواهد شد.
این مطلب هنوز کامل نیست.
تیم آمستریس
------------------------------------------------------------------------------
آیا میتوانیم هر فایلی را که خواستیم به فایل apk اضافه کنیم؟
اضافه کردن فایل ها در اندروید، ساختار زنجیره واری دارد.
در فایل های Apk تمامی فایل ها و مشخصات دارای کد هستند، این کدها با ساختار هگزادسیمال کد بندی شده اند ( ساختار 16 تایی).
برای توضیح سئوال بالا یه مثال میزنم:
فرض کنید می خواهید یک فایل گرافیک png را به فایل apk اضافه کنید.
ابتدا باید فایل png مورد نظر را برای رزولوشن صفحه ی موبایل یا وسیله ی مورد نظرتان طراحی کنید.
سپس فایل مورد نظر را درون فولدر drawable-xxxx کپی بزنید.کد:HDPI MDPI X-HDPI LDPI
xxxx - مشخصات dpi وسیله ی مورد نظر شماست.
پس از کپی فایل درون فولدر drawable ، باید آنرا در ساختار کلی فایل Apk معرفی کنید. به این منظور باید آنرا درون فایل public.xml معرفی کنید.
فایل public.xml نشان دهنده ی تمام عناصر درون Apk میباشد، که هر یک دارای کد مخصوصی میباشد. در سیستم عامل اندروید، فایل ها بوسیله ی کدهای معرفی شده در public.xml ردیابی میشوند، نام ها تاثیری ندارند.کد:xxxxx.apk\res\values\public.xml
در فایل public.xml، معمولا ساختار زیر تعریف میشوند:
چندتا نمونه را ببینید: فایل Contacts.apk
کد:<public type="attr" name="mimeType" id="0x7f010000" />کد:<public type="drawable" name="btn_create" id="0x7f02000c" />کد:<public type="layout" name="act_display_groups" id="0x7f030000" />کد:<public type="anim" name="quickcontact" id="0x7f040000" />کد:<public type="xml" name="searchable" id="0x7f050000" />کد:<public type="array" name="dialog_items" id="0x7f060000" />کد:<public type="id" name="left" id="0x7f070000" />کد:<public type="color" name="textColorIconOverlay" id="0x7f080000" />کد:<public type="dimen" name="linked_contact_icon_size" id="0x7f090000" />کد:<public type="string" name="config_import_vcard_type" id="0x7f0b0000" />کد:<public type="bool" name="config_allow_import_from_sdcard" id="0x7f0a0000" />کد:<public type="integer" name="config_export_file_min_index" id="0x7f0c0000" />کد:<public type="plurals" name="groupDescrip" id="0x7f0d0000" />کد:<public type="style" name="DialtactsTheme" id="0x7f0e0000" />در کدهای بالا، تمامی نوع های فایلی که برای Contacts.apk مشخص شده بود رو گذاشتم، تا به بررسی اونا بپردازیم.کد:<public type="menu" name="edit" id="0x7f0f0000" />
همونطور که میبینیم نوع فایل ها با public type معرفی میشوند.
که از نوشته های بالا میبینیم که نوع فایل هایی که در این نرم افزار استفاده شده است به شرح زیر است:
attr : بیشتر برای کد بندی پارامترهای معرفی شده بکار میرود. مشخصات این فایل ها از آدرس زیر قابل ردیابی است:
drawable : برای کدبندی فایل های گرافیکی بکار میرود. فایل های گرافیکی درون فولدر هایکد:\res\values\attrs.xml
drawable و مقادیر تعریف شده در فایلقرار دارند.کد:\res\values\drawables.xml
array : مثل مقادیر Attr اطلاع زیادی ازش ندارم. آدرس فایل های تعریف شده درون فایل زیر میباشند.
id :برای کد بندی مشخصات بکار رفته در نرم افزار استفاده میشوند.کد:\res\values\arrays.xml
color: مربوط به رنگ های تعریف شده در فایل زیر میباشند:
dimen : برای کد بندی اندازه هایی که در فایل زیر تعریف شده اند بکار میرود.کد:\res\values\colors.xml
layout : برای کدبندی لایه ها و ساختار اینترفیس نرم افزار بکار میرود. برای معرفی فایل های درون فولدرهای Layout بکار میرود.کد:\res\values\dimens.xml
فولدر های Layout میتوانند بسته به اندازه های رزولوشن از یک تا چندین فولدر باشند. بستگی به قابلیت های نرم افزار دارد. ترتیب قرار گیری فایل های گرافیکی نرم افزار در این فولدر ها مشخص میشود.
مثلا برای استتس بار ، ترتیب قرار گیری Toggles .
anim : کد بندی انیمیشن هایی که برای نرم افزار تعریف میشوند (بیشتر برای ترانزیشن های صفحات بکار میرود.) فایل های تعریف شده درون فولدر anim هستند.کد:\res\layout
xml : فایل های xml که درون فولدر xml تعریف میشوند. فایل ها در فولدر xml هستند.
string : برای کد بندی استرینگ ها بکار میرود، استرینگ چیست؟
استرینگ ها برای تعریف نام ها بیشتر کاربرد دارند، مثلا نام نرم افزار، نام منو ها، نام دکمه ها و هر متغییر دیگه ای که همراه با نام باشد، شما هر نوشته و یا متنی را که در نرم افزار میبینید در فایل استرینگ تعریف میشود.
استرینگ ها در فایل زیر نوشته میشوند.
در این مورد بیشتر توضیح خواهم داد.کد:res/values/strings.xml
bool: برای کد بندی bool های تعریف شده در نرم افزار بکار میرود، شما میتوانید لیست bool ها را از فایل زیر ببینید:
integer : برای تعریف مقادیر و داده های تعریف شده در فایل های xml بکار میرود.کد:res/values/bools.xml
لیست اینتیجر ها را از فایل زیر میتوانید ببینید:
plurals : برای کد بندی پلورلز بکار میرود، اطلاع دقیق ندارم. لیست پلورلز در فایل زیر است:کد:res/values/integers.xml
style : برای کد بندی استایل های طراحی شده (تم) در نرم افزار بکار میرود.کد:res/values/plurals.xml
تنظیمات استایل ها در فایل زیر گنجانده شده است:
--------------------------------------------------کد:res/values/styles.xml
فایل ها به چه ترتیبی کد بندی میشوند؟
همونطور هم که در اول این تاپیک گفتم، فایل ها به ترتیب هگزادسیمال کدبندی میشوند:
هگزادسیمال چیست؟
کد بندی 16 تایی است، که به ترتیب از حروف زیر تشکیل میشود:
ترتیب کد بندی در public.xml چگونه هست؟کد:0 >1 >2 > 3> 4> 5> 6> 7> 8> 9> a> b> c >d >e >f
به id های تعریف شده در هر public type دقت کنید:
مقدار id = 0x7f010000 تعریف شده برای نوع attr میباشد.کد:<public type="attr" name="mimeType" id="0x7f010000" />
معمولا چهار یا پنج نوشته ی اول، ثابت هستند.
نوع public type از حرف ششم شروع شده و برای public type بعدی به مقدار بالاتر ارتقا مییابد.
به حروف ششم پابلیک تایپ های تعریف شده دقت کنید:
و ......کد:<public type="attr" name="mimeType" id="0x7f010000" /> <public type="drawable" name="btn_create" id="0x7f020000" /> <public type="layout" name="act_display_groups" id="0x7f030000" /> <public type="anim" name="quickcontact" id="0x7f040000" /> <public type="xml" name="searchable" id="0x7f050000" /> <public type="array" name="dialog_items" id="0x7f060000" /> <public type="id" name="left" id="0x7f070000" /> <public type="color" name="textColorIconOverlay" id="0x7f080000" /> <public type="dimen" name="linked_contact_icon_size" id="0x7f090000" /> <public type="bool" name="config_allow_import_from_sdcard" id="0x7f0a0000" /> <public type="string" name="config_import_vcard_type" id="0x7f0b0000" /> <public type="integer" name="config_export_file_min_index" id="0x7f0c0000" /> <public type="plurals" name="groupDescrip" id="0x7f0d0000" /> <public type="style" name="DialtactsTheme" id="0x7f0e0000" /> <public type="menu" name="edit" id="0x7f0f0000" />
با معرفی هر گونه type جدید، باید مقدار فوق را یک درجه بالاتر تعریف کنیم.
تمامی فایل ها از 0000 شروع میشوند و تا آخرین مقدار همان TYPE فایل ادامه میابند.
حالا این شرایط تعریف نوع PUBLIC TYPE بود، حالا در اینجا نحوه ی اضافه کردن فایل های دیگر از یک نوع خاص public type را یاد میگیریم:
بالفرض ما میخواهیم ، 3 تا فایل جدید به drawable ها اضافه کنیم:
3 تا فایل اضافه شونده باید به آخرین مقدار تعریف شده در drawable ها اضافه شود.
در اینجا فرض میکنیم، که آخرین فایل تعریف شده با همان id اولیه است.
برای مثال میخواهیم 3 فایل جدید به نام های زیر رو که برای رزولوشن hdpi ساخته ایم را به public.xml اضافه کنیم:
میدانیم که id تعریف شده برای drawables مقدار زیر است:کد:amestris_01.png amestris_02.png amestris_03.png
برای افزودن فایل های بعدی به طریق زیر عمل میکنیم:کد:<public type="drawable" name="btn_create" id="0x7f020000" />
همین روند ادامه خواهد داشت.....کد:<public type="drawable" name="btn_create" id="0x7f020000" /> <public type="drawable" name="amestris_01" id="0x7f020001" /> <public type="drawable" name="amestris_02" id="0x7f020002" /> <public type="drawable" name="amestris_02" id="0x7f020003" />
حالا بالفرض میخواهیم ، یک استرینگ جدید تعریف کینم:
برای اینکار ابتدا فایل strings.xml را باز میکنیم، و سپس استرینگ جدیدی را به همان ساختاری که تعریف شده را تعریف میکنیم:
بالفرض میخواهیم برای string با نام amestris عبارت Amestris Team را اضافه کنیم.
در فایل strings.xml باز شده، مقدار زیر را اضافه میکنیم:
این عبارت نشان میدهد که هر جا string به نام amestris تعریف شود، عبارت Amestris Team نشان داده خواهد شد.کد:<string name="amestris">Amestris Team</string>
حالا باید این استرینگ تعریف شده را به public.xml اضفه کنیم.
به این منظور فایل public.xml را باز میکنیم و در قسمت strings اینگونه عمل میکنیم:
میدانیم که آی دی استرینگ ها اینگونه هست:
حالا ما استرینگ آمستریس را اضافه میکنیم:کد:<public type="string" name="config_import_vcard_type" id="0x7f0b0000" />
فایل را ذخیره میکنیم.کد:<public type="string" name="config_import_vcard_type" id="0x7f0b0000" /> <public type="string" name="amestris" id="0x7f0b0001" />
تیم آمستریس
موضوعات مشابه:
بوک مارک ها