Android ViewPager实现每隔两秒自动切换图片功能

布局代码:

<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" >

<FrameLayout

android:layout_width="fill_parent"

android:layout_height="200dip"

>

<android.support.v4.view.ViewPager

android:id="@+id/vp"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

/>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="35dip"

android:orientation="vertical"

android:layout_gravity="bottom"

android:gravity="center"

android:background="#33000000"

>

<TextView

android:id="@+id/title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="图片标题"

android:textColor="@android:color/white"

/>

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_marginTop="3dip"

>

<View

android:id="@+id/dot_0"

android:layout_width="5dip"

android:layout_height="5dip"

android:layout_marginLeft="2dip"

android:layout_marginRight="2dip"

android:background="@drawable/dot_focused"

/>

<View

android:id="@+id/dot_1"

android:layout_width="5dip"

android:layout_height="5dip"

android:layout_marginLeft="2dip"

android:layout_marginRight="2dip"

android:background="@drawable/dot_normal"

/>

<View

android:id="@+id/dot_2"

android:layout_width="5dip"

android:layout_height="5dip"

android:layout_marginLeft="2dip"

android:layout_marginRight="2dip"

android:background="@drawable/dot_normal"

/>

<View

android:id="@+id/dot_3"

android:layout_width="5dip"

android:layout_height="5dip"

android:layout_marginLeft="2dip"

android:layout_marginRight="2dip"

android:background="@drawable/dot_normal"

/>

<View

android:id="@+id/dot_4"

android:layout_width="5dip"

android:layout_height="5dip"

android:layout_marginLeft="2dip"

android:layout_marginRight="2dip"

android:background="@drawable/dot_normal"

/>

</LinearLayout>

</LinearLayout>

</FrameLayout>

</RelativeLayout>

正常的shape图形dot_normal.xml:

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

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

android:shape="oval"

>

<corners android:radius="5dip" />

<solid android:color="#55000000" />

</shape>

获取焦点的shape图形 dot_focused.xml

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

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

android:shape="oval"

>

<corners android:radius="5dip" />

<solid android:color="#aaFFFFFF" />

</shape>

具体实现代码:

import java.util.ArrayList;

import java.util.concurrent.Executors;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.TimeUnit;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

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.view.ViewGroup;

import android.widget.ImageView;

import android.widget.TextView;

public class MainActivity extends Activity {

private int imageIds[];

private String[] titles;

private ArrayList<ImageView> images;

private ArrayList<View> dots;

private TextView title;

private ViewPager mViewPager;

private ViewPagerAdapter adapter;

private int oldPosition = 0;//记录上一次点的位置

private int currentItem; //当前页面

private ScheduledExecutorService scheduledExecutorService;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//图片ID

imageIds = new int[]{

R.drawable.a,

R.drawable.b,

R.drawable.c,

R.drawable.d,

R.drawable.e

};

//图片标题

titles = new String[]{

"巩俐不低俗,我就不能低俗",

"扑树又回来啦!再唱经典老歌引万人大合唱",

"揭秘北京电影如何升级",

"乐视网TV版大派送",

"热血屌丝的反杀"

};

//显示的图片

images = new ArrayList<ImageView>();

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

ImageView imageView = new ImageView(this);

imageView.setBackgroundResource(imageIds[i]);

images.add(imageView);

}

//显示的点

dots = new ArrayList<View>();

dots.add(findViewById(R.id.dot_0));

dots.add(findViewById(R.id.dot_1));

dots.add(findViewById(R.id.dot_2));

dots.add(findViewById(R.id.dot_3));

dots.add(findViewById(R.id.dot_4));

title = (TextView) findViewById(R.id.title);

title.setText(titles[0]);

mViewPager = (ViewPager) findViewById(R.id.vp);

adapter = new ViewPagerAdapter();

mViewPager.setAdapter(adapter);

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override

public void onPageSelected(int position) {

// TODO Auto-generated method stub

title.setText(titles[position]);

dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);

dots.get(position).setBackgroundResource(R.drawable.dot_focused);

oldPosition = position;

currentItem = position;

}

@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

}

});

}

private 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 void destroyItem(ViewGroup view, int position, Object object) {

// TODO Auto-generated method stub

// super.destroyItem(container, position, object);

// view.removeViewAt(position);

view.removeView(images.get(position));

}

@Override

public Object instantiateItem(ViewGroup view, int position) {

// TODO Auto-generated method stub

view.addView(images.get(position));

return images.get(position);

}

}

@Override

protected void onStart() {

// TODO Auto-generated method stub

super.onStart();

scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();

//每隔2秒钟切换一张图片

scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 2, 2, TimeUnit.SECONDS);

}

//切换图片

private class ViewPagerTask implements Runnable {

@Override

public void run() {

// TODO Auto-generated method stub

currentItem = (currentItem +1) % imageIds.length;

//更新界面

// handler.sendEmptyMessage(0);

handler.obtainMessage().sendToTarget();

}

}

private Handler handler = new Handler(){

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

//设置当前页面

mViewPager.setCurrentItem(currentItem);

}

};

@Override

protected void onStop() {

// TODO Auto-generated method stub

super.onStop();

}

}

到此这篇关于Android ViewPager实现每隔两秒自动切换图片的文章就介绍到这了,更多相关ViewPager自动切换图片内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

以上是 Android ViewPager实现每隔两秒自动切换图片功能 的全部内容, 来源链接: utcz.com/p/244029.html

回到顶部