从零开始用好ViewPager(1)
来源:互联网 发布:简单php发送post请求 编辑:程序博客网 时间:2024/06/06 02:40
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">大家好!这是本博客的第一篇文章,我会由浅入深把内容讲清楚,也希望大家喜欢!</span>一、 初识ViewPager
ViewPager是谷歌在“android-support-v4.jar”支持包中新引入的一个控件。“android-support-v4.jar”主要为早期版本兼容android api4(android 1.6) 及以后的新版本提供支持,但也附带,而且是唯一的引入了ViewPager这个新控件,连谷歌的工程师也自嘲,这个控件也许应该移到widget控件包里:“at some point should be moved over to the widget package”,因此,它和我们常用的ImageView、TextView等控件有同等的重要性,是设计界面的好工具。
ViewPager控件是什么样的呢?它可以让用户通过左右滑动屏幕,在不同的页面之间流畅的切换。示意图如下:
当然,如果滑动距离太小,页面会弹回去,效果和现在大家使用UC浏览器左右翻页一样,感觉很棒吧?下面我们就来看一个使用ViewPager控件的简单例子。
二、ViewPager的简单实现
第一步,在布局文件中增加ViewPager控件,这里要注意使用控件的全名“android.support.v4.view.ViewPager”,否则会在载入控件时报错:
<LinearLayoutxmlns: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.viewpagertest.MainActivity"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
第二步,更改主活动,使它继承自FragmentActivity,这样才能使用v4扩展包:
public class MainActivity extends FragmentActivity {private TestPagerAdapter testPagerAdapter;private FragmentManager supportFragmentManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}第三步,在主活动中加载ViewPager控件:
public class MainActivity extends FragmentActivity {private TestPagerAdapter testPagerAdapter;private FragmentManager supportFragmentManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);supportFragmentManager = getSupportFragmentManager();testPagerAdapter = new TestPagerAdapter(supportFragmentManager);viewPager.setAdapter(testPagerAdapter);}}第四步,为ViewPager控件写一个适配器,大多数情况下这个适配器可以继承自FragmentPagerAdapter,如果需要展示很多页面,可以选择继承自FragmentStatePagerAdapter以减少占用的内存。代码如下:
public class TestPagerAdapter extends FragmentPagerAdapter {public TestPagerAdapter(FragmentManager fragmentManager) {super(fragmentManager);}@Overridepublic Fragment getItem(int position) {return new MyFragment();}@Overridepublic int getCount() {return 3;}}重写getItem(int position)和getCount()两个方法。前者用来载入指定位置的View视图,载入的不是当前显示给用户的视图,而是即将显示的后一个视图,即预加载视图;后者返回整个ViewPager控件中包含的View视图的数量,这里我们设定为3。
第五步,设计一个背景颜色随机改变的碎片,作为getItem方法的返回值:
public class MyFragment extends Fragment {private Random random = new Random();@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflater.inflate(R.layout.my_fragment, null);ImageView imageView = (ImageView) view.findViewById(R.id.image_view);imageView.setBackgroundColor(Color.argb(Color.alpha(0xFF000000),Color.red(random.nextInt()), Color.green(random.nextInt()), Color.blue(random.nextInt())));return view;}}好了,经过以上步骤相信你已经实现了ViewPager,而且通过来回滑动屏幕你应该能发现,ViewPager预加载的是滑动方向上的下一个视图VIew,因此中间那个碎片始终不会变色,而在两个碎片间来回滑动也不会触发预加载。
下一篇内容我们将继续深入解析ViewPager。
- 从零开始用好ViewPager(1)
- ViewPager(1)
- 手把手教你用好LINQ to SQL(1)
- 用好移动硬盘
- 用好游标
- 用好“传真机”
- 用好ssh_config
- 用好CheckList
- 用好压岁钱
- 用好 Visio
- 用好AppCompatActivity
- 用好搜索引擎
- 用好网络,用好电脑, 事半功倍
- Ajax从零开始(1)
- arm从零开始1
- VS2008-从零开始(1)
- 《太极1从零开始》观后感
- 从零开始学Android.1
- Standard C语言标准函数库速查 (Cheat Sheet)
- 北邮人论坛的一个帖子
- centOs安装配置jdk+mysql+tomcat
- (OK) 调试cBPM—CentOS7—gdb—gdbserver—问题的解决—2—段错误
- lightoj 1134 - Be Efficient DP 思路
- 从零开始用好ViewPager(1)
- (OK) 编译cBPM-android—CentOS 7—NDK8—androideabi-4.7—API14—3版
- 程序员表白神器。安卓程序员表白软件。程序员追女友利器=android+雪花效果+彩色气泡+心形花园+心形玫瑰花+相爱天数计时器
- gcc/g++动态链接库和静态库的链接顺序
- (OK) 调试cBPM—CentOS7—gdb—gdbserver—问题的解决—3—段错误
- mysql常见错误代码解释
- (OK) 调试cBPM—CentOS7—gdb—gdbserver—问题的解决—4—段错误
- Hadoop简介
- 在 gdb 中将某段内存 dump 保存到文件中