Viewpager

利用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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值