کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش نحوه ی استفاده از ‏action bar‏ اندروید‎ قسمت سوم

 

clip_image001

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

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

 

آموزش نحوه ی استفاده از ‏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 مشخص کرده و بکاربرد.

این جایگزینی در دو تصویر زیر به نمایش گذاشته شده.

قبل از فعالسازی actionView

اجرای ActionView

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);

  }

1394/07/27 1804 3160
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...