Andriod中可以上下切换图片的ViewPager
2016-06-29 15:05
239 查看
ViewPager默认的效果是左右翻页,然而可能一些项目的需要,我们需要那种上下翻页的效果,在GitHub上我找到了可以上下翻页效果的ViewPager的Demo,作者Jake
Wharton无疑是个大神,有需要的可以直接取GitHub上看他的Demo,地址为:https://github.com/JakeWharton/Android-DirectionalViewPager
我简单的做了一点点修改,首先来说一下我遇到了问题
1)导入项目时我发现PagerAdapter.DataSetObserver这个类找不到,控制台信息提示的是我的v4包冲突了,然后我删掉了我项目里的v4包,导入了Demo里的v4包,然后错误就没了,我就在想是什么原因呢,然后我看了两个v4包的结构,(不支持的v4包是我项目本身的,我sdk已经更新到6.0)下面来看一下两个v4包的结构
首先是Demo里的v4包
然后是我项目本身的v4包(新建项目每次自带)
我想不用说,就知道为什么找不到这个类了吧,最新的v4包里没有了DataSetObserver这个类
2)第二点就是创建VerticalViewPagerCompat这个类的时候,必须放在android.support.v4.view这个报下,包的名字不能更改。
我项目中直接引入了VerticalViewPagerCompat类和DirectionalViewPager类,然后再主类中测试了一下,效果还不错,运行图片如下:
主类MainActivity的代码如下
适配器使用的FragmentPagerAdapter,使用方法和ViewPager一样
TestFragment的代码如下:
TestFragmentAdapter的代码如下:
这里只是简单的使用了一下这个可以上下切换的ViewPager,一些特效切换效果还需要自己根据需要添加
Demo的下载地址为:http://download.csdn.net/detail/shihuiyun/9562979 有需要的可以下载看看
Wharton无疑是个大神,有需要的可以直接取GitHub上看他的Demo,地址为:https://github.com/JakeWharton/Android-DirectionalViewPager
我简单的做了一点点修改,首先来说一下我遇到了问题
1)导入项目时我发现PagerAdapter.DataSetObserver这个类找不到,控制台信息提示的是我的v4包冲突了,然后我删掉了我项目里的v4包,导入了Demo里的v4包,然后错误就没了,我就在想是什么原因呢,然后我看了两个v4包的结构,(不支持的v4包是我项目本身的,我sdk已经更新到6.0)下面来看一下两个v4包的结构
首先是Demo里的v4包
然后是我项目本身的v4包(新建项目每次自带)
我想不用说,就知道为什么找不到这个类了吧,最新的v4包里没有了DataSetObserver这个类
2)第二点就是创建VerticalViewPagerCompat这个类的时候,必须放在android.support.v4.view这个报下,包的名字不能更改。
我项目中直接引入了VerticalViewPagerCompat类和DirectionalViewPager类,然后再主类中测试了一下,效果还不错,运行图片如下:
主类MainActivity的代码如下
package com.example.verticalviewpager; import com.directionalviewpager.DirectionalViewPager; import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { private DirectionalViewPager mDirectionalViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDirectionalViewPager = (DirectionalViewPager) findViewById(R.id.pager); mDirectionalViewPager.setAdapter(new TestFragmentAdapter( getSupportFragmentManager())); mDirectionalViewPager.setOrientation(DirectionalViewPager.VERTICAL); } }主布局文件如下:
<LinearLayout 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" android:orientation="vertical" > <com.directionalviewpager.DirectionalViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
适配器使用的FragmentPagerAdapter,使用方法和ViewPager一样
TestFragment的代码如下:
public class TestFragment extends Fragment { private static final String KEY_CONTENT = "TestFragment:Content"; private static final String KEY_ISLASTPIC = "TestFragment:IsLastPic"; private int mContent; private boolean mIsLastPic; public static TestFragment newInstance(int content, boolean isLastPic) { TestFragment fragment = new TestFragment(); fragment.mContent = content; fragment.mIsLastPic = isLastPic; return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) { mContent = savedInstanceState.getInt(KEY_CONTENT); mIsLastPic = savedInstanceState.getBoolean(KEY_ISLASTPIC); } View root = inflater .inflate(R.layout.fragment_layout, container, false); ImageView iv = (ImageView) root.findViewById(R.id.iv); iv.setScaleType(ScaleType.FIT_XY); iv.setImageResource(mContent); return root; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEY_CONTENT, mContent); outState.putBoolean(KEY_ISLASTPIC, mIsLastPic); } }
TestFragmentAdapter的代码如下:
class TestFragmentAdapter extends FragmentPagerAdapter { protected static final int[] CONTENT = new int[] { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a5 }; public TestFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { boolean isLastPic = false; if (position == CONTENT.length - 1) isLastPic = true; return TestFragment.newInstance(CONTENT[position], isLastPic); } @Override public int getCount() { return CONTENT.length; } }适配器布局fragment_layout如下;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/iv" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
这里只是简单的使用了一下这个可以上下切换的ViewPager,一些特效切换效果还需要自己根据需要添加
Demo的下载地址为:http://download.csdn.net/detail/shihuiyun/9562979 有需要的可以下载看看
相关文章推荐
- HttpProxyUtil HTTP请求工具类源码
- opencv3.0 机器学习模块使用
- sql || 连接符
- iOS开发The Operation couldn't be completed.(LaunchServicesError error 0.)的解决方法
- odoo 使用 80 端口
- ngix使用lesencrpt
- 《密码技术》(一):密码
- Android学习笔记 (图片选择器的使用selector)
- 发送邮件
- PyCharm设置python新建文件 模板修改 设置 文件为python 和utf-8 解决控制台输出乱码
- 运维人员如何最大限度避免误删除文件
- WebView与Cookies 的问题
- java内存机制
- mysql slave 主从 指定表 通配符
- 1005 大数加法
- WebStorm导入图片
- c# 第三方控件 多语言设置问题
- Ext js MVC
- python笔记
- 自定义横竖翻页的DirectionalViewPager