您的位置:首页 > 编程语言

ViewPager实现自动翻页功能 --转载出处找不到了,根据自己的理解写个随笔方便以后的记忆以及代码的共享,感谢给我启发的那位高手--第一次写博客哈

2013-10-17 22:47 1061 查看

xml文件 textview 用于显示图片的标题 viewpager 用于实现翻页效果

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" >

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#123456"
android:textIsSelectable="true"
android:textSize="18sp" />
</LinearLayout>

<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</android.support.v4.view.ViewPager>

</LinearLayout>


代码块

package com.xiang;

import java.util.ArrayList;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class AutoScrollActivity extends Activity {
private ViewPager vp;
private int imagsID[]={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d};
private String titles[]={"图片一","图片二","图片三","图片四"};
private ArrayList<ImageView> images;
private TextView title;
private ViewPagerAdapter adapter;
private int currentPosition=0;//当前页面位置
private ScheduledExecutorService executor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auto_scroll);
init();
}

private void init() {
images=new ArrayList<ImageView>();
for(int i=0;i<imagsID.length;i++)
{
ImageView imgview=new ImageView(this);
imgview.setBackgroundResource(imagsID[i]);
images.add(imgview);
}
title=(TextView)findViewById(R.id.title);
title.setText(titles[0]);//默认显示第一张图片
vp=(ViewPager)findViewById(R.id.vp);
adapter=new ViewPagerAdapter();
vp.setAdapter(adapter);
vp.setOnPageChangeListener(listener);
}
OnPageChangeListener listener=new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
title.setText(titles[arg0]);
currentPosition=arg0;
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

}
};
class ViewPagerAdapter extends PagerAdapter
{

@Override
public int getCount() {
// TODO Auto-generated method stub
return images.size();
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;//判断两次图片是否一样
}
@Override
public Object instantiateItem(View container, int position) {
// TODO Auto-generated method stub
ViewPager vp=(ViewPager) container;
vp.addView(images.get(position));
return images.get(position);
}
@Override
public void destroyItem(View container, int position, Object object) {
// TODO Auto-generated method stub
ViewPager vp=(ViewPager) container;
vp.removeView(images.get(position));

}

}
@Override
protected void onStart() {
// TODO Auto-generated method stub
/*
* 第一个参数:要自动执行的方法(任务)
* 第二个参数:延迟几秒启动
* 第三个参数:之后每个几秒 执行第一个参数的方法
* 第四个参数:时间单位 时分秒
*/
super.onStart();
executor=Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(new ViewPagerTask(), 2, 2, TimeUnit.SECONDS);

}
class ViewPagerTask implements Runnable
{

@Override
public void run() {
// TODO Auto-generated method stub
currentPosition=(currentPosition+1)%images.size();
handler.obtainMessage().sendToTarget();//获取当前消息 发送给handler
}

}
private Handler handler=new Handler()
{
public void handleMessage(android.os.Message msg) {

vp.setCurrentItem(currentPosition);
};
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.auto_scroll, menu);
return true;
}

}


实现效果:图片每隔两秒自动翻页,同时更改图片的标题,到最后一面又返回到第一页显示。2013-10-17

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐