java - Разница между ActionBarSherlock и совместимостью ActionBar




android android-actionbar android-actionbar-compat (7)

Может быть, нам следует обновить ответ, потому что Google опубликовала официальную поддержку API18 с API18 ?

блок ниже - из android-developers.blogspot.in/2013/08/… об этих двух библиотеках:

Если вы используете стороннее решение (например, ActionBarSherlock), есть несколько причин рассмотреть возможность обновления:

  • Может обновляться по мере развития API панели действий.
  • Интегрированная поддержка Ancestral Navigation.
  • Использование классов Framework и MenuItem.
  • Продолжайте использовать класс фрагмента поддержки библиотеки.
  • Встроенная поддержка ActionBarDrawerToggle для использования с DrawerLayout.
  • Backport of PopupMenu.

ActionBarSherlock - это прочная и хорошо протестированная библиотека, которая долгое время служила разработчикам. Если вы уже используете его и в настоящее время не требуете какого-либо из вышеперечисленных действий, вам не нужно мигрировать.

В чем разница между ActionBarSherlock и совместимостью с Action Bar?

Fews несколько дней назад Google только что выпустил совместимость ActionBar, которая заставляет меня так запутаться. Совместимость с панелью действий работает так же, как и ActionBarSherlock, и является ли это кодировкой?

Пример. Значок приложения для навигации вверх или ActionBar.Tab поддерживается в совместимости с Action Bar?


Actionbar Sherlock намного более продвинут и гораздо более амбициозен, чем простой проект совместимости с Actionbar.

Совместимость панели действий может считаться «образцом» или хорошей отправной точкой, если вы хотите только нанести удар по панели действий поверх своего приложения.

ActionBarSherlock основывается на библиотеке совместимости и дает вам (например, пример совместимости с панелью действий) панель действий на устройствах до 3.0. Кроме того, он имеет дополнительные функции, отсутствующие в коде ActionBar. Это включает в себя такие функции, как, но не ограничиваясь

  • setNavigationMode (для вкладок и прядильщиков в панели действий)
  • Диалоговые фрагменты
  • Панель контекстного действия (CAB) - это меню, которое использует панель действий, используемую, например, для множественного выбора (http://developer.android.com/design/patterns/new-4-0.html). Это функция ICS ( !) Для этого была внедрена реализация класса ActionMode (введена в уровне API 11) в библиотеку ActionbarSherlock
  • Fragment и FragmentActivity - поскольку фрагменты могут реализовать меню onCreateOptions, нам нужно убедиться, что используется SupportMenuInflater.
  • Две темы, не очень похожие на Holo.Dark и Holo.Light (Theme.Sherlock, Theme.Sherlock.Light)
  • Функция ICS «разделительная панель действия»

Единственный недостаток, который я вижу в использовании ActionbarSherlock, заключается в том, что вы блокируете себя в этой библиотеке. Если по какой-то причине он будет вымирать в ближайшем будущем, вам придется поддерживать его самостоятельно (например, если реализация Jellybean не идет). Это хлопот (не большая проблема), так как все ваши фрагменты расширяют SherlockFragemnt и все ваши действия. SherlockActivity.


Просто завершите то, что @Kurtis Nusbaum с примерным примером.

ОБНОВЛЕНИЕ: как сказал @ rudy-s, с новейшей библиотекой поддержки Android (api 18), я видел, что у них уже есть встроенная поддержка панели действий (класс ActionBarCompat).

Я создал два простых приложения, чтобы показать визуальную разницу между ActionBarSherlock и ActionBar Compatibility. См. Сравнительные изображения:

Теперь появляется при нажатии кнопки меню:

Как вы можете видеть, изображения просто применяют то, что было сказано. Совместимость Action Bar дает вам панель действий только в том случае, если устройство, на котором вы работаете, является уровнем API 3.0 или выше. Хотя Шерлок более общий.

Ниже вы можете увидеть источник приложения.

Файл xml-файла тот же:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/action_1"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="@string/action1"/>

<item
    android:id="@+id/action_2"
    android:orderInCategory="100"
    android:showAsAction="ifRoom"
    android:title="@string/action2"/>

<item
    android:id="@+id/action_3"
    android:orderInCategory="100"
    android:showAsAction="ifRoom"
    android:title="@string/action3"/>

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>

</menu>

Совместимость:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
     }

     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
     }
}

Деятельность Шерлока:

public class MainActivity extends SherlockActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
        getSupportMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

}

В sherlock app была добавлена ​​дополнительная конфигурация:

<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">

ОБНОВЛЕНИЕ: как сказал @ rudy-s, с новейшей библиотекой поддержки Android (api 18), я видел, что у них уже есть встроенная поддержка панели действий (класс ActionBarCompat).


ActionBarSherlock vs ActionBarCompat:

Я просто хочу немного разделить код между ActionBarSherlock и ActionBarCompat Lib

Мы можем перенести некоторые приложения из ActionBarSherlock в ActionBarCompat:

шаги:

  1. Импортируйте проект AppCompat .

  2. Замените параметр « SherlockFragmentActivity ActionBarActivity .

  3. Замените Fragment SherlockFragment Fragment .

  4. Change Menu , MenuItem и getSupportMenuInflater() . Измените способ получения Action Views.

    mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)

  5. Измените темы и стили .

Для получения дополнительной информации см. Этот слайд +NickButcher (Google)

Благодаря источникам: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/

Не забудьте прочитать этот developer.android для получения дополнительной информации о ABC!

Примечание. Настройка для модульных тестов так же, как, к сожалению, с библиотекой поддержки недоступна.

Вывод:

Кредиты: Габриэле Мариотти


ActionBarSherlock предоставляет вашему приложению панель действий независимо от того, какая версия API для Android работает. Совместимость Action Bar дает вам панель действий только в том случае, если устройство, на котором вы работаете, является уровнем API 3.0 или выше.

* Обратите внимание, что если устройство, на котором вы работаете, не является 3.0 или выше, ActionBarSherlock собирается использовать собственную пользовательскую реализацию панели действий, а не собственную.

--РЕДАКТИРОВАТЬ--

Кажется, что все изменилось, и на самом деле нет никакой разницы между ActionBarSherlock и совместимостью с Action Bar. Пожалуйста, прочитайте комментарии ниже.

--РЕДАКТИРОВАТЬ--

После использования обоих сейчас я могу сказать, что я действительно предпочитаю ActionBarSherlock для совместимости с Action Bar. ActionBarSherlock действительно прост и приятен в использовании.

--EDIT-- Как упоминалось в LOG_TAG, теперь есть поддержка панели действий в Библиотеке поддержки Android. У меня еще не было возможности использовать его, но я бы подумал, что это лучший вариант для использования.


  • Я твердо верю, что вы должны использовать ActionBarCompat для всех новых проектов, которые хотят поддерживать старые устройства.

  • Также может иметь смысл перенести существующие проекты. Поэтому прочитайте, чтобы узнать, почему вы должны немедленно перенести или использовать ActionBarCompat и как перенести существующие проекты.

Почему вы должны предпочесть ActionBarCompat над ActionBarSherlock?

Существует много причин, по которым вы должны предпочесть ActionbarCompat над ActionbarSherlock.

  1. Прежде всего, этот проект принадлежит Google, является частью Библиотеки поддержки и, вероятно, будет поддерживать новые материалы, связанные с Action Bar, в то же время Google выпускает их с Android Android.

  2. Еще одна веская причина заключается в том, что он поддерживает Navigation Drawer pattern прямо из коробки, а ActionBarSherlock - нет. Таким образом, если вы хотите добавить этот ящик в существующий проект / приложение, вы должны выполнить миграцию.

  3. Последним и важным является то, что создатель ActionBarSherlock, Джейк Уортон, объявил в Google+, что дальнейшее развитие ActionBarSherlock прекращено. ActionBarSherlock 4.4 является последней версией и может содержать исправления ошибок, но новых функций не будет. Поэтому, если новые функциональные возможности включены в панель действий, вы можете не справиться с этим с помощью actionbarsherlock.


android:gravity -> Устанавливает плотность содержимого View, в котором он используется.

android:layout_gravity -> Устанавливает серьезность представления родителя или макета





java android actionbarsherlock android-actionbar android-actionbar-compat