您的位置:首页 > 其它

自动循环切换图片的ViewPager,类似网页的广告页面切换

2013-10-31 17:49 405 查看
其实这个东西很简单,由于我们公司太闲了,无所事事的我就写这个demo来当作记日记吧,也怕自己以后忘记了。如图所示:











下方是代码:

MainActivity.class:



package com.example.music;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

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.View;

import android.widget.ImageView;

import android.widget.ImageView.ScaleType;

public class MainActivity extends Activity implements OnPageChangeListener {

private ImageView imageViews[] = new ImageView[3];

private ImageView imageViewbg[] = new ImageView[3];

private int[] icons = new int[] { R.drawable.ali2, R.drawable.ali1,

R.drawable.ali3 };

private ViewPager viewPager;

private int index = 0;

private ImageView oneview, twoview, threeview;

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

if (index >= 3) {

index = 0;

}

viewPager.setCurrentItem(index);

index++;

mHandler.sendEmptyMessageDelayed(0, 3000);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

initImageView();

initViews();

viewPager = (ViewPager) findViewById(R.id.viewpager);

MyPagerAdapter myPagerAdapter = new MyPagerAdapter();

viewPager.setAdapter(myPagerAdapter);

mHandler.sendEmptyMessageDelayed(0, 5000);

viewPager.setOnPageChangeListener(this);

}

void initImageView() {

for (int i = 0; i < imageViews.length; i++) {

ImageView imageView = new ImageView(this);

imageView.setScaleType(ScaleType.CENTER_CROP);

imageView.setBackgroundResource(icons[i]);

imageViews[i] = imageView;

}

}

void initViews() {

oneview = (ImageView) findViewById(R.id.oneview);

twoview = (ImageView) findViewById(R.id.twoview);

threeview = (ImageView) findViewById(R.id.threeview);

imageViewbg[0] = oneview;

imageViewbg[1] = twoview;

imageViewbg[2] = threeview;

}

class MyPagerAdapter extends PagerAdapter {

@Override

public int getCount() {

// TODO Auto-generated method stub

return imageViews.length;

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

// TODO Auto-generated method stub

return arg0 == arg1;

}

@Override

public void destroyItem(View container, int position, Object object) {

// TODO Auto-generated method stub

((ViewPager) container).removeView(imageViews[position]);

}

@Override

public Object instantiateItem(View container, int position) {

// TODO Auto-generated method stub

((ViewPager) container).addView(imageViews[position]);

return imageViews[position];

}

}

@Override

public void onPageScrollStateChanged(int arg0) {

// TODO Auto-generated method stub

// System.out.println("scroll:"+arg0);

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

// TODO Auto-generated method stub

index = arg0;// 此处是记录页面滑动的哪一页,自动播放图片的mhandler就在这一页的基础上播放下一页。

for (int i = 0; i < imageViewbg.length; i++) {

if (i == arg0) {

imageViewbg[i].setBackgroundResource(R.drawable.circle_click);

} else {

imageViewbg[i].setBackgroundResource(R.drawable.circle_clicked);

}

}

}

@Override

public void onPageSelected(int arg0) {

// TODO Auto-generated method stub

}

}





main.xml:



<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<android.support.v4.view.ViewPager

android:id="@+id/viewpager"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1" >

</android.support.v4.view.ViewPager>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1"

android:gravity="top|center_horizontal"

android:orientation="horizontal" >

<ImageView

android:id="@+id/oneview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="15dp"

android:background="@drawable/circle_click" />

<ImageView

android:id="@+id/twoview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="15dp"

android:background="@drawable/circle_clicked" />

<ImageView

android:id="@+id/threeview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/circle_clicked" />

</LinearLayout>

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