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 가지
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.