vp适配器

package zhanghaijiao.bawei.com.my1601r_3;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import java.util.List;

/**
 * Created by jane on 2018/4/23.
 */

public class MyVpAdapter extends PagerAdapter {

private Context context;
    private List<String>  urls;
    private DisplayImageOptions options;

public MyVpAdapter(Context context,List<String> urls) {
        this.context = context;
        this.urls=urls;
        //.displayer(new RoundedBitmapDisplayer(100))//设置图片的圆角 注意:控件必须要设定宽度与高度
        this.options=new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式  1px=2个字节  ARGB_8888 1px=4个字节   ARGB_4444 1px=2个字节  ALPHA_8 1px=1个字节
                .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
                .build();

}

//页面的数量
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;//无限个
    }

@Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

//装载页面 1,添加内容  2.返回一个与当前页面相关联的key(Object类型)
    @Override
    public Object instantiateItem(ViewGroup container, int position) {

ImageView imageView=new ImageView(context);

//设置图片的缩放方式
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);//平铺

//下载网络图片
        ImageLoader.getInstance().displayImage(urls.get(position%urls.size()),imageView,options);

//添加组件
        container.addView(imageView);

return imageView;
    }

//销毁页面
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
       // super.destroyItem(container, position, object);
        container.removeView((View) object);//删除
    }

}

Mainactivity

package zhanghaijiao.bawei.com.my1601r_3;

import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

private List<String> imgUrls=new ArrayList<>();
    private ViewPager viewPager;
    private List<ImageView> lists=new ArrayList<>();

private Handler mHandler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

int cindex=viewPager.getCurrentItem();
            cindex++;
            //设置当前页面
            viewPager.setCurrentItem(cindex);

//调用方法
            setSelectedImage(cindex%imgUrls.size());

//再次发送消息
            sendEmptyMessageDelayed(1,1000);

}
    };
    private LinearLayout linPoint;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewPager = findViewById(R.id.vp);
        linPoint = findViewById(R.id.linPoint);

//初使化
        initData();

MyVpAdapter adapter=new MyVpAdapter(this,imgUrls);
        viewPager.setAdapter(adapter);

//默认显示的页面
        viewPager.setCurrentItem(imgUrls.size()*10);

//延迟发送消息
        mHandler.sendEmptyMessageDelayed(1,1000);

}

private void initData() {
        imgUrls.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151721118&di=649c9a43aed72fbc4d99ec1a031510c6&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F015c7d574b9f8f6ac72525aee98351.jpg");
        imgUrls.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151956771&di=0eb6f306991d24b67a13ceb336f80102&imgtype=0&src=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F00613def3f1beb7a35ae136341be2b589bc46a2d.jpg_320x200.jpg");
        imgUrls.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151847685&di=c7a4b5d08ec43fa629bcb690039a7629&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_080625%2F20080625_2e91a10c444877e88827vri2ZKdGMvQo.jpg");
        imgUrls.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151825129&di=70bf74b87d8a15cb91a2d79f15ed0eaf&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_081016%2F20081016_fee215664d5740e56c13E2YB8giERFEX.jpg");
        imgUrls.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505746504&di=930c4d677a02328a142d6fa85ed14580&imgtype=jpg&er=1&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_090113%2F20090113_6ac58b42bea94f0b318e1B6BZb5lPZl5.jpg");

//动态添加小圆点指示器
        for (int i = 0; i <imgUrls.size() ; i++) {
            ImageView imageView=new ImageView(this);
            if(i==0){
                imageView.setImageResource(R.drawable.point_selected);
            }else {
                imageView.setImageResource(R.drawable.point_mormal);
            }

linPoint.addView(imageView);

//添加到集合中
            lists.add(imageView);

}

}

/**
     * 改变小圆点的图片
     * @param pageIndex 页面下标
     */
    private void setSelectedImage(int pageIndex){
        for (int i = 0; i <lists.size() ; i++) {
            if(i==pageIndex){
                lists.get(i).setImageResource(R.drawable.point_selected);//设置为选中的
            }else {
                lists.get(i).setImageResource(R.drawable.point_mormal);
            }

}
    }
}

viewpage无限轮播相关推荐

  1. android画廊效果的轮播图,ViewPage实现无限轮播画廊效果

    1. 效果图 2. 布局文件 主要使用的 android:clipChildren的意思:是否限制子View在其范围内.再父布局和viewpager中设置该属性  ,要显示三个界面 ,还要设置marg ...

  2. iOS开发之ImageView复用实现图片无限轮播

    在上篇博客中iOS开发之多图片无缝滚动组件封装与使用给出了图片无限轮播的实现方案之一,下面在给出另一种解决方案.今天博客中要说的就是在ScrollView上贴两个ImageView, 把ImageVi ...

  3. 【Swift】自定义控件无限轮播 + 无限图片轮播

    CocoaPods安装 pod 'PGBannerSwift' 复制代码 使用 1.无限图片轮播 首先引入import PGBannerSwift let banner = PGBanner(fram ...

  4. Banner 自动无限轮播(普通)

    例题:Banner自动无限轮播 build.gradle中加入(加在最下面):compile 'com.youth.banner:banner:1.4.10' 添加之后需要点击右上角的   Sync ...

  5. ViewPager两种方式实现无限轮播

    给自己的忠告:虽然轮子很好用,但是使用轮子的前提是:如果不去封装一些复杂的功能,自己会用最基本的方法写一个,不然再好的轮子那也是别人的,当自己项目遇到和轮子不一样的地方,那就只能束手无策或者改人家的源 ...

  6. 无限轮播图片的实现原理

    无限轮播图相信是很多开发人员常用的一个功能,这里总结一下常用的两种方式的实现原理 一.使用UIScrollview实现无限轮播 用UIScrollView实现,在scrollView上添加3个UIIm ...

  7. 用JavaScript实现网页无限轮播图效果,附整套源码

    用JavaScript实现无限轮播图效果(附源码) javascript群内每日课题-今日课题:用JavaScript实现无限轮播图效果 PS:很多企业通用的案例自己再学习过程中肯定是要熟练的,所以今 ...

  8. 利用RecyclerView实现无限轮播广告条

    代码地址如下: http://www.demodashi.com/demo/14771.html 前言: 公司产品需要新增悬浮广告条的功能,要求是可以循环滚动,并且点击相应的浮条会跳转到相应的界面,在 ...

  9. iOS 两种不同的图片无限轮播

    代码地址如下: http://www.demodashi.com/demo/11608.html 前记 其实想写这个关于无限轮播的记录已经很久很久了,只是没什么时间,这只是一个借口,正如:时间就像海绵 ...

最新文章

  1. 【scratch】实用作品方案:微信抽奖机,Scratch编程教育作品
  2. [ SAP ]MM Valuation System
  3. Delphi各个版本和发展历史
  4. 云小课 | IPv4枯了,IPv6来了
  5. 又开火了!马斯克炮轰贝佐斯:建议分拆亚马逊!
  6. 为什么做的报表领导不满意,如何提升报表的价值?
  7. 命令行批量修改IP并ping测试
  8. 欧姆龙PLC数据读写工具。 支持FinsTCP实测好用打开欧姆龙PLC读写软件,输入IP地址和端口号
  9. Polynomial Commitments代码实现【1】——scipr-lab/poly-commit(含不同曲线性能对比)
  10. 2021SC@SDUSC Zxing开源代码(十二)Aztec二维码(一)
  11. Error (10200):错误的另一种可能
  12. H3C网络设备模拟器配置VLAN-Hybrid
  13. python 跨行字符串_python字符串结束的标志_python-7-字符串的操作_方法_format_列表的操作...
  14. 微服务开发中的数据架构设计 1
  15. 磁盘占用率100%——多番尝试
  16. 抖音电子画册教程html,抖音爆火文字视频制作教程
  17. 使用nsis制作的安装包安装后,无法卸载干净的问题
  18. 程序员面试100题之六 最长公共子序列
  19. html视频怎么改大小,视频画面尺寸重置-视频画面大小调整的方法哪个好,视频尺寸怎么修改...
  20. 蓝牙BLE5.1手柄方案

热门文章

  1. 1.Python下载与安装教程 For Windows
  2. JUC Striped64
  3. draggrid简单用法
  4. 攻防世界writeup
  5. SSR(服务端渲染)
  6. 微信小程序改变页面背景颜色
  7. 世纪标准-海岸试验数据管理系统(海岸TDM)
  8. Gazebo载入模型问题汇总
  9. 英语听力自动断句程序
  10. MySQL中添加新字段