欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中通過ActionBar為標(biāo)題欄添加搜索及分享視窗

 更新時(shí)間:2016年12月24日 09:09:32   作者:潘侯爺  
這篇文章主要介紹了ANDROID中通過ACTIONBAR為標(biāo)題欄添加搜索以及分享視窗的相關(guān)資料,需要的朋友可以參考下

在Android3.0之后,Google對(duì)UI導(dǎo)航設(shè)計(jì)上進(jìn)行了一系列的改革,其中有一個(gè)非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的標(biāo)題欄,并提供更為豐富的導(dǎo)航效果。ActionBar的主要目的是:

1.提供一個(gè)用于識(shí)別應(yīng)用程序的標(biāo)示和用戶的位置的專用空間。

2.在不同的應(yīng)用程序之間提供一致的導(dǎo)航和視覺體驗(yàn)。

3.突出Activity的關(guān)鍵操作(如“搜索”、“創(chuàng)建”、“共享”等),并且在可預(yù)見的方法內(nèi)給用戶提供快捷的訪問。

今天我們就簡單梳理一下如何通過ActionBar為標(biāo)題添加“搜索”和“分享”的操作視窗,如下圖:

操作視窗是作為操作項(xiàng)目按鈕的替代品顯示在操作欄中的一個(gè)可視構(gòu)件。例如,如果你有一個(gè)用于搜索的可選菜單項(xiàng),你可以用Searchview類來替代操作欄上的搜索按鈕。

要個(gè)菜單資源中的一個(gè)項(xiàng)目聲明一個(gè)操作視窗,你既可以使用android:actionLayout屬性也android:actionviewClass屬性來分別指定一個(gè)布局資源或要使用的可視構(gòu)件類。

與操作視窗類似,操作提供器(由ActionProvider類定義的)用一個(gè)定制的布局代替一個(gè)操作項(xiàng)目,它還需要對(duì)所有這些項(xiàng)目行為的控制。當(dāng)你在操作欄中給一個(gè)菜單項(xiàng)聲明一個(gè)操作項(xiàng)目時(shí),它不僅要一個(gè)定制的布局來控制這個(gè)菜單項(xiàng)的外觀,而且當(dāng)它在顯示在溢出菜單中時(shí),還要處理它的默認(rèn)事件。無論是在操作欄中還是在溢出菜單中,它都能夠提供一個(gè)子菜單。例如,ActionProvider的擴(kuò)展類ShareActionProvider,它通過在操作欄中顯示一個(gè)有效的共享目標(biāo)列表來方便共享操作。與使用傳統(tǒng)的調(diào)用ACTION_SEND類型Intent對(duì)象的操作項(xiàng)不同,你能夠聲明一個(gè)ShareActionProvider對(duì)象來處理一個(gè)操作項(xiàng)。這種操作提供器會(huì)保留一個(gè)帶有處理ACTION_SEND的Intent對(duì)象的應(yīng)用程序的下拉列表,使這個(gè)菜單項(xiàng)顯示在溢出菜單中。因此,當(dāng)你使用像這樣的操作提供器時(shí),你不必處理有關(guān)這個(gè)菜單項(xiàng)的用戶事件。要給一個(gè)操作項(xiàng)聲明一個(gè)操作提供器,就要在菜單資源中對(duì)應(yīng)的<item>元素中定義android:actionProviderClass屬性,提供器要使用完整的類名。

第一步:建立menu資源文件

建立menu資源文件,設(shè)置搜索和分享的ITEM功能組件。

(1)新建menu文件夾,如圖

(2)在menu資源文件夾下建立serch_share_menu.xml文件(自定義名稱)

(3)serch_share_menu.xml組件部署代碼:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
  <item
    android:id="@+id/search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:icon="@android:drawable/ic_menu_search"
    android:orderInCategory="100"
    android:title="搜索"
    app:showAsAction="always|collapseActionView" />
  <item
    android:id="@+id/share"
    android:icon="@android:drawable/ic_menu_share"
    android:orderInCategory="200"
    android:title="共享"
    app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
    app:showAsAction="ifRoom" />
</menu>

第二步:java中功能實(shí)現(xiàn)代碼MainActivity.java:

import android.content.Intent;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.ShareActionProvider;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
/**
 * Created by panchengjia on 2016/12/23.
 */
public class MainActivity extends AppCompatActivity {
  SearchView searchView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    //使用菜單填充器獲取menu下的菜單資源文件
    getMenuInflater().inflate(R.menu.search_share_menu,menu);
    //獲取搜索的菜單組件
    MenuItem menuItem = menu.findItem(R.id.search);
    searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
    //設(shè)置搜索的事件
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
      @Override
      public boolean onQueryTextSubmit(String query) {
       Toast t = Toast.makeText(MainActivity.this, query, Toast.LENGTH_SHORT);
        t.setGravity(Gravity.TOP,0,0);
        t.show();
        return false;
      }
      @Override
      public boolean onQueryTextChange(String newText) {
        return false;
      }
    });
    //獲取分享的菜單子組件
    MenuItem shareItem = menu.findItem(R.id.share);
    ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
    //通過setShareIntent調(diào)用getDefaultIntent()獲取所有具有分享功能的App
    shareActionProvider.setShareIntent(getDefaultIntent());
    return super.onCreateOptionsMenu(menu);
  }
  //設(shè)置可以調(diào)用手機(jī)內(nèi)所有可以分享圖片的應(yīng)用
  private Intent getDefaultIntent() {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    //這里的類型可以按需求設(shè)置
    intent.setType("image/*");
    return intent;
  }
}

雖然用actionBar可以實(shí)現(xiàn)這些功能,但在各個(gè)安卓版本和定制Rom中的效果表現(xiàn)不一,導(dǎo)致嚴(yán)重的碎片化問題,所以Google在2015的IO大會(huì)上發(fā)布了系列的Material Design風(fēng)格的控件。其中ToolBar是替代ActionBar的控件。后面我們也會(huì)簡述ToolBar的簡單用法。

以上所述是小編給大家介紹的Android中通過ActionBar為標(biāo)題欄添加搜索及分享視窗,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論