با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند ، در هنگام کار با برنامه های مختلف در سیستم عامل اندروید به احتمال زیاد با ویژگی Navigation در اندروید برخورد داشته اید، Navigation به شما اجازه سوئچ بین صفحه های مختلف را در یک اپلیکیشن ظاهر کردن یک صفحه در صفحه ی جاری به طوری که به صفحه اصلی نیز دسترسی داشته باشید را می دهد. اندروید به شما اجازه می دهد تا از ویژگی Navigation در اندروید نیز استفاده کنید. برای آشنایی با طرز استفاده و درک بهتر این مفهوم در ادامه ی این آموزش با همراه باشید.
در این مبحث ما ساختار کلی پیاده سازی ویژگی Navigation در اندروید و متدهای مربوط به آن را ارائه داده ایم.
همچنین برای آشنایی با طرز استفاده از Navigation در برنامه نویسی اندروید ، یک مثال ساده در این مورد را بررسی می کنیم.
up navigation اجازه می دهد که برنامه ی ما به فعالیت بعدی از فعالیت قبلی حرکت کند.
برای پیاده کردن up navigation، اولین قدم این است که اعلام کنید که کدام فعالیت والد مناسب برای هر فعالیت است.
شما می توانید آن را با مشخص کردن ویژگی parentActivityName در یک فعالیت انجام دهید:
1 | android:parentActivityName = "com.example.test.MainActivity" |
پس از آن شما نیاز به فراخوانی setDisplayHomeAsUpEnabled از متد ()getActionBar در متد onCreate دارید.
این دکمه ی back را در نوار action فعال می کند:
1 | getActionBar().setDisplayHomeAsUpEnabled(true); |
سپس باید متد onOptionsItemSelected را لحاظ کنید. هنگامی که کاربر آن را فشار می دهد، فعالیت شما یک فراخوانی از متد ()onOptionsItemSelected دریافت می کند.
ID برای این عمل android.R.id.home است.
ساختار:
1 2 3 4 5 6 7 8 | public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } } |
از آنجا که دکمه back خود را برای حرکت در برنامه فعال کرده اید، ممکن است بخواهید عملکرد نزدیک برنامه را در دکمه back دستگاه قرار دهید.
این عمل با لحاظ کردن متد onBackPressed و سپس فراخوانی متد moveTaskToBack و finish انجام می شود.
ساختار:
1 2 3 4 5 | @Override public void onBackPressed() { moveTaskToBack(true); MainActivity2.this.finish(); } |
علاوه بر متد setDisplayHomeAsUpEnabled متدهای دیگری نیز در کلاس ActionBar API ارائه شده که به شرح زیر است:
ردیف | متد و توضیحات |
---|---|
۱ | addTab(ActionBar.Tab tab, boolean setSelected) این متد یک tab را برای سوئیچ به حالت navigation ایجاد می کند. |
۲ | getSelectedTab() در صورتیکه چندین tab وجود داشته باشد این متد tab انتخاب شده را برمی گرداند. |
۳ | hide() این متد ActionBar را اگر قابل مشاهده باشد ، مخفی می کند. |
۴ | removeAllTabs() این متد تمام tab های action bar را پاک کرده و tab انتخاب شده جاری را از حالت انتخاب خارج می کند. |
۵ | selectTab(ActionBar.Tab tab) این متد یک tab مشخص شده را انتخاب می کند. |
مثال زیر طرز استفاده از Navigation را نشان می دهد. این یک برنامه ساده است که اجازه می دهد تا در برنامه خود حرکت کنید.
شما می توانید این برنامه را در یک دستگاه اندروید واقعی و یا در شبیه ساز اندروید تست کنید.
مراحل انجام کار:
مراحل | توضیحات |
---|---|
۱ | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی تحت عنوان پکیج com.example.Pvlearn.myapplication دنبال کنید. |
۲ | کد Activity را به فایل src/MainActivity.java اضافه کنید. |
۳ | یک Activity جدید با نام second_main.java ایجاد کرده و کد Activity مربوطه را به آن اضافه کنید. |
۴ | طراحی مناسب با این برنامه را به res/layout/activity_main اضافه کنید. |
۵ | طراحی مناسب ثانویه را به res/layout/second.xml اضافه کنید. |
۶ | کد های لازم را به فایل AndroidManifest.xml اضافه کنید. |
۷ | برنامه را اجرا کنید تا شبیه ساز اندروید نتیجه را نمایش دهد. |
محتوای فایل src/MainActivity.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package com.example.Pvlearn.myapplication; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { Button b1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent in=new Intent(MainActivity.this,second_main.class); startActivity(in); } }); } } |
محتوای فایل src/second_main.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package com.example.Pvlearn.myapplication; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; /** * Created by Sairamkrishna on 4/6/2015. */ public class second_main extends Activity { WebView wv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_activity2); wv = (WebView) findViewById(R.id.webView); wv.setWebViewClient(new MyBrowser()); wv.getSettings().setLoadsImagesAutomatically(true); wv.getSettings().setJavaScriptEnabled(true); wv.loadUrl("https://www.pvlearn.com"); } private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } } |
محتوای فایل activity_main.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:transitionGroup="true"> <TextView android:text="Navigation example" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" android:textSize="35dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pvlearn" android:id="@+id/textView" android:layout_below="@+id/textview" android:layout_centerHorizontal="true" android:textColor="#ff7aff24" android:textSize="35dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/abc" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" android:theme="@style/Base.TextAppearance.AppCompat" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="first page" android:id="@+id/button" android:layout_below="@+id/imageView" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" android:layout_marginTop="61dp" android:layout_alignLeft="@+id/imageView" android:layout_alignStart="@+id/imageView" /> </RelativeLayout> |
محتوای فایل activity_main_activity2.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <WebView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/webView" android:layout_gravity="center_horizontal" android:layout_weight="1.03" /> </LinearLayout> |
محتوای فایل Strings.xml:
1 2 3 | <resources> <string name="app_name">My Application</string> </resources> |
محتوای فایل AndroidManifest.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.Pvlearn.myapplication" > <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".second_main"></activity> </application> </manifest> |
برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.
سپس روی نماد (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.
سپس نتیجه اجرای برنامه را در دستگاه اندروید خود مشابه زیر مشاهده خواهید کرد:
Second activity (فعالیت دوم) شامل یک webview است، که سایت pvlearn.com را نشان می دهد.
ویژگی Navigation در اندروید در اپلیکیشن هایی که از صفحات متعدد تشکیل شده برای سوئیچ کردن راحت کاربران بین صفحات مختلف ارائه شده است، همچنین اندروید به شما اجازه ی استفاده از Navigation در برنامه نویسی اندروید را نیز می دهد.
در مباحث بخش بعدی به ارتباط با شبکه در اندروید می پردازیم.