رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش برنامه نویسی اندروید
#21
استفاده از مفاهیم آشکار (explicit intents)

تماشای برخط [لینک مستقیم] فیلم «آموزش نحوه استفاده از مفاهیم آشکار»
زیر نویس انگلیسی [English Subtitle]
[عکس: download_2.png]نسخه pdf این آموزش[1.75 مگابایت]
 
تا اینجا یاد گرفتیم که چطور با فعالیت ها (activities) کار کنیم، اگه یادتون باشه برای شروع فعالیت Dovomi از intent استفاده کردیم، کار مفهوم (intent) اینه که یه عنصری از برنامه تون رو فعال کنه.
دو نوع مفهوم (intent) وجود داره، مفاهیم آشکار و مفاهیم ضمنی یا مجازی.
با مفاهیم آشکار، یک عنصر مشخصی از برنامه رو برای فعال شدن تعیین می‌کنیم. مثلا می‌خوایم یه فعالیت(activity) دیگه رو تو برناممون اجرا کنیم، از یه مفهوم آشکار استفاده می‌کنیم که آشکارا به سیستم بگه می‌خوام اون فعالیت رو فعال(اجرا) کنم.
مفاهیم ضمنی (که تو پست بعدی بهش می‌پردازیم) در واقع یک پیام کلی برای سیستم می‌فرستن : که آیا برنامه‌ای در سیستم عامل این گوشی وجود داره که بتونه این مفهوم رو اجرا کنه؟ اگه وجود داشته باشه لیست این برنامه‌ها به کاربر پیشنهاد می‌شه و کاربر یکی رو انتخاب می‌کنه و از این طریق اون چیزی که با مفهوم فرستاده شده (ورودی‌های intent) اجرا می‌شه.
 
خوب الان می‌خوایم رو مفاهیم آشکار تمرکز کنیم. برای شروع یه پروژه بسازید با دوتا فعالیت (activitie) که تو فعالیت اصلی (main) یه متنی که قابل نوشتن باشه یعنی کاربر می‌تونیه توش متن وارد کنه (از توی Text Fields اولی رو انتخاب کنید) و یه دکمه (برای اینکه به فعالیت دوم بره)، فعالیت دوم هم یه فیلد متنی ساده داشته باشه.(حواستون باشه که فعالیت دوم رو هم تو فایل manifest تعریف کنید).
[عکس: 5831821559994388830?view]
۲.کاری که با این برنامه می‌خوایم بکنیم اینه که : کاربر یه متنی رو تو فیلد متنی قابل نوشتن می‌نویسه و دکمه رو می‌زنه، فعالیت دوم باز می‌شه و متنی که نوشته بوده رو نشون می‌ده. یعنی می‌خوایم یاد بگیریم اطلاعاتی رو از یه فعالیت به فعالیت دیگه منتقل کنیم.
اول به فایل main.java می ریم و یه مرجع(اشاره‌گر) از دکمه و فیلد متنی می‌گیریم. با نوشتن این کد 
 
EditText matn = findViewById(R.id.editText1);
 
یه مرجع از فیلد متنی قابل نوشتن‌مون می‌گیریم. خوب بازهم با ctrl+1 خطاهای برنامه رو درست می‌کنیم. (اینجا کافیه فقط cast انجام بدید.) همین کارو برای دکمه انجام می‌دیم.
 
Button d = findViewById(R.id.button1);
 
و برای دکمه تابع setOnclickListener رو صدا می‌زنیم تا کارایی که قراره با فشردن دکمه انجام بشه رو تعیین کنیم. با نوشتن این کد :
 
d.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

}
});
 
همون طور که قبلا گفته شد بعد از نوشتن new (خط اول) اگه بنویسید onclick و بعد ctrl+space رو بزنید خودش بهتون ادامه‌اش رو پیشنهاد می‌ده و روی OnClickListener که کلیک کنید، بقیه‌اش رو خودش می‌نویسه.
۳.الان قصد داریم که یه intent بسازیم، همون طور که قبلا اشاره شد intent یک راه برای فعال کردن جزئی از برنامه است. پس برای اینکه یه نمونه از کلاس Intent بسازیم، می‌نویسیم Intent و یه اسم براش می‌ذاریم و newاش می‌کنیم. (با ctrl+space، اون گزینه رو انتخاب می‌کنیم که مناسبه پاس کردن یه فعالیته -تو تصویر مشخصه-)
[عکس: 3286084217754997383?view]
برای ورودی‌های سازنده‌ی intent، اول باید مولفه‌ای که این درخواست رو کرده بنویسیم یعنی Main.this (که یه مرجع به این فعالیت اصلی هست). برای ورودی دوم، باید کلاس فعالیتی رو بدیم که می‌خوایم اجرا بشه یعنی Dovomi.class. پس کدمون اینجوری می‌شه :
 
Intent mafhoom = new Intent(Main.this, Dovomi.class);
 
در واقع ما می‌تونستیم همین قسمت (new Intent(Main.this, Dovomi.class رو به عنوان ورودی startActvity به کار ببریم (مثل آموزش قبلی) ولی این دفعه می‌خوایم یه چیزایی رو ضمیمه‌ی mafhoom کنیم. چیزی که می‌خوایم اضافه کنیم همون متنیه که کاربر تو matn وارد می‌کنه. برای این کار از تابع putExtra از شی mafhoom استفاده می‌کنیم.
[عکس: 3595906343011056569?view]
۴.ورودی اول این تابع یه رشته (String) است که به عنوان اسم اون کلیدی که می‌خوایم اضافه کنیم به کار برده می‌شه و ورودی دوم از هر نوعی می‌تونه باشه و ما چون اون متن رو می‌خوایم بفرستیم، برای ورودی دوم هم نوع رشته (String) رو انتخاب می‌کنیم. اسم کلید رو می‌ذارم "matneVaredShode" و برای بازیابی اطلاعاتی که داخل matn (متنی که قراره کاربر وارد کنه) وجود داره، باید از تابع getText استفاده کنیم و اگه دقت کنید می‌بینید که خروجی این تابع از نوع Editable هست نه از نوع رشته‌ی خام پس با اضافه کردن ()toString. اونو به رشته‌ی خام تبدیل می‌کنیم.
[عکس: 8752923923286120539?view]
 
mafhoom.putExtra("matneVaredShode", matn.getText().toString());
 
از matn ایراد می‌گیره و با زدن ctrl+1 بهمون پیشنهاد می‌کنه که اونو به final تغییر بدیم (چون قراره ازش تو یه کنترل کننده وقایع ناشناس استفاده کنیم).
[عکس: 2765576781541435540?view]
ما اون اطلاعاتی که می‌خواستیم به فعالیت Dovomi بفرستیم رو به mafhoom اضافه کردیم، حالا وقتی می‌خوایم فعالیت جدید  رو شروع کنیم، این اطلاعات براش فرستاده می‌شه. تابع startActivity رو استفاده می‌کنیم و mafhoom رو به  عنوان ورودی براش می‌فرستیم.
startActivity(mafhoom);
 
۵.خوب تا اینحا دیگه کار ما با Main.java تموم می‌شه، حالا باید به Dovomi.java بریم و اطلاعاتی که همراه mafhoom فرستاده شده بازیابی کنیم و تو textView نشون بدیم. برای شروع اول یه مرجع از فیلد متنی می‌گیریم با این کد :
 
TextView matni = (TextView) findViewById(R.id.textView1);
برای اینکه این فیلد متنی، متن دلخواه ما رو نشون بده باید از تابع setText استفاده کنیم(هرچی به عنوان ورودی بفرستیم رو نشون می‌ده)، برای گرفتن همون متنی رو که توسط mafhoom فرستاده شده، اول باید با getIntent مفهومی که این فعالیت رو اجرا کرده رو به دست بیاریم، و بعد از تابع getExtra برای گرفتن اطلاعات داخل intent استفاده می‌کنیم، که در واقع تمام اطلاعاتی که بهش داده بودیم رو برمیگردونه. اما ما فقط اون قسمتی از اطلاعاتش رو می‌خوایم که با کلید "matneVaredShode" مشخص شده (اگرچه در این تمرین قفط همین یدونه رو همراه mafhoom فرستادیم). و چون اون اطلاعاتی که می‌خوایم از نوع رشته است، از تابع getString استفاده می‌کنیم و کلید رو بهش می‌دیم.
 
matni.setText(getIntent().getExtras().getString("matneVaredShode"));
 
[عکس: 3876186990898576614?view]
۶.حالا برنامه رو اجرا می‌کنیم و می‌بینیم همون متنی که تو فعالیت اصلی وارد کردیم تو فعالیت دوم نشون داده می‌شه Smile
[عکس: 617923693759195016?view]
[عکس: 5204677433495038764?view]
[عکس: 1xt_33480998_2180148292221571_4684148271399043072_n.jpg]
پاسخ }
سپاس شده توسط: a_b_kh
#22
استفاده از مفاهیم ضمنی (implicit intents)
پنجشنبه, ۱۸ خرداد ۱۳۹۱، ۰۳:۴۱ ب.ظ
تماشای برخط [لینک مستقیم] فیلم «آموزش نحوه استفاده از مفاهیم ضمنی»
زیرنویس انگلیسی [English Subtitile]
[عکس: download_2.png]دریافت نسخه ی pdf این آموزش [2.78 مگابایت]
حالا که خوب مفاهیم آشکار رو متوجه شدیم، وقتشه که به مفاهیم ضمنی بپردازیم، برای درک بهتر از یه مثال شروع می‌کنیم.
۱.شبیه ساز رو اجرا می کنم و برنامه‌ی Gallery رو از تو منوی برنامه‌ها اجرا می‌کنم و یه عکس از توش انتخاب می‌کنم، می‌بینید که بالای عکس یه دکمه share (به‌اشتراک‌گذاری) وجود داره. این دکمه بهتون اجازه می‌ده که این عکس رو برای یکی دیگه بفرستید، اما ممکنه یه عالمه برنامه تو گوشیتون داشته باشید که قادر به انجام این کار باشن. مثل ایمیل یا بلوتوث و ... شما می‌تونید برنامه‌ی خودتون رو به این لیست برنامه‌ها که می‌تونن عکس رو به اشتراک بذارن اضافه کنید و این دقیقا کاریه که یه مفهوم ضمنی (implicit intent) انجام می‌ده.
[عکس: 7402135246118651094?view]
تو برنامه‌ی Gallery، وقتی دکمه‌ی share رو فشار می‌دیم، این برنامه توسط یه مفهوم ضمنی به سیستم اندروید می‌گه :‌ آیا تو سیستم این گوشی برنامه‌ای وجود داره که بتونه اطلاعات رو بفرسته؟ من یه عکس دارم که می‌خوام بفرستم!
بعد سیستم به کاربر یه لیستی از برنامه‌هایی که قادر به انجام این کار هستن نشون می‌ده. توی شبیه ساز وقتی دکمه share رو می‌زنم، عکس رو تبدیل به MMS می‌کنه بدون اینکه از من سوال کنه چه برنامه‌ای رو می‌خوام، چون تنها برنامه‌ای که تو شبیه‌ساز قادر به مدیریت این کار هست، همین برنامه است.

قبل از اینکه به ادامه آموزش بپردازیم، ممکنه براتون سوال شده باشه که این تصویر رو چطور وارد شبیه‌ساز کردم، خوب اگه بریم سراغ اکلیپس و به DDMS بریم، می‌بینید که یکی از ابزارهای تو نوار بالایی، File Explorer هست که به شما اجازه می‌ده فایل‌های داخل دستگاه رو ببینید، من به sdcard رفتم و عکس مورد نظرم رو گذاشتم، برای گذاشتن فایل باید از دکمه‌ای استفاده کنید که بالا سمت راسته و اگه روش نگه دارید می‌نویسه push a file onto the device. بعد از اینکه فایل رو تو دستگاه گذاشتید باید یه بار reset کنید.
 
[عکس: 1288223923912237287?view]
خوب برگردیم به ادامه آموزش، گفتیم که برنامه‌ی Gallery با استفاده از یه مفهوم (intent) یه پیغام به سیستم می‌فرسته، حالا از کجا بفهمیم، این مفهوم چه پیغامی رو به فرستاده؟ برای اینکار دکمه‌ی share رو تو شبیه‌ساز می‌زنیم بعد به ایکلیپس می‌ریم و اگه تو LogCat نگاه کنیم، خط های آخرش نوشته :
Starting: Intent { act=android.intent.action.SEND type=image/jpeg ...
android.intent.action.SEND یه مفهوم ضمنیه، که همراه با خودش نوع داده‌ای تصویر از نوع jpeg رو داره.
[عکس: 4281742085136192097?view]
۲.بیاید یه برنامه بسازیم که بتونه به پیغامی که دکمه‌ی share می‌ده، جواب بده. اول یه پروژه‌ی جدید می‌سازیم، بعد به AndroidManifest.xml می‌ریم، جایی که می‌تونیم یه مفهوم ضمنی بسازیم، توی پروژه یه فعالیت (activity) اصلی داریم که من اسمشو گذاشتم main. و مشاهده می‌کنید که برای این فعالیت یه intent-filter وجود داره که قبلا دریاره‌اش توضیح دادم. برای ساختن یه مفهوم دیگه، همون بلوک intent-filter  رو کپی میکنیم، هر کدوم از این بلوک‌ها به سیستم می‌گه که این فعالیت قادر به مدیریت این مفاهیمه.
در قسمت action کد جدید به جای MAIN می نویسیم، SEND.
برای category هم مقدار DEFAULT رو به جای LAUNCHER مینویسیم. این category به سیستم می‌گه که این مفهوم ا چه نوعیه که معمولا همون مقدار پیش فرض رو می ذاریم و خلاص :دی
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
[عکس: 2010311559096959303?view]
۳.مورد بعدی که باید اضافه کنیم، یه تگ data است که نوع داده‌ای که می‌تونیم با این مفهوم مدیریت کنیم رو به اندروید می‌گه. یکی از حصوصیاتش mimetype هست که مساوی */image می ذاریم به این معنی که هرنوع عکسی رو می تونه مدیریت کنه.
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
با اضافه کردن همین چند خط کد، برنامه مون این توانایی رو پیدا می‌کنه که اگه کسی خواست عکسی رو بفرسته و روی دکمه‌ی share کلیک کرد، ما هم می‌تونیم اون رو براش مدیریت کنیم.
۴.وقتی عکس از برنامه‌ی Gallery برامون فرستاده شد، بیاید یه راهی برای نمایش اون فراهم کنیم. به فایل main.xml داخل layout می‌ریم و اون فیلد متنی رو پاک می‌کنیم. و از ستون سمت چپ تو قسمت Images & Media یه کدوم از گزینه هایی که می تونه تصویر رو نشون بده رو انتخاب می‌کنیم، و یه عکس الکی می ذاریم روش.
[عکس: 6118568953498834633?view]
بعد به فایل جاوای مربوط به این xml می‌ریم، که main.java هست. اول یه مرجع از اون imageView که تو فایل xml گذاشتیم می‌گیریم. با نوشتن این کد (قبلا مفصل توضیح داده شده):
 
ImageView image = (ImageView) findViewById(R.id.imageView1);
۵.حالا می‌خوایم اون عکسی که از Gallery برامون فرستاده می‌شه رو به عنوان محتویات این imageView قرار بدیم. با استفاده از تابع setImageURI از کلاس imageView. این تابع باید به جایی اشاره کنه که قراره از اونجا محتویات تصویر مشخص بشه. و ما می‌خوایم این محتویات رو از مفهوم ضمنی بگیریم، پس می‌نویسیم (تو پست قبل توضیح دادم):
image.setImageURI(getIntent().getExtras().get(Intent.EXTRA_STREAM));
[عکس: 244759020619449650?view]
از setImageURI خطا می‌گیره، باید crtl+1 رو بزنید و اولین گزینه ی تصحیح اینه که cast کنید. پس اینجوری می شه:
image.setImageURI((Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM));
این Intent.EXTRA_STREAM تمام رشته ای که این مفهوم می‌فرسته رو می‌گیره که در واقع آدرس URI همون عکسه است.
۶.برنامه رو run کنید. وقتی بالا میاد یه خطا می‌گیره که انتظارش هم می‌رفت، چون وقتی همین جوری برنامه رو اجرا کنید آدرس هیچ عکسی فرستاده نشده و موقعی که دارید واقعا برنامه تولید می‌کنید باید به این خطاها فکر کنید و راه حلی براشون پیدا کنید.
۷.حالا به Gallery میریم و روی عکس دکمه‌ی share رو می‌زنیم، و می‌بینیم که برنامه‌ی ما هم به لیستی که می‌تونه این کارو انجام بده اضافه شده! 
[عکس: 2456564616007332796?view]
و با انتخاب برنامه‌ی خودمون می‌بینیم که عکس فرستاده شده نمایش داده می‌شه.
[عکس: 9153416033557894513?view]
[عکس: 1xt_33480998_2180148292221571_4684148271399043072_n.jpg]
پاسخ }
سپاس شده توسط: hosseinaban ، a_b_kh ، حنانه
#23
ساختن و استفاده از منابع (Resources)
چهارشنبه, ۲۸ تیر ۱۳۹۱، ۱۲:۱۵ ب.ظ
تماشای برخط [لینک مستقیم] فیلم آموزشی «نحوه ی ساخت و استفاده از منابع»
زیر نویس انگلیسی [English Subtitle]
[عکس: download_2.png]دریافت نسخه pdf این آموزش [1.73 مگابایت]
‎وقتی دارید برنامتون رو می‌سازید احتمال زیاد از منابع بیرونی هم استفاده خواهید کرد، مثل فایلهای ویدیویی یا شنیداری، تصاویر، xml و ... پس باید بدونید چطور از داخل برنامتون به این منابع ارجاع بدید. منابع برنامتون داخل پوشه ی res ذخیره می شن. و یه سری فایلها به صورت خودکار بهش اضافه می شه مثل :
layout : شامل فایل های xml ای که مربوط به محیط های کاربریه.
values : شامل تمام مقادیریه که توی برنامتون تعریف می کنید و بهشون یه اسم می دید و بعدا با اون اسم بهشون رجوع می کنید و ازشون استفاده می کنید.
‎ فایل string.xml  هم به طور پیش فرض در این فولدر به وجود اومده. نحوه‌ی کارکرد string.xml این طوریه که ما یه سری منابع رشته‌ای داریم که مثلا ‌(با توجه به تصویر) هرجا که تو برناممون بخوایم از Hello World, Main! استفاده کنیم، به جاش می تونیم به این منبع ارجاعش بدیم و بنویسیم hello.
[عکس: 6161859010265215157?view]
‎ حالا چرا این منابع رو بیرون نگه می‌داریم؟ به خاطر اینکه بتونیم متغیرهای سراسری (global) داشته باشیم، مثلا می تونیم چند تا فولدر برای زبان های مختلف داشته باشیم و فقط لازمه که به فایل xml مربوط به اون زبان بریم و دیگه لازم نیست تمام کدهای برناممون رو به خاطر تغییر زبان کاربر تغییر بدیم.
‎ ۲.اگه به سایت اصلی توسعه اندروید مراجعه کنید یه قسمت داره به اسم API Guide که توش راهنمایی های مفیدی برای ساخت برنامه کرده، یکی  از این راهنماها مربوط به منابع می شه، خود اندروید به طور پیش فرض یه سری از فولدرها رو تو res تشخیص می‌ده مثلا 
‎ اگه فولدر anim رو درست کنید و توش یه فایل xml مخصوص انیمیشن بذارید، اندروید متوجه می شه که انیمیشنه. (تو آموزش های بعدی مفصل به انیمیشن می پردازیم).
‎ یا مثلا اگه می‌خواید یه لیستی از رنگ ها رو در برنامتون استفاده کنید می تونید تو فولدر color بذاریدشون.
‎ هر کدوم از عکس‌هامون یا هر فایل xml مربوط به گرافیک در داحل فولدر drawable قرار می گیره.
‎ فولدر layout شامل فایلهای xml مربوط به چیدمان صفحه است.
‎ اگه بخوایم منو برای برناممون بسازیم (که بعدا آموزش داده خواهد شد) باید اونو تو فولدر menu بذاریم و ...
‎ چون تمام این منابع نوعی assets هستن، ممکنه از خودتون بپرسید پس این فولدر assets چیه (معمولا بالای فولدره bin هست)، در واقع می تونید منابعتون رو تو این فولدر بذارید ولی نمی تونید با یک id بهشون ارجاع بدید. به همین خاطر بهتره تمام منابع رو توی همون فولدر res قرار بدیم چون به طور خودکار براشون id ساخته می شه و با دستور R.id می تونید بهشون رجوع کنید.
[عکس: 797166018621558037?view]
‎ ۳.اگه تو زیر شاخه های فولدر res دقت کرده باشید، خود فولدر drawable به تنهایی وجود نداره بلکه سه تا فولدر drawable-hdpi، drawable-ldpi و drawable-mdpi وجود دارن، این به خاطر یک ویژگی مهمه اندرویده که دستگاه ها رو به سه وضوح تصویر تقسیم بندی کرده : دستگاه‌های با وضوح تصویر بالا (High dpi)، دستگاه‌های با وضوح تصویر متوسط (Medium dpi) و دستگاه‌های با وضوح تصویر پایین (Low dpi). برای هر کدوم از این وضوح تصویرهای مختلف می‌تونیم assetهای مربوط به خودشون رو بذاریم، و سیستم اندروید با توجه به دستگاهی که داره روش اجرا می‌شه، asset مربوطه رو بیرون می‌کشه و در برنامه ازش استفاده می کنه (توی یه آموزش دیگه بهش می‌پردازیم) ولی فقط بدونید که اگر از یه asset خواستید که تو همه‌ی وضوح تصاویر استفاده بشه، کافیه فقط توی drawable-hdpi بذاریدش، اون وقت تو یه دستگاه با وضوح تصویر متوسط یا پایین هم سیستم از تو فولدر drawable-hdpi برشون می‌داره.
‎ ۴.راحت‌ترین راه برای اضافه کردن asset به برنامه‌تون اینه که محتوایی که می خواید رو بکشید و تو فولدر مورد نظر ول کنید.
‎ برای این که به پیغام خطا برخورد نکنید حواستون باشه اسم asset هایی که می‌خواید وارد کنید فقط می‌تونه شامل حروف a تا z، اعداد 0 تا 9 و خط زیر باشه.
[عکس: 2033446799654473109?view]
‎ ۵.تو فولدر gen اگه R.java رو باز کنید، می‌بینید که به اون asset جدیدی که اضافه کردید یه عدد نسبت داده، لازم نیست برای ارجاع به این asset اون عدد رو استفاده کنید بلکه از راه دیگه ای این کارو می‌کنیم که الان توضیح می‌دم. (حواستون باشه که اصلا تغییری هم توی فایل R.java ایجاد نکنید چون این فایل به طور خودکار درست می‌شه و اگه تغییرش بدید برنامتون به هم می‌ریزه.)
[عکس: 2827766541698084145?view]
۶.من برای این آموزش یه پروژه‌ی جدید ساختم و تا اینجا فقط یه عکس به فولدر drawable-hdpi اضافه کردم، از فولدر res به layout برید و فایل xml اصلی تون رو انتخاب کنید (برای من main.xml هست)، اون فیلد متنی رو پاک کنید، به جاش می‌خوایم عکسی که به پروژه اضافه کردیم رو بذاریم، از منوی کنار Images & Media رو انتخاب کنید و اون المانی که تو عکس دورش قرمز شده رو انتخاب کنید و به داخل صفحه بکشید و ول کنید، حالا ازتون می‌خواد منبع عکس رو مشخص کنید.
[عکس: 1333268270376586868?view]
‎ برای اینکه متوجه بشید دقیقا چه اتفاقی افتاده، به قسمت ویرایش متنی xml برید، تو مشخصات این تصویر یه قسمت داره به اسم
کد:
android:src
که با کد
کد:
@drawable/androidcode_logo
 به تصویر مورد نظر ارجاع داده.
[عکس: 4201555006276180738?view]
اصولا برای ارجاع به هر چیزی از علامت @ استفاده می‌کنیم.مثلا اینجا بعد از علامت @ می خوایم به drawable بریم.
[عکس: 4790448562581199056?view]
و بعد هم یه تصویر دیگه رو انتخاب می‌کنیم، مثل ic_launcher.
[عکس: 5523165858328791004?view]
دقت کنید که برای رسیدن به androidcode_logo یا هر asset دیگه‌ای، نیازی نبود که بنویسیم
کد:
@drawable-hdpi
فقط کافی بود از
کد:
@drawable
استفاده کنیم. اینکه این asset از کدوم وضوح تصویر انتخاب بشه رو، خود سیستم عامل اندروید با توجه گوشی کاربر انجام می‌ده. حالا اگه به قسمت گرافیکی main.xml بریم، می‌بینیم که تصویر عوض شده.
[عکس: 386378693300963650?view]
خوب این روش ارجاع در فایل های xml بود، حالا اگه از فایل‌های جاوا بخوایم به منابعمون ارجاع بدیم باید چی کار کنیم؟
۷.اول یه ارجاع از خود ImageView می‌گیریم :
ImageView ax = (ImageView) findViewById (R.id.imageView1);
بعد منبع این ImageView رو می‌ذاریم عکسی که می‌خوایم :
ax.setImageResource(R.drawable.androidcode_logo);
[عکس: 4461590900389511778?view]
این دستور باعث می‌شه وقتی که برنامه اجرا شد، منبع عکس از اون چیزی که بوده، تغییر پیدا کنه به
کد:
R.drawable.androidcode_logo
و وقتی برنامه رو اجرا می‌کنیم، این خروجی رو می‌بینیم.
[عکس: 6943804364866700201?view]
 

[عکس: efjufzouih2vqotj2fre.jpg]
[عکس: 1xt_33480998_2180148292221571_4684148271399043072_n.jpg]
پاسخ }
سپاس شده توسط: arsalan2656 ، HappyMay ، a_b_kh
#24
ببخشید می دونم خیلی قدیمیه و اینکه ممکنه اشتباه کنم که نوی تاپیکای قدیمی بنویسم Tongue . ولی می خواستم از تون بپرسم که این آموزش ها درسته برای الان یعنی برنامه های  الان رو هم می شه با این ها نوشت؟ اصلا یعنی اینکه اینا کامل هست؟ کافی هست؟ یا نه و اینکه برای انتشار این اپ ها چه باید بکنیم؟ شما خودتون تا حالا از این اپ ها در بازار و اینا گذاشتید؟
پاسخ }
سپاس شده توسط: a_b_kh
#25
(07-13-2016، 08:18 PM)HappyMay نوشته: ببخشید می دونم خیلی قدیمیه و اینکه ممکنه اشتباه کنم که نوی تاپیکای قدیمی بنویسم Tongue . ولی می خواستم از تون بپرسم که این آموزش ها درسته برای الان یعنی برنامه های  الان رو هم می شه با این ها نوشت؟ اصلا یعنی اینکه اینا کامل هست؟ کافی هست؟ یا نه و اینکه برای انتشار این اپ ها چه باید بکنیم؟ شما خودتون تا حالا از این اپ ها در بازار و اینا گذاشتید؟
برای انتشار برنامه ها می تونید تو یکی از مارکت ها به عنوان توسعه دهنده ثبت نام کنید و برنامتون رو به اشتراک بزارید
که هزینه هم داره!
پاسخ }
سپاس شده توسط: HappyMay


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش نقاشی دیجیتال بدون هیچ امکانات خاصی تو موبایل ZeroSparda 16 1,296 09-29-2017، 03:36 AM
آخرین ارسال: ZeroSparda
  آموزش HTML + CSS برای طراحی سایت merlin_bozorg 28 5,776 08-30-2017، 01:29 PM
آخرین ارسال: amir77
  آموزش فتوشاپ حرفه ای ایمان 10 3,467 08-30-2017، 01:28 PM
آخرین ارسال: amir77
Lightbulb کانال آموزشی برنامه نویسی و گرافیک arash_123456789 2 583 05-19-2017، 04:18 PM
آخرین ارسال: arash_123456789
Music آموزش تئوری موسیقی و سازشناسی dona.sue 32 15,506 11-30-2016، 12:19 AM
آخرین ارسال: فردین
  آموزش اندروید amirali100 167 19,185 10-02-2016، 11:28 PM
آخرین ارسال: Mahsa-B
  معرفی نرم افزار برای گوشی اندروید سلام 28 7,380 07-24-2016، 12:35 AM
آخرین ارسال: Mahsa-B
  آموزش طراحی محمد رضا 17 2,555 04-29-2016، 11:51 AM
آخرین ارسال: غزل زیبا
Information وبلاگ نویسی مرد خدا 11 5,122 01-22-2016، 05:45 PM
آخرین ارسال: مرد خدا
  آموزش نکات امنیتی در دنیای مجازی سلام 10 3,273 07-02-2015، 03:17 AM
آخرین ارسال: Mahsa-B

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان