Programing

ActionBarSherlock과 ActionBar 호환성의 차이점

c10106 2022. 4. 24. 09:52
반응형

ActionBarSherlock과 ActionBar 호환성의 차이점

ActionBarSherlockAction Bar Compatibility의 차이점

며칠 전 구글은 나를 혼란스럽게 하는 액션바 호환성을 막 출시했다.Action Bar Compatibility가 ActionBarSherlock과 동일하게 작동하고 코딩이 동일한가?

예: "up" 또는 "ActionBar"를 탐색하기 위한 앱 아이콘 수행수행 표시줄 호환성에서 탭 지원?

ActionBarSherlock 대 ActionBarCompat:

ActionBarSherlock과 ActionBarCompat Lib 사이에 코드 차이를 몇 개 두려고 함

ActionBarSherlock 대 ActionBarCompat **강력한 텍스트**

일부 앱을 ActionBarSherlock에서 ActionBarCompat으로 마이그레이션할 수 있음:

단계:

  1. AppCompat 프로젝트 가져오기.

  2. 로 대체하십시오.

  3. 로 대체하십시오.

  4. 변화하다Menu, 및 참조.수행 보기를 가져오는 방법을 수정하십시오.

    mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)

  5. 테마스타일을 수정하십시오.

자세한 내용은 이 슬라이드를 +Nick으로 참조하십시오.정육점(Google)

여기에 이미지 설명을 입력하십시오.

출처: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/

ABC에 대한 자세한 내용은 이 개발자.android를 잊지 말고 읽어보십시오!

참고: 유닛 테스트를 위해 ABS와 동일한 방식으로 설정하는 것은 유감스럽게도 지원 라이브러리에서 가능하지 않다.

출력:

여기에 이미지 설명을 입력하십시오.

크레딧: 가브리엘레 마리오티

ActionBarSherlock은 프로그램이 실행 중인 Android API의 버전에 관계없이* 프로그램 실행 막대를 제공한다.수행 표시줄 호환성은 실행 중인 장치가 API 수준 3.0 이상인 경우에만 수행 표시줄을 제공한다.

*실행 중인 장치가 3.0 이상이 아닌 경우 ActionBarSherlock은 기본 동작이 아닌 고유한 동작 표시줄 사용자 정의 구현을 사용한다는 점에 유의하십시오.

--편집..

상황이 변화한 것으로 보이며 실제로 ActionBarSherlock과 Action Bar Compatibility는 더 이상 차이가 없다.자세한 내용은 아래 설명을 참조하십시오.

--편집..

지금 이 두 가지를 모두 사용한 후, 나는 실제로 수행 표시줄 호환성보다 수행바셜록을 더 선호한다고 말할 수 있다.액션바셜록은 정말 쉽고 사용하기 좋다.

--EDIT-- LOG_TAG에서 언급했듯이, 이제 Android Support Library에서 수행 표시줄에 대한 지원이 있다.아직 쓸 기회가 없었는데, 그게 제일 좋은 것 같아.

@Kurtis Nusbaum을 프리타틱한 예로 완성하는 것.

업데이트: @rudy-s가 말했듯이, 최신 안드로이드 지원 라이브러리(api 18)와 함께, 나는 그들이 이미 액션바(ActionBarCompat class)에 대한 지원을 내장하고 있음을 보았다.

나는 ActionBarSherlock과 ActionBar Compatibility의 시각적 차이를 보여주기 위해 두 개의 간단한 애플리케이션을 만들었다.비교 이미지 참조:

호환성 라이브러리를 사용하는 앱

셜록 라이브러리를 이용한 앱

이제 메뉴 버튼을 눌렀을 때의 모양:

메뉴를 누른 상태에서 호환성을 사용하는 앱

셜록 온메뉴를 이용한 앱 누름


보시다시피, 그 이미지들은 단지 말한 것을 강요할 뿐이다.수행 표시줄 호환성은 실행 중인 장치가 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);
    }

}

셜록 앱에는 추가 구성이 필요했다.

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

업데이트: @rudy-s가 말했듯이, 최신 안드로이드 지원 라이브러리(api 18)와 함께, 나는 그들이 이미 액션바(ActionBarCompat class)에 대한 지원을 내장하고 있음을 보았다.

액션바 셜록은 단순한 액션바 호환성 프로젝트보다 훨씬 더 발전하고 야심만만만하다.

수행 표시줄 호환성은 수행 막대를 앱 위에서만 스매핑하려는 경우 "샘플" 또는 좋은 시작점으로 간주될 수 있다.

ActionBarSherlock은 호환성 라이브러리를 기반으로 하며 3.0 이전 장치에 (수행 표시줄 호환성 샘플과 같은) 작업 막대를 제공한다.또한 ActionBar Compative 코드에는 없는 추가 기능이 있다.여기에는 다음과 같은 기능이 포함되지만

  • setNavigationMode(수행 표시줄의 탭 및 스핀너용)
  • 대화 상자 조각
  • CAB(Contextual Action Bar) 멀티 셀렉트(http://developer.android.com/design/patterns/new-4-0.html) 이것은 ICS 기능(!)이다. 이를 위해 ActionMode 클래스(API 레벨 11에 있음)의 구현이 ActionbarSherlock 라이브러리에 도입되어야 했다.
  • 조각 및 조각활동 구현 - 조각이 onCreateOptions 메뉴를 구현할 수 있기 때문에 SupportMenuInflater가 사용되는지 확인해야 한다.
  • Holo와 크게 다르지 않은 두 가지 주제.어둡고 홀로.빛(테마)셜록, 테마.셜록빛)
  • ICS 기능 "분할 수행 표시줄"

내가 ActionbarSherlock을 사용할 때 보이는 유일한 단점은 당신이 그 도서관에 틀어박혀 있다는 것이다.만약 어떤 이유로든 그것이 가까운 장래에 소멸된다면, 당신은 그것을 당신 스스로 유지해야 할 것이다(예를 들어 젤리빈 구현이 이루어지지 않을 경우).당신의 모든 단편들이 셜록프래그멘트와 당신의 모든 활동을 확장하고 있기 때문에 이것은 번거로운 일이다.셜록액티브.

@Jake 구현은 Actionbar와 호환되는 것보다 훨씬 더 멀리 나아간다. 보다 정밀한 Actionbar Compative는 Honeycomb(API 13)에서 릴리즈하기 위해 사이비 액션 바를 포함한 모든 복제를 지원하는 방법에 대한 기본적인 예일 뿐이다.비록 그들의 목표는 같은 교차 호환 액션바지만, 그들은 다른 접근법을 가지고 있다.

ActionbarCompat Aproach

이 구현은 Compatibility Android 지원 라이브러리를 사용하지 않고 ActionBarActivity라는 기본 클래스를 생성하며 도우미가 공장 자체 역할을 하는 도우미의 단일 인스턴스를 생성하여 APIS의 3개 세그먼트에 대해 다른 구현을 반환하고, 이를 반환함

가장 흥미로운 부분은 액션바베이스에 있다.도우미, 가장 중요한 코드가 있기 때문에 이 수업을 잘 이해하면 전체 예시를 볼 수 있을 거야.

액션 바 셜록

글쎄, 우선은 까다로운데, 왜냐하면, 내가 작가가 아닐 수도 있고 제이크가 더 자세히 설명할 수도 있겠지만, 한번 시도해 볼게.

호환되는 셜록이 다른 구현을 하듯이, 하나는 "Compat"을 위한 것이고 다른 하나는 Native를 위한 것이다.이 두 가지 기본 클래스는 ActionBar를 파견하는 방법을 가지고 있기 때문에, 셜록 액티비티 또는 셜록프레그먼트액티비티에서 확장하도록 강제한다.

이것은 크고 복잡한 프로젝트로, 하나의 게시물로는 설명할 수 없다.제프 앳우드가 말한 것처럼 셜록 기둡을 둘러보라고 제안하십시오.

여기에 이미지 설명을 입력하십시오.

  • 나는 네가 사용해야만 한다고 굳게 믿는다.ActionBarCompat이전 장치를 지원하려는 모든 새 프로젝트.

  • 기존 프로젝트를 마이그레이션하는 것도 이치에 맞을 수 있다.따라서 ActionBarCompat을 즉시 마이그레이션하거나 사용해야 하는 이유와 기존 프로젝트를 마이그레이션하는 방법에 대해 자세히 알아보십시오.

ActionBarSherlock보다 ActionBarCompative를 선호해야 하는 이유

ActionbarSherlock보다 ActionbarCompat을 선호하는 이유는 여러 가지가 있다.

  1. 우선 이 프로젝트는 구글이 지원 라이브러리에 속해 있기 때문에 구글이 새로운 액션바 관련 자료를 주식 안드로이드와 함께 출시하는 것과 동시에 지원할 가능성이 높다.

  2. 또 다른 좋은 이유는 그것이 그 나라를 지지한다는 것이다.Navigation Drawer patternActionBarSherlock은 그렇지 않은 반면, 개봉 즉시.따라서 이 드로어를 기존 프로젝트/앱에 추가하려면 마이그레이션하십시오.

  3. 마지막이자 중요한 것은 액션바셜록의 창시자인 제이크 와튼이 구글플러스를 통해 액션바셜록의 추가 개발이 중단됐다고 발표한 것이다.ActionBarSherlock 4.4는 마지막 릴리스로 버그 수정을 받을 수 있지만 새로운 기능은 없을 것이다.따라서 새로운 기능이 수행 표시줄에 포함된 경우 수행 표시줄 잠금 기능을 따라가지 못할 수 있다.

혹시 구글이 API18 이후 비정상적인 Actionbar 지원을 게시했기 때문에 정답을 업데이트해야 할까?

아래 블록은 이 두 라이브러리에 대한 비논리적 블로그의 것이다.

타사 솔루션(예: ActionBarSherlock)을 사용하는 경우 업그레이드를 고려해야 하는 몇 가지 이유가 있다.

  • Action Bar API가 진화함에 따라 업데이트될 수 있다.
  • 통합 조상의 항법 지원.
  • 프레임워크 메뉴 및 메뉴아이템 클래스 사용.
  • 지원 라이브러리의 조각 클래스를 계속 사용하십시오.
  • DrawerLayout과 함께 사용할 ActionBarDrawerToggle에 대한 통합 지원.
  • 팝업메뉴의 백포트.

ActionBarSherlock은 오랫동안 개발자들에게 매우 좋은 서비스를 제공해온 견고하고 잘 검증된 라이브러리다.이미 사용 중이고 현재 위의 항목이 필요하지 않다면 마이그레이션할 필요가 없다.

참조URL: https://stackoverflow.com/questions/7844517/difference-between-actionbarsherlock-and-actionbar-compatibility

반응형