Android 에서 빵 부스러기 기능 을 구현 하 는 코드(Fragment 연동 지원)

UI 언니 가 준 설계도 에 빵 부스러기 효과 가 담 겨 있 었 기 때문에 github 을 한 바퀴 돌 았 는데 딱 히 어 울 리 는 게 없어 서 스스로 실현 할 수 밖 에 없 었 다.
먼저 효과 그림 보기:
먼저 Fragment 를 하나씩 추가 한 다음 에 리 턴 버튼 을 누 르 고 하나씩 리 턴 하 는 장면 을 봅 니 다.
逐个添加,逐个返回
이어서 Fragment 를 하나씩 추가 하고 tab 를 선택 하 는 장면 을 클릭 합 니 다.
逐个添加,选择
demo 주소
BreadCrumbsView
사용 방식
1.레이아웃 에 도입BreadCrumbsView

<com.tinytongtong.breadcrumbs.BreadCrumbsView
    android:id="@+id/breadCrumbs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
2.설치BreadCrumbsView의 모니터
 

breadCrumbsView.setOnTabListener(new BreadCrumbsView.OnTabListener() {
  @Override
  public void onAdded(BreadCrumbsView.Tab tab) {
    Log.e("BreadCrumbsView", "BreadCrumbsView.OnTabListener#onAdded tab:" + tab.getIndex());
    addFragment(tab);
  }

  @Override
  public void onActivated(BreadCrumbsView.Tab tab) {
    Log.e("BreadCrumbsView", "BreadCrumbsView.OnTabListener#onActivated tab:" + tab.getIndex());
  }

  @Override
  public void onRemoved(BreadCrumbsView.Tab tab) {
    Log.e("BreadCrumbsView", "BreadCrumbsView.OnTabListener#onRemoved tab:" + tab.getIndex());
    removeLastFragment();
  }
});
BreadCrumbsView.OnTabListener\#onAdded 방법 은 BreadCrumbsView\#addTab(tabName,value)방법 으로 tab 성공 후 발생 하 는 리 셋 을 추가 합 니 다.여기에 필요 한 Fragment 를 추가 할 수 있 습 니 다.아래 의 addFragment 방법 예 시 를 구체 적 으로 보 세 요.

private void addFragment(BreadCrumbsView.Tab tab) {
  // TODO: 2020/5/26 3:26 PM          Fragment,tab#getValue      Tab      ,                Fragment
  Fragment fragment = BlankFragment.newInstance(String.format("   %d Fragment", tab.getIndex()), "" + tab.getIndex());
  getSupportFragmentManager()
      .beginTransaction()
      .add(R.id.container, fragment, String.valueOf(tab.getIndex()))
      .show(fragment)
      .addToBackStack(null)
      .commit();
  fragments.add(fragment);
}
BreadCrumbsView.OnTabListener\#onActivated 방법 은 클릭 을 통 해 이미 존재 하 는 tab 로 전환 하고 tab 를 다시 활성화 하면 이 방법 을 호출 합 니 다.Fragment 를 새로 고침 하 는 작업 을 할 수 있 습 니 다.
BreadCrumbsView.OnTabListener\#onRemoved 방법 tab 제거 후 출발 하 는 동작 입 니 다.여 기 는 보통 removeLastFragment()방법 을 호출 하면 됩 니 다.코드 예제 를 보 겠 습 니 다.

/**
 *       Fragment,       Fragment
 */
private void removeLastFragment() {
  if (fragments != null && fragments.size() > 1) {
    getSupportFragmentManager().popBackStackImmediate();
    fragments.removeLast();
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
        .show(fragments.getLast())
        .commit();
    fragmentManager.executePendingTransactions();
  }
}
3.증가 와 삭제 방법 보완
코드 에 tab 를 추가 하려 면 BreadCrumbsView\#addTab(String content,Mapvalue)방법 으로 이 루어 져 야 합 니 다.
이 곳 의 value 가 가지 고 있 는 정 보 는 tab 에 붙 어 있 습 니 다.Fragment 를 만 들 때 tab.getValue()를 통 해 전 송 된 데 이 터 를 얻 을 수 있 습 니 다.이 를 통 해 원 하 는 Fragment 를 만 들 면 됩 니 다.
4.필요 에 따라 변경
현재 BreadCrumbsView 의 용 기 는 RecyclerView 를 사용 하여 이 루어 졌 으 며,item 의 너 비 는 패키지 내용 이 며,최대 너비 화면 너비 의 3 분 의 1 로 필요 에 따라 변경 할 수 있 습 니 다.
Fragment 의 제거 작업 은 현재 Fragment 스 택 에서 하나씩 제거 되 었 습 니 다.더 좋 은 방법 이 있 으 면 교 류 를 환영 합 니 다.
총결산
안 드 로 이 드 가 빵 부스러기 기능 을 실현 하 는 코드(Fragment 연동 지원)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 안 드 로 이 드 빵 부스러기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기