مشخصات مقاله
-
3158
-
0.0
-
1803
-
0
-
0
آموزش نحوه ی استفاده از action bar اندروید قسمت سوم
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
آموزش نحوه ی استفاده از action bar اندروید قسمت سوم
Contextual action mode
Contextual action mode یک action bar موقتی ایجاد کرده که در طول فعالیت sub-task معینی روی action bar خود برنامه ی کاربردی سوار شده و قرار می گیرد.
این حالت به طور معمول با انتخاب یک آیتم یا نگه داشتن کلیک چپ روی آن فعال می شود.
برای این منظور، متد startActionMode () را در view یا activity مربوطه فراخوانی کنید. متد گفته شده شی ActionMode. Callback را دریافت می کند که در حقیقت مسئول مدیریت طول عمر (life-cycle) contextual action مرتبط می باشد.
همچنین می توان از طریق فراخوانی متد registerForContextMenu () فهرست گزینش متنی (context menu) دلخواه را به view مورد نظر افزود. اگرچه کاربر می تواند با "long press" یا طولانی نگه داشتن انگشت خود روی view فهرست گزینش متنی را فعال سازد. متد onCreateContextMenu () هربار که فهرست گزینش متنی ظاهر یا فعال می شود و همچنین پس از انجام وظیفه ی محوله (و دور انداخته شدن آن)، فراخوانی می گردد. توصیه می شود contextual action mode را به استفاده از context menu ترجیح دهید.
ابزارک Action View
Action view در واقع یک ابزارک (widget) است که در action bar به مثابه ی یک جایگزین برای دکمه ی یک آیتم action (action item button) بکارگرفته می شود. به عنوان مثال، می توان با بهره گیری از این امکان یک view ProgressBar جایگزین یکی از action item ها کرد. تعریف action view ویژه ی یک action معین از طریق خصیصه ی android:actionLayout و android:actionViewClass صورت می گیرد. حال با کمک action view نام برده می توان یا یک layout resource و یا widget class مشخص کرده و بکاربرد.
این جایگزینی در دو تصویر زیر به نمایش گذاشته شده.
Activity زیر آیکون مورد نظر را در زمان اجرا با action view ای که شامل view ProgressBar می باشد جایگزین می کند.
package com.vogella.android.actionbar.progress;
import android.app.ActionBar;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
private MenuItem menuItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
| ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main، menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_load:
menuItem = item;
menuItem.setActionView(R.layout.progressbar);
menuItem.expandActionView();
TestTask task = new TestTask();
task.execute("test");
break;
default:
break;
}
return true;
}
private class TestTask extends AsyncTask<String، Void، String> {
@Override
protected String doInBackground(String... params) {
// Simulate something long running
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
menuItem.collapseActionView();
menuItem.setActionView(null);
}
};
}
کد زیر layout بکاربرده شده برای action view را نمایش می دهد.
xml version="1.0" encoding="utf-8" ?>
<progressbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/progressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
progressbar>
کد زیر فایل های XML ویژه ی فهرست گزینش (menu) را نشان می دهد.
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
android:orderincategory="100"
android:showasaction="always"
android:title="Settings"
/>
<item android:id="@+id/menu_load"
android:icon="@drawable/navigation_refresh"
android:orderincategory="200"
android:showasaction="always"
android:title="Load" />
menu>
6. Action Provider
Action provider چیست و چه کاربردی دارد؟
action provider امکان تعامل غنی با فهرست گزینش را در تنها یک مولفه (component) فراهم می کند. action provider همچنین قادر است actions view ایجاد کرده که اغلب در action bar مورد استفاده قرار می گیرد، داده های آماده ی زیرفهرست (sub-menu) های مختص یک action را به صورت پویا به آن اضافه کرده یا در آن جای دهد (populate) و همچنین مدیریت فراخوانی های پیش فرض action (default action invocation) را بدست گیرد.
کلاس پایه ی action provider، کلاس ActionProvidor می باشد.
در حال حاضر محیط (platform) اندروید دو action provider زیر را ارائه می کند.
MediaRouteActionProvider و ShareActionProvider.
مثال : استفاده از ShareActionProvider
مثال زیر نحوه ی کاربرد و استفاده از ShareActionProvider را نمایش می دهد. این action به شما اجازه می دهد محتوا (content) انتخابی را از برنامه ی کاربردی که intent Intent. Action_SEND را ثبت کرده دریافت کنید.
جهت استفاده از ShareActionProvider، باید در وهله ی اول یک menu entry ویژه ی آن تعریف کرده و intent ای به آن تخصیص داد که دربردارنده ی داده هایی می باشد که قرار است به اشتراک گذاشته شود.
xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_share"
android:title="Share"
android:showasaction="ifRoom"
android:actionproviderclass="android.widget.ShareActionProvider" />
<item android:id="@+id/item1"
android:showasaction="ifRoom"
android:title="More entries...">
item>
menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main، menu);
// Get the ActionProvider for later usage
provider = (ShareActionProvider) menu.findItem(R.id.menu_share)
.getActionProvider();
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_share:
doShare();
break;
default:
break;
}
return true;
}
public void doShare() {
// populate the share intent with data
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT، "This is a message for you");
provider.setShareIntent(intent);
}
