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

  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进行图片的切换效果




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AndroidViewPager是一种常用的布局容器,用于在屏幕上滑动显示多个页面。在实现轮播效果时,可以通过以下步骤来实现: 1. 首先,在XML布局文件中添加ViewPager组件。可以设置该组件的宽度和高度,以及其他属性,如指示器dots等。 2. 创建一个适配器类(如PagerAdapter),用于管理ViewPager中的页面。适配器需要重写一些方法,如获取页面数量、创建页面和销毁页面等。 3. 在创建页面的方法中,可以使用LayoutInflater.inflate()方法来加载布局文件,然后将其添加到ViewPager中。可以根据需求自定义每个页面的布局。 4. 在Activity或Fragment中,通过findViewById()方法获取ViewPager组件的实例,并设置适配器。例如: ViewPager viewPager = findViewById(R.id.viewPager); viewPager.setAdapter(adapter); 5. 如果需要实现轮播效果,可以通过设置ViewPager的setCurrentItem()方法来切换页面。可以使用Handler类来实现定时切换页面的效果。例如: Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { int currentItem = viewPager.getCurrentItem(); if (currentItem < adapter.getCount() - 1) { currentItem++; } else { currentItem = 0; } viewPager.setCurrentItem(currentItem); handler.postDelayed(this, 3000); // 间隔3秒切换页面 } }; handler.postDelayed(runnable, 3000); 以上就是使用AndroidViewPager实现轮播效果的简要步骤。通过设置适配器和定时切换页面,可以让多个页面在屏幕上自动滑动显示,从而实现轮播效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值