文档章节

ViewPager的一个简单示例,这个比较乱(20)

f
 flyqilong
发布于 2016/02/27 22:14
字数 716
阅读 42
收藏 0
//布局
<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" >

    <TextView
        android:id="@+id/show_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#88000000"
        android:gravity="center"
        android:textColor="#fff"
        android:textSize="25sp" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/show_info" />

</RelativeLayout>
//代码
public class MainActivity extends Activity implements OnPageChangeListener {
	private TextView show_info;
	private ViewPager viewpager;
	private MypagerAdapter adapter;
	private List<View> imgList = new ArrayList<View>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 获取arrays中的资源对象
		// 第二种方式
		TypedArray typedArray = getResources().obtainTypedArray(R.array.img);
		for (int i = 0; i < typedArray.length(); i++) {
			ImageView imageview = new ImageView(this);
			imageview.setImageDrawable(typedArray.getDrawable(i));
			// 当到一个集合中,方便销毁时调用
			imgList.add(imageview);

		}
		show_info = (TextView) this.findViewById(R.id.show_info);
		viewpager = (ViewPager) this.findViewById(R.id.viewpager);
		// adapter = new MypagerAdapter();//第一种
		adapter = new MypagerAdapter(imgList);// 第二种
		viewpager.setAdapter(adapter);

		// 显示头部的提示当前多少也,总页数
		show_info.setText(1 + "/" + adapter.getCount());
		// 实现监听方法
		viewpager.setOnPageChangeListener(this);

	}

	// 使用ViewPager必须要继承PagerAdapter 或者FragmentPagerAdapter
	class MypagerAdapter extends PagerAdapter {
		// 设置数据源 :图片资源
		// 两种方式设置资源 :1.定义资源数组 2.arrays.xml定义————》drawable view
		// 第一种方法
		private int[] img = { R.drawable.car0, R.drawable.car1,
				R.drawable.car2, R.drawable.car3, R.drawable.car4,
				R.drawable.car5, R.drawable.car6, R.drawable.car7, };
		private List<View> imgList;

		@Override
		public int getCount() {
			// return img.length;
			return this.imgList.size();
		}

		public MypagerAdapter(List<View> imgList) {
			this.imgList = imgList;
		}

		public MypagerAdapter() {
		}

		@Override
		public boolean isViewFromObject(View view, Object obj) {
			// 判断当前的视图是否是一个对象,官方文档建议这样写
			return view == obj;
		}

		// 下面两个方法要自己手动重写
		@Override
		// ,每次滑动时都会调用,实例化当前视图。把一个view放在当前的ViewPager位置中
		public Object instantiateItem(ViewGroup container, int position) {
			// 第一种:
			// // 上下文可以上面传进来,也可以用下面的方式获取
			// ImageView imageview = new ImageView(container.getContext());
			// imageview.setImageResource(img[position]);
			// // 记得要把imageview放进当前container(属于pagerVeiw)
			// container.addView(imageview);
			// // 并且记得返回视图
			// return imageview;
			// 第二种;方式
			container.addView(this.imgList.get(position));
			return this.imgList.get(position);

		}

		@Override
		// 销毁滑出去的view,position和当前位置相差1左右,(有缓存)考虑滑回去的缓存
		public void destroyItem(ViewGroup container, int position, Object object) {
			// 如果用图片资源数组无法销毁,所以建议用arrays.xml定义资源,放进一个list集合方便删除
			// super.destroyItem(container, position, object);
			// 第一种方式实现时要把super这个去掉,否则会报错
			// 第二种:
			container.removeView(this.imgList.get(position));// 用arrays.xml定义资源一定要销毁,否则回报错
		}
	}

	@Override
	// 页面滚动的状态改变
	public void onPageScrollStateChanged(int state) {
		switch (state) {
		case ViewPager.SCROLL_STATE_DRAGGING:// 拖动状态

			break;
		case ViewPager.SCROLL_STATE_IDLE:// 停止状态

			break;
		case ViewPager.SCROLL_STATE_SETTLING:// 处于自动滚动时状态

			break;
		}

	}

	@Override
	// 参数:1、位置,2、位置 的偏移量,3、位置偏移量的像素
	public void onPageScrolled(int position, float positionOffset,
			int positionOffsetPixel) {

	}

	@Override
	public void onPageSelected(int position) {
		// 设置显示滑动当前的位置改变
		show_info.setText((position + 1) + "/" + adapter.getCount());
	}
}
//数组文件
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <array name="img">
        <item>@drawable/car0</item>
        <item>@drawable/car1</item>
        <item>@drawable/car2</item>
        <item>@drawable/car3</item>
        <item>@drawable/car4</item>
        <item>@drawable/car5</item>
        <item>@drawable/car6</item>
        <item>@drawable/car7</item>
    </array>

</resources>


© 著作权归作者所有

共有 人打赏支持
f
粉丝 3
博文 93
码字总数 53900
作品 0
Android工程师
ViewPager不能高度自适应?height=wrap_content 无效解决办法

/* http://my.oschina.net/lifj/blog/283346 */ ViewPager用的很多,主要用啦展示广告条。可是高度却不能自适应内容,总是会占满全屏,即使设置android:height="wrap_content"也是没有用的。...

拉风的道长
2014/06/24
0
9
用ViewPager实现欢迎引导页面

ViewPager需要android-support-v4.jar这个包的支持,来自google提供的一个附加包。大家搜下即可。 ViewPager主要用来组织一组数据,并且通过左右滑动的方式来展示。 现在的大多数应用都会有一...

zt1212
2012/10/15
0
1
android中ViewPager详解--视图滑动、界面卡等效果 (一)

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一。利用它,我们可以做很多事情,从最简单的导航,到页面菜单...

一别经年
2014/01/21
0
0
Android 打造一个丝滑的自动轮播控件

现在很多的 App 都有自动轮播的 banner 界面,用于展示广告图片或者显示当前比较热门的一些活动,除了具备比较酷炫的效果之外,通过轮播的方式来减少对界面的占用,也是很赞的一个设计点。本...

developerHaoz
08/08
0
0
Android ViewPager使用详解

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等...

Remix_jx
2014/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

kernel version does not match DSO version

错误信息: kernel version 384.11 does not match DSO version 384.130.0 原因是: cuda driver版本太低,不匹配DSO 简单有效的修复方法,升级nvidia driver, 步骤如下: 1. google seach ...

刘小米
今天
0
0
maven坐标和依赖

一、maven坐标详解 <groupId>com.fgt.club</groupId><artifactId>club-common-service-facade</artifactId><version>3.0.0</version><packaging>jar</packaging> maven的坐标元素说......

老韭菜
今天
1
0
springmvc-servlet.xml配置表功能解释

问:<?xml version="1.0" encoding="UTF-8" ?> 答: xml version="1.0"表示是此xml文件的版本是1.0 encoding="UTF-8"表示此文件的编码方式是UTF-8 问:<!DOCTYPE beans PUBLIC "-//SPRING//......

隐士族隐逸
今天
1
0
基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
今天
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部