viewPager无限轮播效果(留待以后填坑)

来源:互联网 发布:淘宝联盟怎么查订单号 编辑:程序博客网 时间:2024/06/07 12:49

这两天做个android项目,跳了个大坑,至今仍未脱坑,先把代码上了吧,viewPager实现简单的无限轮播效果

MainActivity.xml布局文件内容:

<android.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="match_parent"        android:layout_height="320dp"        android:layout_alignParentLeft="true"        android:layout_centerVertical="true" />


MainActivity的代码实现如下:

public class MainActivity extends Activity {private ViewPager viewPager;//我们的轮播是要应用在项目中的,而且要一直在运行,所以要异步执行private Handler handler = new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager=(ViewPager) findViewById(R.id.viewPager);//将实现轮播的内容封装在此方法中initView();} 实现轮播的方法:private void initView(){final int[] resIds;//ViewPager中显示的广告图片//暂时只是测试,所以就给特定的5张图片,在resIds[0]上放最后一张图片,resIds[6]放第一张图片resIds = new int[]{R.drawable.lunbo_05,R.drawable.lunbo_01,R.drawable.lunbo_02,R.drawable.lunbo_03,   R.drawable.lunbo_04,R.drawable.lunbo_05,R.drawable.lunbo_01};final PagerAdapter pagerAdpater = new PagerAdapter(){@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 =arg1;}@Overridepublic int getCount() {return resIds.length;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {ImageView iv = new ImageView(getApplication());//图片大小跟随ImageView的尺寸来改变iv.setScaleType(ScaleType.FIT_XY);iv.setImageResource(resIds[position]);container.addView(iv);return iv;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View)object);}};
viewPager.setAdapter(pagerAdpater);viewPager.setCurrentItem(1);//设置viewPager的起始显示viewPager.setOnPageChangeListener(new OnPageChangeListener() {//此方法是页面跳转完后得到调用,arg0是你当前选中的页面的Position@Overridepublic void onPageSelected(int arg0) {if(arg0 = = resIds.length-1){//当切换到最后一张图片时,就跳回第一张图片viewPager.setCurrentItem(1,false);}//第二个参数设置为false,取消跳转的速度,不然从最后缓慢跳转到最前,超级难看}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}});startAnim();}private void startAnim() {//设置异步执行动画的轮播handler.postDelayed(new Runnable() {@Overridepublic void run() {int pos = viewPager.getCurrentItem();viewPager.setCurrentItem(pos+1);handler.postDelayed(this, 3000);}}, 3000);}protected void stopAnim() {handler.removeCallbacksAndMessages(null);}


轮播效果是实现了,可是有个大坑,不知各位看官发现了没有。

我是在运行起来后才发现,当第一遍播放OK后,很突兀的就跳转到了第一张图,是跳转,根本不是我们所需要的缓慢过渡,就如同viewPager的滑动效果一样,从右往左 滑出。。。。。

坑啊坑,只能以后成长了再回来填坑了。。。。。

0 0
原创粉丝点击