样例:
1 主要的Activity 实现
/** * ViewPager 的使用 */ public class ViewPagerActivity extends Activity { private ViewPager mPager; private List<View> listViews; private ImageView cursor; private TextView t1, t2, t3; private int offset = 0;//移动条图片的偏移量 private int currIndex = 0;//当前页面的编号 private int bmpWidth;// 移动条图片的长度 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_pager); initCursorPos(); initView(); } //完成View组件的初始化,并将三个view动态地添加到Adapter对象中 //然后调用setAdapter将view集合与ViewPager绑定,设置进去的页面 //指向第一个页面setCurrentItem(0),最后设置onclick和onPageChange监听器 public void initView() { mPager = (ViewPager) findViewById(R.id.vPager); t1 = (TextView) findViewById(R.id.text1); t2 = (TextView) findViewById(R.id.text2); t3 = (TextView) findViewById(R.id.text3); listViews = new ArrayList<View>(); LayoutInflater mInflater = getLayoutInflater(); listViews.add(mInflater.inflate(R.layout.activity_view_pager2, null)); listViews.add(mInflater.inflate(R.layout.activity_view_pager3, null)); listViews.add(mInflater.inflate(R.layout.activity_view_pager4, null)); mPager.setAdapter(new MyPageAdapter(listViews)); mPager.setCurrentItem(0); t1.setOnClickListener(new MyClickListener(0)); t2.setOnClickListener(new MyClickListener(1)); t3.setOnClickListener(new MyClickListener(2)); mPager.setOnPageChangeListener(new MyOnPageChangeListener()); } //初始化指示器的位置,就是下面那个移动条一开始放的地方 public void initCursorPos() { cursor = (ImageView) findViewById(R.id.cursor); bmpWidth = BitmapFactory.decodeResource(getResources(), R.drawable.gdt) .getWidth();// 获取图片宽度 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenW = dm.widthPixels;// 获取分辨率宽度 offset = (screenW / 3 - bmpWidth) / 2;// 计算偏移量 Matrix matrix = new Matrix(); matrix.postTranslate(offset, 0); cursor.setImageMatrix(matrix);// 设置动画初始位置 } //设置点击事件,点击上面文字切换页面的 public class MyClickListener implements OnClickListener { private int index = 0; public MyClickListener(int i) { index = i; } @Override public void onClick(View arg0) { mPager.setCurrentItem(index); } } //监听页面切换时间,主要做的是动画处理,就是移动条的移动 public class MyOnPageChangeListener implements OnPageChangeListener { int one = offset * 2 + bmpWidth;// 移动一页的偏移量,比如1->2,或者2->3 (这个数值等于一个导航条的宽度) int two = one * 2;// 移动两页的偏移量,比如1直接跳3 @Override public void onPageSelected(int index) { Animation animation = null; //index为当前选择的是哪个页面 switch (index) { case 0: if (currIndex == 1) { animation = new TranslateAnimation(one, 0, 0, 0); } else if (currIndex == 2) { animation = new TranslateAnimation(two, 0, 0, 0); } break; case 1: if (currIndex == 0) { animation = new TranslateAnimation(offset, one, 0, 0); } else if (currIndex == 2) { animation = new TranslateAnimation(two, one, 0, 0); } break; case 2: if (currIndex == 0) { animation = new TranslateAnimation(offset, two, 0, 0); } else if (currIndex == 1) { animation = new TranslateAnimation(one, two, 0, 0); } break; } currIndex = index; animation.setFillAfter(true);// true表示图片停在动画结束位置 animation.setDuration(300); //设置动画时间为300毫秒 cursor.startAnimation(animation);//开始动画 } @Override public void onPageScrollStateChanged(int arg0) {} @Override public void onPageScrolled(int arg0, float arg1, int arg2) {} } }
2 PagerAdapter 类
public class MyPageAdapter extends PagerAdapter { private List<View> viewLists; public MyPageAdapter() {} public MyPageAdapter(List<View> viewLists) { super(); this.viewLists = viewLists; } //获得viewpager中有多少个view @Override public int getCount() { return viewLists.size(); } /** * 通常这么写就可以了 */ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /** * ①将给定位置的view添加到ViewGroup(容器)中,创建并显示出来 * ②返回一个代表新增页面的Object(key),通常都是直接返回view本身就可以了, */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewLists.get(position)); return viewLists.get(position); } //移除一个给定位置的页面。 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewLists.get(position)); } }
3 xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="60dp" android:background="#FFFFFF" > <TextView android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="红色" /> <TextView android:id="@+id/text2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="蓝色"/> <TextView android:id="@+id/text3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="黄色" /> </LinearLayout> <ImageView android:id="@+id/cursor" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="matrix" android:src="@drawable/gdt" /> <android.support.v4.view.ViewPager android:id="@+id/vPager" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_gravity="center" android:layout_weight="1.0" android:flipInterval="30" android:persistentDrawingCache="animation" /> </LinearLayout>
4 每一个pager中的4个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:orientation="vertical" android:gravity="center" android:background="#FF6666"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第一个Page" /> </LinearLayout>
相关推荐
- 可以使用`setCurrentItem(int item)`方法来切换到特定的页面,或者`addOnPageChangeListener()`来监听页面滑动事件。 4. **优化性能** - 为了提高性能,ViewPager会预加载相邻的页面。可以通过`...
通过以上步骤,你就可以在Android应用中实现`ViewPager`嵌套`GridView`的横向滑动效果了。`QyDemo`这个项目文件很可能是包含此示例代码的压缩包,你可以下载并参考其源码学习具体的实现细节。记住,实践是最好的老师...
`ViewPager`通常与`PagerAdapter`或`FragmentPagerAdapter`一起使用,以便加载和管理页面内容。 `Fragment`是Android应用中的一个可重用的UI组件,它可以嵌入到Activity中,有自己的生命周期和UI布局。在分页滑动的...
在这个实例中,我们将深入理解`ViewPager`的工作原理,以及如何在Android项目中使用它来实现屏幕滑动效果。 `ViewPager`是`PagerAdapter`接口的一个实现,这个接口是专门为`ViewPager`设计的,允许开发者自定义数据...
本教程将详细讲解如何实现ViewPager的无限循环左右滑动效果。 首先,我们需要了解ViewPager的基本用法。ViewPager是Android Support Library中的一个控件,它允许用户通过水平滑动手势在多个页面之间切换。每个页面...
这是`ViewPager`的一个接口,用于监听页面滑动的事件。我们可以实现`onPageScrolled()`, `onPageSelected()`, `onPageScrollStateChanged()`这三个方法,分别在页面滚动、选择页面和页面滚动状态改变时触发。在我们...
通过以上步骤,我们可以实现一个功能完备的基于RadioButton和ViewPager的页面滑动效果。这种方式不仅提供了清晰的页面切换指示,还使得用户可以通过点击或滑动两种方式自由切换页面,增强了交互性和可用性。同时,...
在Android应用开发中,`ViewPager`和`Fragment`是两个重要的组件,它们常被结合使用以实现用户界面的滑动切换效果。`ViewPager`提供了一个可以左右滑动查看多个页面的容器,而`Fragment`则作为Activity的部分内容,...
总的来说,通过ViewPager和自定义的PageTransformer、PagerAdapter以及布局设计,我们可以实现一个具有微信标题栏滑动效果的应用。同时,通过适配器和事件监听,可以动态显示带有消息提示的红色实心圆,提供更好的...
总结,通过结合使用ViewPager和Fragment,开发者可以构建出功能丰富的、动态的页面滑动效果,同时实现如欢迎页这样的特殊需求。在实际开发中,需要注意性能优化,如合理使用FragmentStatePagerAdapter以处理Fragment...
3. 至于"电影3d"标签可能意味着这种3D效果与电影海报展示或者电影预告片播放相关,可以创建一个包含多个ImageView或者自定义View的PagerAdapter,每个页面显示一张电影海报,并结合3D滑动效果,让用户在浏览时有...
它主要用于实现水平方向上的页面滑动,非常适合用于创建类似Tab布局或展示一系列相关的屏幕内容。在使用ViewPager时,我们需要为它提供一个适配器,通常是继承自`PagerAdapter`或`FragmentPagerAdapter`,以便在不同...
在Android开发中,ViewPager是一个非常重要的组件,常用于创建滑动页面效果,它可以承载多个页面并且用户可以通过左右滑动来切换。在这个实例中,我们将会探讨如何使用ViewPager来实现一个Activity加载多个自定义...
总之,"使用ViewPager和Fragment实现底部导航滑动重构版"是一个关于如何在Android应用中创建底部导航滑动效果的实践教程。通过结合`ViewPager`的平滑滑动和`Fragment`的灵活性,我们可以构建出高效且用户友好的多...
在Android开发中,ViewPager是一个非常重要的组件,常用于实现页面滑动效果,比如在应用的引导页、轮播图或内容切换场景。本资源“ViewPager手动滑动和自动滑动无限循环滑动加载.zip”提供了如何使ViewPager实现手动...
总结,通过`ViewPager`和`Fragment`的结合使用,我们可以轻松创建出具有多页面滑动效果的应用界面。这不仅提高了应用的用户体验,还简化了开发者的工作。同时,结合具体的示例代码和截图,学习和实施这一技术将变得...
总结起来,实现"android_viewPager左右滑动_实现光标动态滑动效果"的关键在于理解ViewPager的工作原理,创建自定义光标View,并在页面滑动时准确更新光标的位置。通过这样的实践,开发者可以创建出更加交互友好、...
ViewPager的滑动效果通常通过PageTransformer来实现,这是一个接口,定义了方法`transformPage(View page, float position)`,用于在页面滑动时应用变换效果。`page`参数代表当前正在滑动的页面,`position`参数表示...
本项目中,开发者创建了一个自定义的`HorizontalScrollView`控件,并将其与`ViewPager`结合,模拟了Tab的左右滑动效果,同时对`ViewPager`的滑动行为进行了定制,以达到特定的需求。 首先,`ViewPager`是Android ...
在Android应用开发中,创建一个类似微信的导航界面和滑动效果是常见的需求,这涉及到对ViewPager和Fragment的深入理解与应用。`ViewPager`是Android SDK中的一个组件,主要用于展示可滑动的页面集合,而`Fragment`则...