布局文件
<android.support.v4.view.ViewPager android:id="@+id/myViewPager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="48dp" android:background="#9999FF" android:orientation="horizontal"> <TextView android:id="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:background="#9999FF" android:gravity="center" android:text="推荐" android:textSize="18sp" /> <TextView android:id="@+id/tv_two" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:background="#9999FF" android:gravity="center" android:text="段子" android:textSize="18sp" /> <TextView android:id="@+id/tv_thr" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:background="#9999FF" android:gravity="center" android:text="视频" android:textSize="18sp" /> </LinearLayout>
主类main
import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.Window; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.TextView; import com.bwei.viewpagefragment.fragment.FragmentOne; import com.bwei.viewpagefragment.fragment.FragmentThree; import com.bwei.viewpagefragment.fragment.FragmentTwo; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private ViewPager mViewPager; private ArrayList fragments; private TextView view1, view2, view3; private int currIndex; private static int bmpW;//横线图片宽度 private static int offset;//图片移动的偏移量 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initViewPager(); InitTextView(); } private void InitTextView() { view1 = (TextView) findViewById(R.id.tv_one); view2 = (TextView) findViewById(R.id.tv_two); view3 = (TextView) findViewById(R.id.tv_thr); view1.setOnClickListener(new txtListener(0)); view2.setOnClickListener(new txtListener(1)); view3.setOnClickListener(new txtListener(2)); } //内部类 重写TextView点击事件 public class txtListener implements View.OnClickListener { private int index = 0; public txtListener(int i) { index = i; } @Override public void onClick(View v) { mViewPager.setCurrentItem(index); } } private void initViewPager() { mViewPager = (ViewPager) findViewById(R.id.myViewPager); fragments = new ArrayList<Fragment>(); Fragment fragmentHot = new FragmentOne(); Fragment fragmentNews = new FragmentTwo(); Fragment fragmentFav = new FragmentThree(); fragments.add(fragmentHot); fragments.add(fragmentNews); fragments.add(fragmentFav); mViewPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(), fragments)); mViewPager.setCurrentItem(0); mViewPager.setOnPageChangeListener(new myOnPageChangeListener()); } public class myOnPageChangeListener implements ViewPager.OnPageChangeListener { private int one = offset * 2 + bmpW;//两个相邻页面的偏移量 @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageSelected(int arg0) { Log.i("aaaaaaaaaaaaa", String.valueOf(arg0)); Log.i("one", String.valueOf(one)); Animation animation = new TranslateAnimation(currIndex * one, arg0 * one, 0, 0);//平移动画 currIndex = arg0; animation.setFillAfter(true);//动画终止时停留在最后一帧,不然会回到没有执行前的状态 animation.setDuration(200);//动画持续时间0.2秒 } } }
手动写fragment和布局
适配器类
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.ArrayList; public class MyFragmentAdapter extends FragmentPagerAdapter { ArrayList<Fragment> list; public MyFragmentAdapter(FragmentManager fm, ArrayList<Fragment> list) { super(fm); this.list = list; } @Override public Fragment getItem(int arg0) { return list.get(arg0); } @Override public int getCount() { return list.size(); } }