关闭

ViewPager轮播

标签: viewpager
117人阅读 评论(0) 收藏 举报
分类:

package com.example.day_12_viewpager;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class MainActivity extends Activity {
String[] path = new String[] {
http://imgs.juheapi.com/comic_xin/zbfOxNfWRA==/5010/6-NTAxMDY=.jpg“,
http://imgs.juheapi.com/comic_xin/zbfOxNfWRA==/5010/16-NTAxMDE2.jpg“,
http://imgs.juheapi.com/comic_xin/zbfOxNfWRA==/5010/23-NTAxMDIz.jpg“,
http://imgs.juheapi.com/comic_xin/zbfOxNfWRA==/5010/59-NTAxMDU5.jpg” };
private LinearLayout ll;
//记录小圆点的位置
int lastIndex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

    ViewPager vp = (ViewPager) findViewById(R.id.vp);

    ll = (LinearLayout) findViewById(R.id.ll);

    vp.setAdapter(new MyPagerAdapter(path, this));

    vp.setCurrentItem(Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2
            % path.length);

    vp.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {



          //取出正确的角标
            int index = arg0 % path.length;
            //取出LinearLayout里当前的imageView
            ImageView imageView = (ImageView) ll.getChildAt(index);
            imageView.setEnabled(false);

            ImageView lastImageView = (ImageView) ll.getChildAt(lastIndex);
            lastImageView.setEnabled(true);

            //记录当前圆点位置,做为下一次执行onPageSelected方法,变黑的ImageView的位置
            lastIndex=index;


        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });

    setPonit();

}

/**
 * 添加小圆点
 */
private void setPonit() {

    // 小圆点要与图片的个数一致
    for (int i = 0; i < path.length; i++) {
        // 创建imageView
        ImageView imageView = new ImageView(this);
        // 设置小圆点的资源文件
        imageView.setBackgroundResource(R.drawable.backcolor);
        // LayoutParams对象的类型,取决于该控件的父控件类型
        LayoutParams layoutParams = new LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        // 设置有右间距
        layoutParams.rightMargin = 15;
        // 设置imageView的属性
        imageView.setLayoutParams(layoutParams);
        //初始化第一个小点的颜色
        if (i == 0) {
            imageView.setEnabled(false);
        }
        // 把imageView添加到父控件
        ll.addView(imageView);

    }

}

}
//适配器
/**
*
*/
package com.example.day_12_viewpager;

import com.lidroid.xutils.BitmapUtils;

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

/**
* @author WJL
*
*/
public class MyPagerAdapter extends PagerAdapter {
String[] path;
Context context;
BitmapUtils bitmapUtils;

/**
 * @param path
 */
public MyPagerAdapter(String[] path, Context context) {

    this.path = path;
    this.context = context;

    // Xutils里请求网络图片的工具类
    bitmapUtils = new BitmapUtils(context);

}

@Override
public int getCount() {
    return Integer.MAX_VALUE;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {

    ImageView imageView = new ImageView(context);

    int i = position % path.length;

    bitmapUtils.display(imageView, path[i]);

    container.addView(imageView);

    return imageView;

}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    // TODO Auto-generated method stub
    return arg0 == arg1;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    // TODO Auto-generated method stub
    // super.destroyItem(container, position, object);

    container.removeView((View) object);

}

}
//XML文件
xmlns:android=”http://schemas.android.com/apk/res/android”
android:shape=”oval”
>

<solid android:color="#000"/>


xmlns:android=”http://schemas.android.com/apk/res/android”
android:shape=”oval”
>

<solid android:color="#f00"/>

<item android:state_enabled="true"  android:drawable="@drawable/enabledtrue"></item>
<item android:state_enabled="false"  android:drawable="@drawable/enabledfalse"></item>

0
0
查看评论

Android ViewPager无限自动轮播

ViewPager android support v4 中的控件 布局当中用全包名的类名声明 android.support.v4.view.ViewPager viewpager依赖数据,通过setAdapter()设置数据 AdaptergetCount(): 返回的是 返回的是显示的页面数量...
  • confusing_awakening
  • confusing_awakening
  • 2017-06-27 18:03
  • 746

ViewPager真正的无限轮播

前言:ViewPager无限轮播功能,是指ViewPager轮播永远无法到头的功能.该功能是Android项目中一些比较常用的功能,我们在实现的时候,一般是通过设置ViewPager展示的个数是Integer.MAX_VALUE来搞定,有人提出这种方式不好,那我们来一起学习一种真正的轮播方式请关注刘...
  • zhiyuan0932
  • zhiyuan0932
  • 2016-09-26 19:28
  • 63692

ViewPager无限轮播与自定义切换动画

一直在寻求一个能用得长久的ViewPager,寻寻觅觅终于发现,ViewPager有这一个就够了。
  • chen413203144
  • chen413203144
  • 2017-01-05 20:36
  • 835

使用ViewPager实现图片轮播效果(绝对好使)

首选扯点别的:今天晚上感觉膝盖特别疼,也是很艰难,现在才9月份,就得开始带护膝,以后估计不能穿牛仔裤了。装不进护膝啊!但还是得坚持学习。这是不是叫身残志坚啊。今天写的是一个图片轮播的实现,参考了一篇文章,不吹不黑,实现效果不咋得,名字叫做“十分钟写一个Android轮播控件“,结果我写了大约一天的时...
  • leilifengxingmw
  • leilifengxingmw
  • 2016-09-08 22:00
  • 910

Android使用ViewPager实现图片的轮播

一.概述在现在的Android项目中,首页图片轮播是随处可见的,今天我们看看如何实现,先看效果图:二.实现先给大家看看最简单的布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&quo...
  • Small_Lee
  • Small_Lee
  • 2016-03-02 11:24
  • 5167

Android使用ViewPager实现左右循环滑动及轮播效果

ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验。此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑...
  • dyllove98
  • dyllove98
  • 2014-11-11 17:03
  • 87584

ViewPager真正实现无限轮播(偷梁换柱法,切换无回滚)

首先思路图 布局 代码如下 package com.itheima.activity; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPag...
  • ergoui
  • ergoui
  • 2016-07-12 20:01
  • 408

ViewPager自动轮播,手指按住停止轮播

前面写了ViewPager添加指示器,无限轮播,自动轮播。但是自动轮播有一个问题就是手指按住后要停止轮播才行。
  • student9128
  • student9128
  • 2016-10-14 18:31
  • 1626

ListView布局嵌套Viewpager+gridview创建无限轮播+分类

写了一个市面上大多数应用都用到的布局的demo,方便新手学习上手,老鸟可以忽略了。 轮播有两种实现方式,都写在了里面,大家可以选择性的参考 demo下载地址:
  • chniccs
  • chniccs
  • 2016-02-23 14:32
  • 1647

自定义ViewPager实现图片自动轮播无限循环

Viewpager图片自动轮播无限循环是Android开发中经常用到的功能,功能实现起来也比较简单。虽然如此,但是很多情况下做出来的效果并不太让人满意,甚至有些上线的项目自动轮播上也会出现一些bug。比如切换过程中出现空白页面,有些甚至在滑动过程中造成程序崩溃。本篇文章将实现ViewPager图片自...
  • qq_20521573
  • qq_20521573
  • 2016-07-26 17:33
  • 10013
    个人资料
    • 访问:17355次
    • 积分:402
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档