Android 는 ViewPager 를 사용 하여 내 비게 이 션 을 실현 합 니 다.

우선 ViewPager 가 구현 하 는 효 과 는 보 기 를 좌우 로 미 끄 러 지게 하 는 것 입 니 다.
ViewPager 의 XML 파일 에서 의 성명 은 다른 컨트롤 러 들 의 성명 과 조금 다 릅 니 다.
한편,android.support.v4.view 는 안 드 로 이 드 인터페이스 특수 효과 의 제3자 가 불 러 온 jar 패키지 로 아래로 호 환 할 수 있 습 니 다.

<android.support.v4.view.ViewPager
  ...
  ...
>
</android.support.v4.view.ViewPager>
표 시 된 페이지 카드 불 러 오기:layot 레이아웃 파일 을 View 대상 으로 변환 해 야 합 니 다.

(1)
LayoutInflater lf = getLayoutInfalter().from(this);
lf.inflate(resource,root);

(2)
View.inflate(context,resource,root);
PagerTabStrip   PagerTitleStrip
이름 을 봐 도 알 수 있 습 니 다.이 두 사람 은 위 챗 메 인 화면 밑 에 표 시 된 디 렉 터 리(위 챗,주소록,발견,나)처럼 사용자 가 미 끄 러 진 페이지 타이틀 을 탐색 할 수 있 습 니 다.

<android.support.v4.view.ViewPager
  ...
>
 <android.support.v4.view.PagerTabStrip
   ...
   ...
   >
 </android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
<!-- PagerTitleStrip     PagerTabTitle  , ViewPager  -->
일반적으로 사용 시 둘 중 하 나 를 취하 면 되 며,둘 을 동시에 사용 하면 PagerTabStrip 이 효력 을 상실 합 니 다.
물론 PagerTabStrip 과 PagerTitleStrip 도 일부 속성 을 설정 하여 네 비게 이 션 디 렉 터 리 를 미화 합 니 다.

private PagerTabStrip tabStrip;  
    tabStrip = (PagerTabStrip) findViewById(R.id.tabStrip);
    tabStrip.setBackgroundColor(Color.GRAY);
       tabStrip.setTextColor(Color.BLACK);
    tabStrip.setDrawFullUnderline(false);
    tabStrip.setTabIndicatorColor(Color.GREEN);
ViewPager 에 대응 하 는 세 가지 서로 다른 어댑터 가 있 고 대응 하 는 데이터 원본 도 다르다.
(1)PagerAdapter  ---- 데이터 원본:List

package com.Liuyt.s03_e19_viewpager;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyPagerAdapter extends PagerAdapter {
  private List<View> viewList;
  private List<String> titleList;
  public MyPagerAdapter(List<View> viewList, List<String> titleList) {
    this.viewList = viewList;
    this.titleList = titleList;
  }
  /*
   *        
   */
  @Override
  public int getCount() {
    // TODO Auto-generated method stub
    return viewList.size();
  }
  /*
   *   View    Object  
   */
  @Override
  public boolean isViewFromObject(View arg0, Object arg1) {
    // TODO Auto-generated method stub
    return arg0 == arg1;
  }
  /*
   *        
   */
  @Override
  public Object instantiateItem(ViewGroup container, int position) {
    // TODO Auto-generated method stub
    container.addView(viewList.get(position));
    return viewList.get(position);
  }
  /*
   *       
   */
  @Override
  public void destroyItem(ViewGroup container, int position, Object object) {
    // TODO Auto-generated method stub
    container.removeView(viewList.get(position));
  }
  /*
   *   viewPager   
   */
  @Override
  public CharSequence getPageTitle(int position) {
    // TODO Auto-generated method stub
    return titleList.get(position);
  }
}
(2)FragmentPagerAdapter----데이터 원본:List

package com.Liuyt.s03_e19_viewpager;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
  private List<Fragment>fragList;
  private List<String>titleList;
  public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment>fragList,List<String>titleList) {
    super(fm);
    // TODO Auto-generated constructor stub
    this.fragList = fragList;
    this.titleList = titleList;
  }
  @Override
  public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    return fragList.get(arg0);
  }
  @Override
  public int getCount() {
    // TODO Auto-generated method stub
    return fragList.size();
  }
  @Override
  public CharSequence getPageTitle(int position) {
    // TODO Auto-generated method stub
    return titleList.get(position);
  }
}
(3)FragmentStatePagerAdapter----데이터 원본:List
여 기 는 코드 를 붙 이지 않 습 니 다.Fragment StatePagerAdapter 의 코드 와 Fragment PagerAdapter 의 코드 차이 가 많 지 않 습 니 다.두 가지 차 이 는 미 끄 러 진 후에 destroy 방법 으로 페이지 카드 를 없 애 는 것 이 고 다른 하 나 는 페이지 카드 를 없 애 지 않 습 니 다.
마지막 으로 모니터 입 니 다.ViewPager 는 OnPager Change Listener 모니터 를 사용 하여 미 끄 러 진 페이지 를 감청 합 니 다.중간 에 자주 사용 되 는 방법 은 Public void onPager Selected(int arg 0){}입 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기