官方API:developer.android.com/reference/a…
首先自定义ViewPager
public class MyViewPager extends ViewPager{
public MyViewPager (Context context) {
super(context);
}
public MyViewPager (Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//不限制宽,高设为子图片中最高的高
int height = 0;
for(int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int h = child.getMeasuredHeight();
if(h > height) height = h;
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
在XML文件中添加MyViewPager
<RelativeLayout 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:background="#FFFFFF"
android:orientation="vertical" >
<com.example.views.MyViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:flipInterval="1"
android:persistentDrawingCache="animation" />
</RelativeLayout>
自定义适配器
public class MyPagerAdapter extends PagerAdapter {
private Context context;
private List<ImageView> picViews;
public MyPagerAdapter(List<ImageView> picViews, Context context) {
this.picViews = picViews;
this.context = context;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public int getCount() {
return picViews.size();
}
@Override
public Object instantiateItem(View view, final int position) {
ViewPager mViewPager = (ViewPager) view;
mViewPager.addView(picViews.get(position));
picViews.get(position).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//添加点击事件
}
});
return picViews.get(position);
}
@Override
public void destroyItem(View container, int position, Object object) {
ViewPager viewPager = (ViewPager) container;
viewPager.removeView(picViews.get(position));
}
}
在你的java代码中做如下操作,需要使用ImageLoader
private MyPagerAdapter pagerAdapter = null;
private ViewPager viewpager = null;
private ArrayList<ImageView> picViews = new ArrayList<ImageView>();
private int control = -1;//控制广告的显示数量
//计时更换广告
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case -1:
viewpager.setCurrentItem((Integer) msg.obj);
break;
default:
break;
}
}
};
private void initViewPager(){
pagerAdapter = new MyPagerAdapter(picViews, this);
viewpager = (ViewPager)findViewById(R.id.viewpager);
viewpager.setAdapter(pagerAdapter);
viewpager.removeAllViews();
for (int i=0; i<adsCount; i++) {//adsCount广告图片数量
ImageView imageView = new ImageView(CebMainActivity.this);
imageView.setScaleType(ScaleType.FIT_XY);
ImageLoader.getInstance().displayImage( /**广告图片资源**/ , imageView);
picViews.add(imageView);
}
pagerAdapter.notifyDataSetChanged();
runViewpagerTask();
}
/**
* 执行viewpager定时任务
*/
private void runViewpagerTask() {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
control++;
Message msg = new Message();
msg.what = -1;
if (control > 1) {//这里控制为两张
control = 0;
}
msg.obj = control;
handler.sendMessage(msg);
}
};
timer.schedule(task, 0, 6000);//每6秒执行一次
}