Android ViewPager加Fragment实现滑动或者点击页面切换
来源:互联网 发布:欧洲难民感恩 知乎 编辑:程序博客网 时间:2024/05/25 19:58
1.布局文件添加android.support.v4.ViewPager
添加pager切换的监听
下面是全部代码 两个Fragment就不上代码了
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.yuf.myapplication.MainActivity"> <LinearLayout android:id="@+id/vp_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/title_tv_recomend" android:layout_width="wrap_content" android:layout_height="50dp" android:text="" android:layout_weight="1" android:gravity="center" android:drawableBottom="#000000" /> <TextView android:id="@+id/title_tv_new" android:layout_width="wrap_content" android:layout_height="50dp" android:text="" android:layout_weight="1" android:gravity="center" /> </LinearLayout> <LinearLayout android:id="@+id/lin_index" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_below="@+id/vp_title"> <ImageView android:id="@+id/im_index" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@android:color/holo_blue_dark" /> </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/lin_index" android:layout_marginTop="5dp" ></android.support.v4.view.ViewPager></RelativeLayout>
然后添加java代码
设置TextView下边的下标标签图片
//TextView下边的标签图片的设置 public void setIm_index(){ DisplayMetrics dpMetrics = new DisplayMetrics(); getWindow().getWindowManager().getDefaultDisplay() .getMetrics(dpMetrics); screenWidth = dpMetrics.widthPixels; LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) im_index .getLayoutParams(); lp.width = screenWidth / 2; im_index.setLayoutParams(lp); }添加Adapter继承自FragmentPagerAdapter
//添加继承自FragmentPagerAdapter的pageradapter class MyPagerAdapter extends FragmentPagerAdapter{ public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } }
添加pager切换的监听
viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) im_index .getLayoutParams(); //页面切换控制地下的标签图片 if (currentIndex == 0 && position == 0)// 0->1 { lp.leftMargin = (int) (positionOffset * (screenWidth * 1.0 / 2) + currentIndex * (screenWidth / 2)); } else if (currentIndex == 1 && position == 0) // 1->0 { lp.leftMargin = (int) (-(1 - positionOffset) * (screenWidth * 1.0 / 2) + currentIndex * (screenWidth / 2)); } im_index.setLayoutParams(lp); } @Override public void onPageSelected(int position) { title_tv_recomend.setTextColor(Color.BLACK); title_tv_new.setTextColor(Color.BLACK); switch (position){ case 0: title_tv_recomend.setTextColor(Color.BLUE); break; case 1: title_tv_new.setTextColor(Color.BLUE); break; } currentIndex = position; } @Override public void onPageScrollStateChanged(int state) { } });
下面是全部代码 两个Fragment就不上代码了
public class MainActivity extends AppCompatActivity { private ViewPager viewpager; private ImageView im_index; private TextView title_tv_recomend; private TextView title_tv_new; private RecomentFragment mRecomentFragment; private NewFragment mNewFragment; private MyPagerAdapter pagerAdapter; private List<Fragment> fragmentList; private int screenWidth; private int currentIndex = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } public void initView(){ viewpager = (ViewPager) findViewById(R.id.viewpager); im_index = (ImageView) findViewById(R.id.im_index); title_tv_recomend = (TextView) findViewById(R.id.title_tv_recomend); title_tv_new = (TextView) findViewById(R.id.title_tv_new); title_tv_recomend.setText("推荐"); title_tv_new.setText("最新"); mRecomentFragment = new RecomentFragment(); mNewFragment = new NewFragment(); fragmentList = new ArrayList<>(); //把两个fragment添加到List fragmentList.add(mRecomentFragment); fragmentList.add(mNewFragment); pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); //设置默认加载的标签页 viewpager.setCurrentItem(currentIndex); viewpager.setAdapter(pagerAdapter); setIm_index(); //页面切换监听 viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) im_index .getLayoutParams(); //页面切换控制地下的标签图片 if (currentIndex == 0 && position == 0)// 0->1 { lp.leftMargin = (int) (positionOffset * (screenWidth * 1.0 / 2) + currentIndex * (screenWidth / 2)); } else if (currentIndex == 1 && position == 0) // 1->0 { lp.leftMargin = (int) (-(1 - positionOffset) * (screenWidth * 1.0 / 2) + currentIndex * (screenWidth / 2)); } im_index.setLayoutParams(lp); } @Override public void onPageSelected(int position) { title_tv_recomend.setTextColor(Color.BLACK); title_tv_new.setTextColor(Color.BLACK); switch (position){ case 0: title_tv_recomend.setTextColor(Color.BLUE); break; case 1: title_tv_new.setTextColor(Color.BLUE); break; } currentIndex = position; } @Override public void onPageScrollStateChanged(int state) { } }); title_tv_recomend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { currentIndex = 0; viewpager.setCurrentItem(currentIndex); } }); title_tv_new.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { currentIndex = 1; viewpager.setCurrentItem(currentIndex); } }); } //TextView下边的标签图片的设置 public void setIm_index(){ DisplayMetrics dpMetrics = new DisplayMetrics(); getWindow().getWindowManager().getDefaultDisplay() .getMetrics(dpMetrics); screenWidth = dpMetrics.widthPixels; LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) im_index .getLayoutParams(); lp.width = screenWidth / 2; im_index.setLayoutParams(lp); } //添加继承自FragmentPagerAdapter的pageradapter class MyPagerAdapter extends FragmentPagerAdapter{ public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } }}
1 0
- Android ViewPager加Fragment实现滑动或者点击页面切换
- Android之ViewPager+Fragment实现页面点击切换和手势滑动
- Android之ViewPager+Fragment实现页面点击切换和手势滑动
- TabLayou+fragment+viewpager实现滑动切换页面
- Viewpager+Fragment实现左右滑动切换页面
- fragment+viewpager+tablayou实现滑动切换页面
- viewpager滑动fragment点击textview切换页面线条滑动效果
- 滑动或点击按钮切换页面 ViewPager+RadioGroup+Fragment
- Android中Fragment点击切换与添加ViewPager滑动切换
- Android 使用ViewPager和RadioGroup配合Fragment实现标签页,可点击按钮切换、滑动切换。
- Fragment嵌套Fragment, TabLayout + ViewPager实现页面切换滑动
- Android 安卓 fragment+viewpager 仿qq界面 实现点击菜单切换界面+滑动切换viewpager切换界面
- Android ViewPager实现滑动切换页面+底部tab点击切换页面(类微信首页)
- Android ViewPager+Fragment(碎片)实现页面滑动
- Fragment+ViewPager实现仿微信点击和滑动切换界面
- ViewPager+Fragment实现滑动效果,并且能够点击切换
- Android之Fragment+ViewPager实现点击+滑动界面切换学习笔记
- Android 通过ViewPager实现点击和滑动切换Fragment标签页
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- git 详解 (1)
- 剑指-替换空格
- 吐槽NIO中的slip方法
- 在Unreal里面设置一个角色可跑动
- Android ViewPager加Fragment实现滑动或者点击页面切换
- 贪吃蛇self3
- 五种ARP学习
- mock代码片断1
- spring session 做session共享
- Android OpenGL入门
- 我的计算几何之路
- makefile ifeq多条件逻辑或
- 木雨音乐 项目开发(九)网络推荐——设置九大榜单