آموزش مسیریابی اندروید
آموزش مسیریابی اندروید
در این فصل خواهیم دید که در یک برنامه چگونه مسیر جلو و عقب را می توانید تعیین کنید. در ابتدا باید دید چگونه در یک برنامه می توان مسیر ارائه داد.
ارائه ی up navigation
Up navigation به ما اجازه می دهد تا در برنامه ی خود از یک فعالیت به فعالیت قبلی حرکت کنیم.
برای اجرای Up navigation اولین مرحله این است که فعالیت پایه ی مناسب برای هر فعالیت را اعلام کنیم. می توانید این کار را با مشخص کردن ویژگی parentActivityName در یک اکتیویتی انجام دهید. ترکیب آن مانند زیر می باشد.
android:parentActivityName="com.PRG.test.MainActivity"
پس ازآن لازم است که روش setDisplayHomeAsUpEnabledرا از getActionBar()در روش onCreat مربوط به فعالیت، فرا بخوانید. این کار دکمه ی back را فعال می کند.
getActionBar().setDisplayHomeAsUpEnabled(true);
آخرین کاری که باید انجام دهید، رد شدن از روش onOptionsItemSelectedمی باشد. وقتی که یوزر آن را انتخاب کند، فعالیت شما یک فراخوانی به onOptionsItemSelected دریافت می کند. ID مربوط به این عمل عبارت است از android.R.id.home ترکیبآن نیز مانند زیر می باشد.
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
}
بررسی دکمه ی back دستگاه
از آنجایی که شما دکمه ی بازگشت را برای مسیریابی در داخل برنامه خود فعال کرده اید، ممکن است بخواهید عملکرد بستن برنامه را نیز در کمه ی بازگشت دستگاه قرار دهید.
این عمل به وسیله ی عبور از onBackPressedو سپس فراخوانی moveTaskToBackو روش finish انجام می شود. ترکیب آن را در زیر می بینید.
@Override
public void onBackPressed() {
moveTaskToBack(true);
MainActivity2.this.finish();
}
علاوه بر روش setDisplayHomeAsUpEnabled، روش های دیگری در گروه ActionBar API وجود دارند که در زیر لیست شده اند.
-
addTab(ActionBar.Tab tab, boolean setSelected)
این روش یک تب برای استفاده از مدل مسیر یابی tabbed، اضافه می کند.
-
getSelectedTab()
اگر ر مدل مسیریابی تب حداقل یک تب حاضر باشد، این روش آخرین تب انتخاب شده را گزارش می دهد.
-
hide()
این روش Actionbar را پنهان می کند، اگر نمایش داده شود.
-
removeAllTabs()
این روش تمام تب ها را از Action bar حذف کرده و آخرین تب را از حالت انتخاب خارج می کند.
-
selectTab(ActionBar.Tab tab)
این روش تب مشخصی را انتخاب می کند.
مثال
مثال زیر استفاده از مسیریابی را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که مسیریابی داخل برنامه را امکان پذیر می کند. برای انجام این مثال لازم است آن را روی یک دستگاه واقعی یایک مقلد اجرا کنید.
-
برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Navigation تحت بسته ی com.PRG.Navigation نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDKو Compile With در آخرین ورژن Android SDKهستند تا از سطوح بالاتر API استفاده کنید.
-
فایل src/MainActivity.java را برای افزودن کد فعالیت تغییر دهید.
-
یک اکتیویتی جدید با نام second_main.java ایجاد کرده و آن را برای افزودن کد اکتیویتی ویرایش کنید.
-
لی اوت XML فایل res/layout/activity_main.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید.
-
لی اوت XML فایل second.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید.
-
AndroidManifest.xml را برای افزودن کد لازم تغییر دهید.
-
برنامه را اجرا کنید، یک دستگاه اجرایی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتایج را بررسی کنید.
در اینجا محتوای MainActivity.javaرا مشاهده می کنید.
package com.PRG.Navigation ;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
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);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
در اینجا محتوای src/second_main.java را مشاهده می کنید.
package com.PRG.Navigation ;
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.second);
wv = (WebView) findViewById(R.id.webView);
wv.setWebViewClient(new MyBrowser());
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://www.tutorialspoint.com");
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
در ادامه محتوای activity_main.xmlمی باشد.
<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 PRG" 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="Tutorials point"
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را مشاهده می کنید.
<?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می باشد.
<resources>
<string name="app_name">Navigation</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>
در اینجا محتوای AndroidManifest.xmlمی باشد.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.PRG.Navigation " >
<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>
اجازه بدهید برنامه Navigation را اجرا کنیم. فرض می کنیم که در هنگام انجام تنظیمات محیط، AVD خود را ایجاد کرده اید. برای اجرای برنامه از eclipse، یکی از فایل های فعالیت پروژه را باز کنید و روی آیکن Run از تولبار کلیک کنید.
- نوشته شده توسط سعید نوشادی
- بازدید: 4703