it-swarm-id.com

Perbedaan antara ActionBarSherlock dan Kompatibilitas ActionBar

Apa perbedaan antara ActionBarSherlock dan Kompatibilitas Bilah Tindakan

Beberapa hari yang lalu Google baru saja merilis Kompatibilitas ActionBar yang membuat saya sangat bingung. Apakah itu kompatibilitas Action Bar bekerja sama dengan ActionBarSherlock dan apakah pengkodeannya sama?

Contoh: Apakah ikon aplikasi untuk menavigasi "naik" atau ActionBar.Tab didukung dalam Kompatibilitas Bilah Tindakan?

154
xDragonZ

ActionBarSherlock memberi aplikasi Anda bilah tindakan terlepas dari * versi apa dari Android API aplikasi Anda sedang berjalan. Kompatibilitas Bilah Tindakan memberi Anda bilah tindakan hanya jika perangkat yang Anda jalankan adalah API level 3.0 atau lebih tinggi.

* Perhatikan bahwa jika perangkat yang Anda gunakan tidak 3.0 atau di atas, ActionBarSherlock akan menggunakan implementasi sendiri dari action bar, bukan yang asli.

--EDIT--

Tampaknya hal-hal telah berubah dan sebenarnya tidak ada perbedaan antara ActionBarSherlock dan Kompatibilitas Bilah Tindakan lagi. Silakan baca komentar di bawah untuk detailnya.

--EDIT--

Setelah menggunakan keduanya sekarang, saya dapat mengatakan bahwa saya sebenarnya lebih memilih kompatibilitas ActionBarSherlock ke Action Bar. ActionBarSherlock sangat mudah dan Senang digunakan.

--EDIT-- Seperti LOG_TAG sebutkan, sekarang ada dukungan untuk bilah tindakan di Android Perpustakaan Dukungan. Saya belum punya kesempatan untuk menggunakannya, tapi saya akan membayangkan itu adalah terbaik untuk digunakan.

61
Kurtis Nusbaum

ActionBarSherlock vs ActionBarCompat:

Saya Hanya ingin menaruh sedikit perbedaan kode antara ActionBarSherlock vs ActionBarCompat Lib

 ActionBarSherlock vs ActionBarCompat **strong text**

Kami dapat memigrasikan beberapa aplikasi dari ActionBarSherlock ke ActionBarCompat:

tangga:

  1. Impor proyek AppCompat .

  2. Ganti SherlockFragmentActivity dengan ActionBarActivity.

  3. Ganti SherlockFragment dengan Fragment.

  4. Ubah Menu, MenuItem dan getSupportMenuInflater() referensi. Ubah cara Anda mendapatkan Tampilan Tindakan.

    mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)

  5. Ubah Tema Anda dan Gaya .

Untuk info lebih lanjut, silakan rujuk slide ini dengan + NickButcher (Google)

enter image description here

Terima kasih kepada Sumber: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.htmlhttp://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/

Jangan lupa membaca ini developer.Android untuk informasi lebih lanjut tentang ABC!

Catatan: Mengaturnya untuk pengujian unit dengan cara yang sama seperti ABS sayangnya tidak dimungkinkan dengan perpustakaan dukungan.

Keluaran:

enter image description here

Penghargaan: Gabriele Mariotti

113
LOG_TAG

Baru saja menyelesaikan apa yang @Kurtis Nusbaum dengan contoh praktis.

UPDATE: seperti yang dikatakan @ rudy-s, dengan pustaka dukungan Android terbaru) (api 18), saya melihat mereka sudah memiliki dukungan built-in untuk actionbar (disebut kelas ActionBarCompat).

Saya membangun dua aplikasi sederhana untuk menunjukkan perbedaan visual antara ActionBarSherlock dan Kompatibilitas ActionBar. Lihat gambar perbandingan:

App using compatibility library

App using sherlock library

Sekarang tampilan ketika tombol menu ditekan:

App using compatibility on menu pressed

App using sherlock on menu pressed


Seperti yang Anda lihat, gambar hanya menegakkan apa yang dikatakan. Kompatibilitas Bilah Tindakan memberi Anda bilah tindakan hanya jika perangkat yang Anda jalankan adalah API level 3.0 atau lebih tinggi. Sementara Sherlock lebih umum.

Di bawah ini Anda dapat melihat sumber aplikasi.

File menu xml adalah sama:

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

Aktivitas kompatibilitas:

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

Aktivitas Sherlock:

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

}

Konfigurasi tambahan diperlukan pada aplikasi sherlock:

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

UPDATE: seperti yang dikatakan @ rudy-s, dengan pustaka dukungan Android terbaru) (api 18), saya melihat mereka sudah memiliki dukungan built-in untuk actionbar (disebut kelas ActionBarCompat).

41
Bruno Mateus

Actionbar Sherlock jauh lebih maju dan jauh lebih ambisius daripada proyek kompatibilitas Actionbar sederhana.

Kompatibilitas bilah Tindakan dapat dianggap sebagai "sampel" atau titik awal yang baik jika Anda hanya ingin memukul Bilah Tindakan di atas aplikasi Anda.

ActionBarSherlock dibangun di perpustakaan kompatibilitas, dan memberi Anda (seperti sampel kompatibilitas panel aksi) Action Bar pada perangkat pra-3.0. Selain itu ia memiliki fitur tambahan yang tidak ada dalam kode Compat ActionBar. Ini termasuk fitur seperti, tetapi tidak terbatas pada

  • setNavigationMode (untuk Tab dan pemintal di bilah tindakan)
  • Fragmen Dialog
  • Contextual Action Bar (CAB) sebuah menu yang mengambil alih action bar, digunakan misalnya untuk multi pilih (http://developer.Android.com/design/patterns/new-4-0.html) Ini adalah ICS (!) Untuk ini, implementasi kelas ActionMode (diperkenalkan di API level 11) harus diperkenalkan ke perpustakaan ActionbarSherlock
  • Implementasi Fragmen dan FragmentAktivitas - karena fragmen dapat mengimplementasikan menu onCreateOptions, kita perlu memastikan bahwa SupportMenuInflater digunakan.
  • Dua tema yang sangat berbeda dengan Holo.Dark dan Holo.Light (Theme.Sherlock, Theme.Sherlock.Light)
  • Fitur ICS "bilah tindakan terpisah"

Satu-satunya downside yang saya lihat dalam menggunakan ActionbarSherlock adalah Anda mengunci diri Anda di perpustakaan itu. Jika karena alasan tertentu akan mati dalam waktu dekat, Anda harus mempertahankannya sendiri (misalnya jika tidak ada implementasi Jellybean yang muncul). Ini merepotkan (bukan masalah besar) karena semua fragmen Anda meluas ke SherlockFragemnt dan semua Aktivitas Anda. SherlockActivity.

39
Glenn Bech

Well, implementasi @Jake melangkah lebih jauh dari apa yang dilakukan Actionat compat, lebih tepatnya Actionbar Compat hanyalah contoh dasar tentang bagaimana Anda dapat mendukung semua aplikasi dengan pseudo-actionbar untuk rilis sebelum dari Honeycomb (API 13). Meskipun target mereka adalah actionbar yang kompatibel lintas yang sama, mereka memiliki pendekatan yang berbeda.

ActionbarCompat Aproach

Implementasi ini tidak menggunakan perpustakaan Dukungan Kompatibilitas Android sebagai gantinya itu membuat kelas dasar yang disebut ActionBarActivity membuat sebuah instance tunggal dari Helper ini helper bertindak sebagai pabrik itu sendiri yang mengembalikan implementasi yang berbeda untuk tiga segmen APIS, ia kembali

Bagian yang paling menarik adalah di ActionbarBaseHelper , karena memiliki kode paling penting, saya sarankan Anda memahami kelas ini dan Anda akan mendapatkan seluruh contoh.

Action Bar Sherlock

Yah, ini memang sulit, pertama, karena saya bukan penulis, mungkin Jake dapat menjelaskan lebih lanjut tentang ini, tetapi saya akan mencobanya.

Sama seperti compat Sherlock membuat implementasi yang berbeda tetapi satu untuk "Compat" dan yang lainnya adalah Asli. Ini memaksa Anda untuk memperluas dari SherlockActivity atau dari SherlockFragmentActivity, karena dua kelas dasar ini memiliki metode untuk mengirimkan ActionBar.

Ini adalah proyek besar dan kompleks, yang tidak dapat dijelaskan dalam satu posting. Sarankan Anda Menggali Sherlock Github repo coba lihat dan sebagai Jeff Atwood kata

enter image description here

26
Necronet
  • Saya sangat percaya bahwa Anda harus menggunakan ActionBarCompat untuk semua proyek baru yang ingin mendukung perangkat yang lebih lama.

  • Mungkin juga masuk akal untuk melakukan migrasi proyek yang ada. Jadi bacalah terus untuk mengetahui mengapa Anda harus bermigrasi atau menggunakan ActionBarCompat segera dan cara memigrasi proyek yang ada.

Mengapa Anda lebih suka ActionBarCompat daripada ActionBarSherlock?

Ada banyak alasan mengapa Anda harus memilih ActionbarCompat daripada ActionbarSherlock.

  1. Pertama-tama proyek ini adalah oleh Google, adalah bagian dari Perpustakaan Dukungan dan dengan demikian kemungkinan akan mendukung hal-hal terkait Action Bar baru pada saat yang sama Google merilisnya dengan stok Android.

  2. Alasan bagus lainnya adalah mendukung Navigation Drawer pattern langsung keluar dari kotak, sedangkan ActionBarSherlock tidak. Jadi, jika Anda ingin menambahkan laci ini ke proyek/aplikasi yang ada, Anda harus bermigrasi.

  3. Yang terakhir dan Penting adalah, bahwa pencipta ActionBarSherlock, Jake Wharton, mengumumkan di Google+ bahwa pengembangan lebih lanjut dari ActionBarSherlock telah dihentikan. ActionBarSherlock 4.4 adalah rilis terakhir dan mungkin mendapatkan perbaikan bug - tetapi tidak akan ada fitur baru: Jadi, jika fungsionalitas baru termasuk dalam actionbar Anda mungkin tidak bisa mengatasinya dengan actionbarsherlock.

10
Stephen

Mungkin kita harus memperbarui jawabannya karena google menerbitkan dukungan Actionbar resmi sejak API18 ?

blok di bawah ini dari blog resmi tentang dua perpustakaan ini:

Jika Anda menggunakan solusi pihak ketiga (seperti ActionBarSherlock), ada beberapa alasan untuk mempertimbangkan peningkatan:

  • Dapat terus diperbarui saat API Bar Tindakan berevolusi.
  • Dukungan Navigasi Ancestral Terintegrasi.
  • Penggunaan kelas kerangka kerja Menu dan MenuItem.
  • Terus menggunakan kelas Fragmen Perpustakaan Dukungan.
  • Dukungan terintegrasi untuk ActionBarDrawerToggle untuk digunakan dengan DrawerLayout.
  • Backport dari PopupMenu.

ActionBarSherlock adalah perpustakaan yang solid dan teruji dengan baik yang telah melayani pengembang dengan sangat baik sejak lama. Jika Anda sudah menggunakannya dan saat ini tidak memerlukan hal-hal di atas maka tidak perlu bermigrasi.

7
ruidge