ViewPager滑动效果加导航效果
来源:互联网 发布:win7仿mac os x主题包 编辑:程序博客网 时间:2024/06/05 16:20
先放上最终效果图:
说到ViewPager,这个功能几乎在每个APP内都能见到,现在就让我们探究ViewPager。
那么我们该怎么使用,它和RecyclerView以及ListView一样也需要一个适配,这里我用FragmentPagerAdapter来讲述,其实还可以使用PagerAdapter。
有重要的一点是:
ViewPager最常配合使用Fragment,这是供应和管理每个页面的生命周期的便捷方式。并且谷歌推荐我们使用ViewPager和Fragment来实现滑动的效果。
所以这里我用Fragment来分析。
为了方便观察,我是用RecyclerView来显示数据。
创建Fragment:
public class FirstFragment extends Fragment { private List<String>mStringList = new ArrayList<>(); private RecyclerView mRecyclerView; @Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.first_fragmnet,container,false); initNum(); mRecyclerView = (RecyclerView)view.findViewById(R.id.first_recycler_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); MyAdapter myAdapter = new MyAdapter(mStringList); mRecyclerView.setAdapter(myAdapter); return view; } public void initNum(){ for (int i=0;i<100;i++){ mStringList.add("随机数:"+Math.random()); } }}
自定义适配器MyAdapter.java:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mStringList; static class ViewHolder extends RecyclerView.ViewHolder{ TextView textView; public ViewHolder(View view){ super(view); textView = (TextView) view.findViewById(R.id.item_num); } } public MyAdapter(List<String>stringList){ mStringList = stringList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item,parent,false); final ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.textView.setText(mStringList.get(position)); } @Override public int getItemCount() { return mStringList.size(); }}
自定义list_item.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="50dp"> <TextView android:id="@+id/item_num" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>
first_fragment.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"> <android.support.v7.widget.RecyclerView android:id="@+id/first_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView></LinearLayout>
上述的东西都很常规,如果不懂可以去我的上一篇博客学习,这里就不再作解释了。
接下来才是重点:
新建MyFragmentPagerAdapter.java:
public class MyFragmentPagerAdapter extends FragmentPagerAdapter { public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { if (position == 1){ return new FirstFragment(); }else if (position == 2){ return new FirstFragment(); } return new FirstFragment(); } @Override public int getCount() { return 3; }}
getItem():这个方法很容易明白,表示viewpager的位置,默认位置从0开始,
在哪个位置调用哪个视图。
getcount():记录多少个viewPager的视图个数。
MainActivity.java:
public class MainActivity extends AppCompatActivity { private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ mViewPager = (ViewPager)findViewById(R.id.view_pager); MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(myFragmentPagerAdapter); }}
activity_main.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"> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager></LinearLayout>
最后附上效果图:
那么如何实现导航的效果呢?其实很简单。
这里使用TabLayout
修改activity_main.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"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content"/> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1.0"/> </LinearLayout></LinearLayout>
修改MainActivity.java:
public class MainActivity extends AppCompatActivity { private ViewPager mViewPager; //添加 private TabLayout mTabLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ mViewPager = (ViewPager)findViewById(R.id.view_pager); MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(myFragmentPagerAdapter); //添加 mTabLayout = (TabLayout) findViewById(R.id.tab_layout); mTabLayout.setupWithViewPager(mViewPager); }}
最后在MyFragmentPagerAdapter.java里添加:
private String[] mTitles = new String[]{"首页", "发现", "排行榜"};@Override public CharSequence getPageTitle(int position) { return mTitles[position]; }
这样就实现了。
效果图:
阅读全文
0 0
- ViewPager滑动效果加导航效果
- viewpager滑动加标记动画滑动效果
- viewpager Android实现导航菜单左右滑动效果
- Android ViewPager和Fragment实现顶部导航界面滑动效果
- Android 利用ViewPager实现导航页滑动效果
- Android程序:实现导航滑动切换展示效果(ViewPager)
- Android ViewPager和Fragment实现顶部导航界面滑动效果
- Android ViewPager和Fragment实现顶部导航界面滑动效果
- Android :ViewPager+Fragment 实现顶部导航滑动效果
- Android ViewPager和Fragment实现顶部导航界面滑动效果
- Android ViewPager和Fragment实现顶部导航界面滑动效果
- ViewPager左右滑动效果
- ViewPager--滑动效果控制
- viewpager一屏多个滑动效果
- ViewPager滑动效果
- 导航滑动返回效果
- ViewPager多页面滑动效果
- viewpager+fragment实现滑动效果
- [bigdata-078] python3 logging 的示例 TimedRotatingFileHandler和RotatingFileHandler 基于时间切分和基于文件大小切分
- 免费PM2.5数据如何获取之PM25.in网站API调用JSON数据处理方法
- 关于学习CSS flexbox的文章或网址链接
- 螺旋矩阵--由外向内旋转输出
- 配置多个tomcat的步骤
- ViewPager滑动效果加导航效果
- DIR 命令
- 获取前端传送的数据及登陆验证--个人学习Django的一些总结
- JS 版本比较
- CF
- 利用runtime实现KVO
- android修改底层键值
- Spring整合Quartz
- pdf.js实际应用pdf文件在手机版浏览