آموزش برنامه نویسی اندروید قسمت دوازدهم

1396/7/19 --- 5342

با سلام با قسمت  دوازدهم از آموزش اندروید در خدمتتان هستم

در این قسمت به ادامه بحث اینترنت و ارسال ایمیل و یک سری نکات ویژه از جمله اشنایی با webView خواهیم پرداخت.

ابتدا یک نکته ای را باید بررسی کنیم. جلسه قبل یک تقویم فارسی در صفحه گذاشتیم. این تقویم در موبایل­ هایی با صفحات کوچکتر به صورت زیر قرار میگیرد.

آموزش برنامه نویسی اندروید قسمت دوازدهم

  به این منظور که که خارج از صفحه قرار خواهدگرفت. جهت حل این مشکل باید برای صفحاتی که ابزارهای زیادی دارند Scroll بگذارید. نحوه قرار دادن scroll بصورت زیر هست:

1 - قرار دادن scroll در صفحات: 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
        
        >

واضح هست که ارتفاع و عرض آن باید fill باشد. از طرفی یادآوری میکنم که صفت زیر باید برای اولین تگ همیشه ذکر شود:

xmlns:android=http://schemas.android.com/apk/res/android

در نهایت در انتهای کدهای xml خود به این صورت تگ ScrollView را ببندید : 

</ScrollView>

پس از اینکار صفحه دیزاین شما به صورت زیر خواهد بود و از طرفی پس از اجرا در گوشی موبایل و یا شبیه ساز scroll خواهید داشت. اگر دقت کنید شکل سمت چپ اجرای برنامه در گوشی موبایل را نشان میدهد و ناحیه قرمز مشخص شده scroll میباشد که با کمی دقت قابل دیدن است. شکل سمت چپ نیز دیزاین برنامه در اینتلیجی را نشان میدهد.

آموزش برنامه نویسی اندروید قسمت دوازدهم

2 - کار با webView

ابزار webView جهت نمایش یک صفحه وب در خود برنامه اندروید میباشد. یعنی با اجرا کردن مرورگر و باز کردن یک صفحه توسط مرورگر تفاوت دارد. بلکه صفحه وب شما در خود برنامه داخل webView نشان داده خواهد شد.

برای استفاده از webView از پروژه قبلی که برای تست اینترنت بود استفاده میکنیم. ابتدا یک ابزار webView و یک دکمه در صفحه قرار میدهیم:

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button" android:layout_gravity="center_horizontal"/>

<WebView android:layout_width="fill_parent"
         android:layout_height="fill_parent"
        android:id="@+id/webview"
        ></WebView>

اینبار میخواهیم با زدن دکمه پس از تست اتصال به اینترنت که یاد گرفتیم یک صفحه وب را در webView نمایش بدهیم.

به اکتیویتی خود باز میگردیم. کدی که داشتیم بصورت زیر بود:

آموزش برنامه نویسی اندروید قسمت دوازدهم

اینبار در else به جای باز کردن صفحه وب از webView باید استفاده کنیم. 

WebView webView = (WebView) findViewById(R.id.webview);
webView.loadUrl("http://www.google.com");

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

آموزش برنامه نویسی اندروید قسمت دوازدهم

 

در ادامه میخوام یک کاربرد جالب از وب ویو را بهتون آموزش بدهم. قبل از هرچیز بگذارید یک سری از ویژگی های وب ویو را تست کنیم. اول از همه متد loadUri بود. یک ورودی متنی داشت که در اصل آدرس سایت بوده و آن را لود میکرد.

یکی دیگر از امکانات وب ویو فعال کردن جاوااسکریپت هست. برای اینکار باید از Setting وب ویو بخواهید که امکان اجرای دستورات جاوااسکریپت را فعال کند. به این سادگی:

webView.getSettings().setJavaScriptEnabled(true);

که البته باید گفته شود که این قابلیت بصورت پیشفرض فعال نیست.

یا بطور مثال قابلیت زوم کردن برای صفحات بذارید. که با کد زیر امکان پذیر هست.

webView.getSettings().setBuiltInZoomControls(true);

خودتان میتوانید با چک کردن قابلیتهایی که متد getSettings در اختیارتان قرار میدهد با آنها آشنا شوید.

در ادامه نیز یک کار جالب میخواهیم یاد بگیریم.

یکی از روشهای ساخت برنامه برای اندروید جدای از روش ما (جاوا یا درواقع نیتیو) استفاده از cross platform هست. مثلا در فونگپ شما با استفاده از کدهای html css javascript برنامه خود را ساخته و از آن یک خروجی برای اندروید میسازید و یا ios.

با استفاده از همین html css js میتوانید در همین برنامه جاوای خود هم کدنویسی کنید. با کمک وب ویو که کاربردهای خود را دارد. یک کاربرد مناسب آن نمایش یک متن میباشد که در آن قابلیت زوم هم داشته باشید. و یا مثلا میتوانید از انیمیشنهای خاصی که توسط css ساخته میشوند برای یکی از صفحات خود استفاده کنید. ولی واضح هست که این روش استاندارد خود را دارد و اگر به این شیوه علاقه دارید میتوانید از فونگپ استفاده کنید. در اینجا فقط خواستم مثالی زده باشم تا آشنا بشید. بطور مثال میخواهم یک دکمه ای که به این روش ساخته شده را در یک وب ویو نشان دهم. این دکمه بصورت زیر هست که با زدن آن مانند زیر یک حرکت انیمیشنی خواهد داشت:

آموزش برنامه نویسی اندروید قسمت دوازدهم

 

برای اینکار ابتدا باید با پوشه asset آشنا بشید. همانطور که از پوشه res استفاده کردیم تا به اینجا دیدید که هر فایلی در پوشه res قرار نمیگیرد و نام گذاریهای خودش را دارد. همچنین فایلهایی که در Res قرار میدادیم همگی دارای id  بودند برای دسترسی ساده تر. مانند عکسها یا فایلای xml.  پوشه دیگری بنام assets هست (اگر نیست بسازید) که در آن هر فایلی بخواهید میتوانید قرار دهید. بطور مثال میخواهیم فایلهای html و css مربوط به انیمیشنی که نشان داده شد را در این پوشه قرار دهیم.

بعنوان مثال در پوشه asset خود (از طریق مسیر ذخیره برنامه وارد شوید) یک پوشه به نام www ساخته و فایلهای html و css ضمیمه شده را قرار دهید (یا هر کد دیگری که دارید را).

آموزش برنامه نویسی اندروید قسمت دوازدهم

حالا در اکتیویتی خود در همان بخش else جای webView.loadUrl کد زیر را قرار دهید:

webView.loadUrl("file:///android_asset/www/index.html");

فکر میکنم امتحان کردنش جالب باشه.

3- ارسال ایمیل

3-1 کار با آرایه ها

در بخش بعد میخواهیم ارسال کردن ایمیل را در اندروید یاد بگیریم. اما یک پیش نیاز جاوایی دارد. کار با آرایه ها!.

مثل همیشه این بخش مرتبط با جاوا را خیلی سریع توضیح میدهیم. آرایه چیست؟ آرایه ها ترتیبی شماره دار از متغیرهای هم نوع و هم اندازه میباشد. بطور مثال شما در برنامه با 10 عدد صحیح میخواهید کاری را انجام دهید. بطور مثال بطور واحد به آنها مقداری را اضافه کنید یا آنها را پشت هم چاپ کنید. در این حالت به جای تعریف کردن 10 عدد صحیح از آرایه ای از اعداد صحیح استفاده میکنید.

آرایه ها در جاوا بصورت زیر تعریف میشوند:

dataType[] arrayName;

بطور مثال:  

int[] myArray;
myArray = new int[10];

در کد بالا ابتدا آرایه را تعریف کردیم سپس فضایی به اندازه 10 عنصر در حافظه به آن تخصیص دادیم. حال میتوانیم به هرکدام از خانه های آرایه طبق زیر مقداری دهیم:

myArray [0]= 12;
myArray [1]= 15;
myArray [2]= 5;
……..

و یا میتوانیم در همان ابتدا با مقداردهی خانه های آرایه درجا سایز آن را نیز تعیین کنیم:

dataType[] array = {value0, value1, ..., valuek};

بطور مثال:

int[] MyIntArray = {0, 1, 2, 3};

که درجا آرایه ای از اعداد صحیح با سایز 4 و مقدارهای 0 و 1 و 2 و 3 ساخته میشود. همچنین جهت دسترسی به هر خانه آرایه میتوانید از MyIntArray[0] و .. استفاده کنید. توجه کنید شماره گذاری خانه ها از صفر اغاز میشود.

3-2 ارسال ایمیل

کار با آرایه ها بدین منظور بیان شد که ورودی متدی که مربوط به ارسال ایمیل هست به یک آرایه از ایمیلهایی که مورد خطاب شما هستند نیاز دارد. باهم پیش میرویم.

ایمیل نیز یک درخواست از سیستم عامل اندروید محسوب میگردد. پس باید از intent استفاده کنیم. ابتدا یک intent تعریف کرده و نوع ان را send تعریف میکنیم.:

Intent emailIntent = new Intent(Intent.ACTION_SEND);

در ادامه چون این intent ما باید محتویاتی از جمله متن ایمیل و یا موضوع آن را در بر بگیرد باید از متدی به نام putExtra استفاده کنیم. با این متد در آینده نیز بیشتر آشنا خواهید شد زمانی که بخواهیم مقادیری را از یک اکتیویتی به اکتیویتی دیگر در هنگام start کردن آن پاس بدهیم از این متد استفاده میکنیم. بطور مثال در ابتدا من میخواهم با intent خود ادرس ایمیلهایی که قرار است ایمیل من به آنها ارسال شود را پاس دهم. به ترتیب زیر آرایه ای از آدرس ایمیلها خواهیم داشت و یک putExtra یه intent :

String[] emailAdress = {"email@yahoo.com"};
emailIntent.putExtra(Intent.EXTRA_EMAIL,emailAdress);

هر ایمیلی یک subject و نیز یک متن هم دارد. آنها را نیز بصورت زیر اضافه میکنیم:

emailIntent.putExtra(Intent.EXTRA_SUBJECT,"mysubject");
emailIntent.putExtra(Intent.EXTRA_TEXT,"mytext");

درنهایت برای مشخص کردن اینکه intent شما برای ارسال ایمیل هست خط کد زیر را بزنید:

emailIntent.setType("message/rfc822");

و درنهایت آن را Start کنید مانند همیشه. اما یک تفاوت هست. حتما شده در دستگاه اندروید خود میخواهید کاری انجام دهید مثلا مشاهده یک عکس و پنجره ای باز میشود و به شما خواهد گفت چطور میخواهید عکس را ببینید و با چه برنامه ای.

برای ارسال ایمیل به این روش هم باید یک برنامه ارسال ایمیل به گوشی شما sync باشد. مثلا gmail و yahoo. حالا پنجره ای به شما نشان داده میشود و میگوید از طریق کدام اکانت ایمیل را ارسال خواهی کرد؟ برای باز کردن این پنجره از Intent.createChooser استفاده کرده و یک عنوان و همچنین intent ای که میخواهیم این اعمال به آن تعلق بگیرد را به آن میدهیم. طبق زیر:

startActivity(Intent.createChooser(emailIntent,"Choose account"));

عکسهای زیر نیز پنجره ی chooser و صفحه برنامه gmail پس از انتخاب آن را نشان میدهد.

آموزش برنامه نویسی اندروید قسمت دوازدهم

خسته نباشید