利用ViewPager做最最简单的滚动视图
滚动视图已经常见到你不得不见的地步了,但是每次用这个都要上网拔两行代码是一个坏毛病,在此写一个笔记。希望能加深印象。如题最最简单的ViewPager所以高手请您绕道…………
先说遇到的问题
- 这是遇到的异常,这个异常是这样的,在xml文件中,引用ViewPager时直接使用
<ViewPager ></ViewPager>
这样问题解决了
但是,实际上应该加上包名<android.support.v4.view.ViewPager></android.support.v4.view.ViewPager>
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.paper/com.my.paper.PaperTest}: android.view.InflateException: Binary XML file line #7: Error inflating class ViewPager
问题解决了心情大好,开始往下说
来一段代码先:
<?xml version="1.0" encoding="utf-8"?>
<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">
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="300dp"></android.support.v4.view.ViewPager>
</RelativeLayout>
布局文件不详细介绍
接下来上MainActivity,这个一写就完了,特别简单
这里写代码片
//直接看代码注释就行
package com.jc100.myviewpager;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends BaseActivity {
@ViewInject(R.id.view_pager) // 注解替代仅用来findViewById();这里不是重点,但是可以简单说说,这个注解是强大的xUtils框架里的ViewUtils功能,当然很多框架都有这个功能。
ViewPager viewPager;
MyViewAdapter myViewAdapter;
private List<ImageView> imageViews;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewUtils.inject(this);// 解释过了
initView();
}
private void initView() {
imageViews = new ArrayList<>(); // 存放轮播的View
int img[] = {R.mipmap.a, R.mipmap.b, R.mipmap.c, R.mipmap.d};//这里是预先准备的四张图片
/*这个for循环不难理解吧,就是把四张图片资源给四个ImageView,再把四个ImageView放到imageViews里存起来*/
for (int i = 0; i < img.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(img[i]);
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageViews.add(imageView);
}
myViewAdapter = new MyViewAdapter(imageViews);
viewPager.setAdapter(myViewAdapter);
}
/*
其实,ViewPag用起来跟listView一样 1.初始化 2.setAdapter(myAdapter) 3. 没有了
这里看PagerAdapter时跟BaseAdapter差不多一样的使用方法
**/
class MyViewAdapter extends PagerAdapter {
private List<ImageView> imageViews;
public MyViewAdapter(List<ImageView> imageViews) {
super();
this.imageViews = imageViews;
}
@Override
public int getCount() {
return imageViews.size();// 这个就是获取需要滚动视图的个数
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//这个看图片1.0
((ViewPager) container).removeView(imageViews.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
((ViewPager) container).addView(imageViews.get(position), 0);
return imageViews.get(position);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
}
图1.0
效果
根据意见,这里贴上效果图
但是不知道怎么上传视频。。。。所以靠想象。
谢谢你的宝贵批评 希望你能指点,也希望能帮助你!
END