Android 는 ViewPager 를 기반 으로 위 챗 페이지 전환 과 유사 한 효 과 를 구현 합 니 다.

이 글 은 개인 적 으로 안 드 로 이 드 를 배우 고 성장 을 기록 하 며 복습 하기에 편리 합 니 다!
ViewPager 가 위 챗 과 유사 한 페이지 전환 을 실현 합 니 다.이 글 은 Fragment 어댑터 를 통 해 이 루어 집 니 다.
우선 레이아웃 파일 activitymain.xml ViewPager 추가
 ViewPager 는 페이지 이 고 PagerTabStrip 과 PagerTitleStrip 은 제목 을 설정 합 니 다.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent"> 
 <!--  --> 
 <android.support.v4.view.ViewPager 
  android:id="@+id/view1" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"> 
  <!--    --> 
  <!--PagerTitleStrip PagerTabStrip       ,   PagerTitleStrip PagerTabStrip   --> 
  <android.support.v4.view.PagerTabStrip 
   android:id="@+id/pagerTabStrip" 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content" 
   /> 
 </android.support.v4.view.ViewPager> 
 
</RelativeLayout> 
다음 에 3 개의 레이아웃 파일 을 만 들 고 ViewPager 어댑터 에 참조 합 니 다.
view1.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent"> 
 
 <ImageView 
  android:id="@+id/img1" 
  android:layout_height="wrap_content" 
  android:layout_width="wrap_content" 
  android:background="@drawable/img1" 
  android:layout_marginLeft="30dp"/> 
 
</LinearLayout> 

view2.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent"> 
 
 <ImageView 
  android:id="@+id/img2" 
  android:layout_height="match_parent" 
  android:layout_width="match_parent" 
  android:background="@drawable/img2"/> 
 
</LinearLayout> 
view3.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent"> 
 <ImageView 
  android:id="@+id/img3" 
  android:layout_height="match_parent" 
  android:layout_width="match_parent" 
  android:background="@drawable/img3"/> 
</LinearLayout> 
3 개의 클래스 계승 Fragment 를 만 들 고 Fragment 를 통 해 onCreateView 방법 으로 view.xml 레이아웃 을 View 로 변환 합 니 다.
MyFragment1.java

package com.rui.viewpagerdemo; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by qqazl001 on 2018/3/26. 
 */ 
 
public class MyFragment1 extends Fragment{ 
 @Nullable 
 @Override 
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
  //      View 
  //  1:Fragment          
  //  2:  layout  ViewGroup 
  //  1:     ViewGroup  ,false   
  View view = inflater.inflate(R.layout.view1,container,false); 
  return view; 
 } 
} 
MyFragment2.java

package com.rui.viewpagerdemo; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by qqazl001 on 2018/3/26. 
 */ 
 
public class MyFragment2 extends Fragment{ 
 @Nullable 
 @Override 
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
  //      View 
  //  1:Fragment          
  //  2:  layout  ViewGroup 
  //  1:     ViewGroup  ,false   
  View view = inflater.inflate(R.layout.view2,container,false); 
  return view; 
 } 
} 
MyFragment3.java

package com.rui.viewpagerdemo; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by qqazl001 on 2018/3/26. 
 */ 
 
public class MyFragment3 extends Fragment{ 
 @Nullable 
 @Override 
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
  //      View 
  //  1:Fragment          
  //  2:  layout  ViewGroup 
  //  1:     ViewGroup  ,false   
  View view = inflater.inflate(R.layout.view3,container,false); 
  return view; 
 } 
} 
어댑터 만 들 기,새 클래스(MyAdapter),FragmentPagerAdapter 계승

package com.rui.viewpagerdemo; 
 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.PagerAdapter; 
import android.view.View; 
import android.view.ViewGroup; 
 
import java.util.ArrayList; 
import java.util.List; 
 
/** 
 * Created by qqazl001 on 2018/3/26. 
 */ 
 
public class MyAdapter extends FragmentPagerAdapter{ 
 List<Fragment> listFragment; 
 List<String> listTab = new ArrayList<String>(); 
 
 public MyAdapter(FragmentManager fm,List<Fragment> listFragment,List<String>listTab) { 
  super(fm); 
  this.listFragment=listFragment; 
  this.listTab=listTab; 
 } 
 
 
 @Override 
 public CharSequence getPageTitle(int position) { 
  //       
  return listTab.get(position); 
 } 
 
 @Override 
 public Fragment getItem(int position) { 
  //       
  return listFragment.get(position); 
 } 
 
 @Override 
 public int getCount() { 
  //        
  return listFragment.size(); 
 } 
} 
Activity 에서 구성 요소 와 어댑터 를 예화 하고 감청 을 추가 하 며 각종 데이터 원본 을 추가 합 니 다.
감청 실현 인터페이스 OnPageChangeListener
ViewPager,감청 방법 추가 setOnPageChangeListener()방법 은 AS 에서 제거 되 었 습 니 다.addOnPageChangeListener()방법 을 사용 하 는 것 을 권장 합 니 다.
MainActivity.java

package com.rui.viewpagerdemo; 
 
import android.annotation.SuppressLint; 
import android.graphics.Color; 
import android.support.v4.app.Fragment; 
import android.support.v4.view.PagerTabStrip; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Toast; 
 
import java.util.ArrayList; 
import java.util.List; 
//      ,      
public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{ 
 private List<Fragment> listFragment;//  List,  Fagment 
 private ViewPager viewPager;//  ViewPager 
 private PagerTabStrip pagerTabStrip;//  PagerTabStrip 
 private List<String> listTab;//  List,     
 
 @SuppressLint("ResourceType") 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  //   List 
  listFragment = new ArrayList<Fragment>(); 
  //view  list 
  listFragment.add(new MyFragment1()); 
  listFragment.add(new MyFragment2()); 
  listFragment.add(new MyFragment3()); 
  //    list 
  listTab = new ArrayList<String>(); 
  listTab.add("   "); 
  listTab.add("   "); 
  listTab.add("   "); 
 
  // PagerTabStrip     
  pagerTabStrip = (PagerTabStrip)findViewById(R.id.pagerTabStrip); 
  //pagerTabStrip.setBackgroundColor(color.white);       
  pagerTabStrip.setTextColor(Color.RED); //         
  pagerTabStrip.setDrawFullUnderline(false);//         
  pagerTabStrip.setTabIndicatorColor(Color.GREEN);//          
 
  //       
  MyAdapter myAdapter = new MyAdapter(getSupportFragmentManager(),listFragment,listTab); 
  //   ViewPager 
  viewPager = (ViewPager) findViewById(R.id.view1); 
  // viewPager      
  viewPager.setAdapter(myAdapter); 
  //       
  viewPager.addOnPageChangeListener(this); 
 } 
 
 
 @Override 
 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
  // position-           
 
  // positionOffset-              
 
  // positionOffsetPixels-        
 } 
 
 @Override 
 public void onPageSelected(int position) { 
  //       
  Toast.makeText(MainActivity.this," "+(position+1)+" ",Toast.LENGTH_SHORT).show(); 
 } 
 
 @Override 
 public void onPageScrollStateChanged(int state) { 
  //state:     
 
  //            0,            1, 
 
  //            2(       1   2),          0 
 
  //  0,1,2        . 
 } 
} 

PS:이상 많은 분 들 이 android.support.v4.*이 가방 의 종 류 를 사 용 했 습 니 다.아래로 호 환 하기 위해 서 입 니 다.
ViewPager 는 세 개의 어댑터 가 있 는데 서로 다른 데이터 원본 에 적합 합 니 다.
1.PagerAdapter 의 어댑터 어댑터 어댑터 List의 데 이 터 를 계승 합 니 다.
2.Fragment Adapter 의 어댑터 어댑터 어댑터 List의 데 이 터 를 계승 합 니 다.
3.Fragment StateAdapter 의 어댑터 어댑터 어댑터 List의 데 이 터 를 계승 합 니 다.
그 중 두 가지 차 이 는 2 창설 과 소각 과정 이 없고 3 가지

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기