Android ViewPager的使用以及定时切换实现

原创 2015年07月06日 17:33:49

  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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <FrameLayout 
       android:layout_width="fill_parent"   
       android:layout_height="200dp">
        
        <android.support.v4.view.ViewPager
            android:id="@+id/myviewpager"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
        />
        <LinearLayout 
           android:layout_width="fill_parent"
           android:layout_height="35dp"
           android:orientation="vertical"
           android:layout_gravity="bottom"
           android:gravity="center"
           android:background="#33000000">
            
            <TextView 
                 android:id="@+id/txttitle"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"    
                 android:textColor="@android:color/white"
            />   
            <LinearLayout 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"   
                android:layout_marginTop="3dp"
                android:orientation="horizontal">
                
                <View 
                   android:id="@+id/dotnumber_1"
                   android:layout_width="5dp"
                   android:layout_height="5dp"
                   android:layout_marginLeft="2dp"
                   android:layout_marginRight="2dp"
                   android:background="@drawable/mydotfocus"        
                />
                <View 
                   android:id="@+id/dotnumber_2"
                   android:layout_width="5dp"
                   android:layout_height="5dp"
                   android:layout_marginLeft="2dp"
                   android:layout_marginRight="2dp"
                   android:background="@drawable/mydotnormal"        
                />
                <View 
                   android:id="@+id/dotnumber_3"
                   android:layout_width="5dp"
                   android:layout_height="5dp"
                   android:layout_marginLeft="2dp"
                   android:layout_marginRight="2dp"
                   android:background="@drawable/mydotnormal"        
                />
                  <View 
                   android:id="@+id/dotnumber_4"
                   android:layout_width="5dp"
                   android:layout_height="5dp"
                   android:layout_marginLeft="2dp"
                   android:layout_marginRight="2dp"
                   android:background="@drawable/mydotnormal"        
                />
                    <View 
                   android:id="@+id/dotnumber_5"
                   android:layout_width="5dp"
                   android:layout_height="5dp"
                   android:layout_marginLeft="2dp"
                   android:layout_marginRight="2dp"
                   android:background="@drawable/mydotnormal"        
                />
                
            </LinearLayout> 
            
        </LinearLayout>
    </FrameLayout>
    
    
    
    
    
</RelativeLayout>
包括文字和浮点的切换以及图片的切换,效果图如下:



viewpager的实现要设置一个VewPagerAdapter 还有 一个 OnViewPagerChanged()的监听事件代码如下:

package com.shao.ViewPagerLearn;

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 java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import android.app.Activity;
import android.view.Menu;
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 List<ImageView> imageslist;
	private List<View>  dotslist;
	private TextView  txttitle;
	private ViewPager mViewPager;
	private ScheduledExecutorService  excutorservice;

	private int oldposition;
	private int currentposition;
	private Handler handle = new Handler(){

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);
			
			mViewPager.setCurrentItem(currentposition);
		}
		
		
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		imageids = new int[]{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e};
		titles = new String[]{"巩俐不低俗,我就不能低俗","扑树又回来啦!再唱经典老歌引万人大合唱",	"揭秘北京电影如何升级",	
	        	"乐视网TV版大派送",	
	        	"热血屌丝的反杀"};
	    imageslist = new ArrayList<ImageView>();
        for(int i = 0; i < imageids.length;i++)
        {
        	ImageView imageview = new ImageView(getApplicationContext());
        	imageview.setBackgroundResource(imageids[i]);
        	imageslist.add(imageview);
        	
        }
        
        dotslist = new ArrayList<View>();
        dotslist.add(findViewById(R.id.dotnumber_1));
        dotslist.add(findViewById(R.id.dotnumber_2));
        dotslist.add(findViewById(R.id.dotnumber_3));
        dotslist.add(findViewById(R.id.dotnumber_4));
        dotslist.add(findViewById(R.id.dotnumber_5));
		
        txttitle = (TextView)findViewById(R.id.txttitle);
        txttitle.setText(titles[0]);
        
        mViewPager = (ViewPager)findViewById(R.id.myviewpager);
        mViewPager.setAdapter(new MyViewpagerAdaper());
        
        //创建一个页面更换监听
        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
			
			@Override
			public void onPageSelected(int arg0) {
				// TODO Auto-generated method stub
				txttitle.setText(titles[arg0]);
				
				dotslist.get(oldposition).setBackgroundResource(R.drawable.mydotnormal);
				dotslist.get(arg0).setBackgroundResource(R.drawable.mydotfocus);
				
				oldposition = 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
				
			}
		});
        
           
	}

	private class MyViewpagerAdaper  extends PagerAdapter
	{

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

		//判断是不是同一张图片
		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			// TODO Auto-generated method stub
			return arg0 == arg1;
		}

		/*显示内存就放三张图片 滑动的时候 出去的图片执行destroy 进到内存的图片就是instaint*/
		
		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			// TODO Auto-generated method stub
			//super.destroyItem(container, position, object);
			
			//移除这个位置的图片
			container.removeView(imageslist.get(position));
			
		}

		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			// TODO Auto-generated method stub
			container.addView(imageslist.get(position));
			return imageslist.get(position);
		}
		
		
	}
	
	
	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		excutorservice = Executors.newSingleThreadScheduledExecutor();
		excutorservice.scheduleWithFixedDelay(new MyTask(), 2, 2, TimeUnit.SECONDS);
		
		
		super.onStart();
	}

	private class MyTask implements Runnable
	{

		@Override
		public void run() {
			// TODO Auto-generated method stub
			//当前图片+1进行图片的切换 
			currentposition = (currentposition + 1)%imageids.length;
			handle.sendEmptyMessage(0);
			
			
		}
		
		
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
	}


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

}

创建一个newSingleThreadScheduledExecutor进行图片的切换效果




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android之ViewPager+Fragment实现页面点击切换和手势滑动

使用ViewPager+Fragment实现页面点击切换和手势滑动,效果图如下: 源码下载地址: http://download.csdn.net/detail/wei_zhi/9422590 ...

android 实现无限定时循环viewpager

重所周知,viewpager是制作轮播图的基本构件,下面是API介绍ViewPager extends ViewGroup java.lang.Object ↳ android.view....

Android 滑动切换(首页展示,图片、新闻自动切换,循环切换,自动和手动)

最近做的项目,要用到滑动切换的效果,就是类似新闻客户端的图片一张一张的自动切换或者手动滑动切换,于是就搜集了一下资料,使用两种方式实现这样的效果,分别是ViewFlipper和ViewPager。这两...

Android viewpager 界面切换动画实现

ViewPage 是在Android研发中经常会用到的一个组件,无论是在实现图片的切换或者还是搭建整个项目的框架都是非常好用且强大的虽然官方对viewpage 的研发还不完整 但这样也不影响我们在研发...

Android ViewPager+Fragment实现页面切换逐步解析

相信各位在开发过程中都经常使用ViewPager和Fragment吧,在使用过程中,你是否对这两个控件的使用能理解透彻?是否知道他们之间事件处理是怎么做的?今天,博主带领大家来了解一下ViewPage...

Android viewpager + fragment实现fragment之间的切换

别的不说直接上源码package com.zach.fragmntdemo; import java.util.ArrayList; import java.util.List; import a...

Android ViewPager切换之PageTransformer接口中transformPage方法position参数使用详解

大家都知道在Android App项目开发、TV项目开发中,会经常性的使用到ViewPager,可以说是用的非常多,也十分重要的一个控件,然而在开发使用ViewPager的时候,我们可以给ViewPa...

Android ViewPager 实现多个页面切换滑动

使用ViewPager这个类可以轻松实现多个页面的滑动功能,而且相对viewgroup来讲要简单容易一些,在此之前我们需要导入android-support-v4.jar这个jar包,是google提...

android ViewPager控件实现手势滑动切换页签

1,主布局文件     android:layout_width="match_parent"     android:layout_height="match_parent&q...
  • lkx94
  • lkx94
  • 2016-10-26 17:06
  • 212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)