Android开发学习使用ViewPager打造Gallery

浏览:
字体:
发布时间:2013-12-12 14:50:58
来源:

通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间有些关联呢?两者在功能上的类似和重叠,总会让我们对此充满好奇,我们开始思考:如果不借助Gallery,我们能否做出像Gallery一样的效果呢?答案是肯定的。那么,我们今天就来一起学习自己动手打造一个Gallery吧。

首先讲述下原理,和前面一样,当我们继承PagerAdapter这个类时,一般会传入一个View类型的数组,这样在ViewPager绑定了这个适配器类时,就能将这个View数组里的View对象显示出来。在这里,View可以是一个布局,也可以是某个控件,甚至是任何继承自View的控件。所以,我们同样可以传入一个ImageView作为这个View对象啊。好,明白了原理,我们就来开始今天的学习吧!

首先来看布局代码,ViewPager是必不可少的一个控件。

    

接下来是那个百用不厌的ViewPagerAdapter类,继承自PagerAdapter:

package com.Android.ViewPager4Gallery;import java.util.ArrayList;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;public class ViewPagerAdapter extends PagerAdapter {	private ArrayList Views;//存放View的ArrayList		/*	 * ViewAdapter构造函数	 * @author:Robin	 */	public ViewPagerAdapter(ArrayList Views)	{		this.Views=Views;	}		/*	 * 返回View的个数	 */	@Override	public int getCount() 	{		if(Views!=null)		{			return Views.size();		}		return 0;	}	/*	 * 销毁View	 */	@Override	public void destroyItem(View container, int position, Object object) 	{		((ViewPager)container).removeView(Views.get(position));	}	/*	 * 初始化	 */	@Override	public Object instantiateItem(View container, int position) 	{		((ViewPager)container).addView(Views.get(position),0);		return Views.get(position);	}		/*	 * 判断View是否来自Object	 */	@Override	public boolean isViewFromObject(View view, Object object) 	{		return (view==object);	}}

然后就是核心的代码部分了,代码已经做好了注释,写得很明白,不再赘述了

package com.Android.ViewPager4Gallery;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.Menu;import android.view.View;import android.view.Window;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity implements OnPageChangeListener {	//图像资源	private int[] Resources=new int[]{R.drawable.image1,R.drawable.image2,R.drawable.image3,			R.drawable.image5,R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image10,			R.drawable.image11,R.drawable.image13,R.drawable.image16,R.drawable.image17,R.drawable.image18,			R.drawable.image19,R.drawable.image21,R.drawable.image22,R.drawable.image23,R.drawable.image24,			R.drawable.image25,R.drawable.image27,R.drawable.image28,R.drawable.image29};	//适配器	private ViewPagerAdapter mAdapter;	//View数组	private ArrayList Views;	//ViewPager	private ViewPager mViewPager;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		requestWindowFeature(Window.FEATURE_NO_TITLE);		setContentView(R.layout.activity_main);		//初始化Views		Views=new ArrayList(Resources.length);		for(int i=0;i
最终运行效果如下:

///

今天的内容就是这样了,快考试了,能写博客的时间不多咯!呵呵


>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();