Android实现ViewPage轮播图效果

Android实现ViewPage轮播图效果,第1张

概述在android移动端的开发中,首页轮播图是一个特别常见的功能,所以今天就来将最近写的一个小demo记录一下。

在androID移动端的开发中,首页轮播图是一个特别常见的功能,所以今天就来将最近写的一个小demo记录一下。

首先当然是新建一个项目代码如下:

activity_main.xml文件:

<?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"  tools:context="com.yzp.vIEwpagedemo.MainActivity"  androID:background="#f6f6f6">  <!--轮播图-->  <relativeLayout    androID:ID="@+ID/topPanel_vpg"    androID:layout_wIDth="match_parent"    androID:layout_height="190dp"    >    <androID.support.v4.vIEw.VIEwPager      androID:ID="@+ID/VIEwPage_Detail"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:flipInterval="30"      androID:persistentDrawingCache="animation" />    <linearLayout      androID:ID="@+ID/point_detail"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_gravity="center"      androID:orIEntation="horizontal"      androID:layout_centerHorizontal="true"      androID:layout_alignParentBottom="true"      >    </linearLayout>  </relativeLayout></relativeLayout>

MainActivity

package com.yzp.vIEwpagedemo;import androID.content.Context;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.vIEw.VIEw;import androID.Widget.ImageVIEw;import androID.Widget.linearLayout;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {  private VIEwPager VIEwPage_Detail;  private linearLayout point_detail;  private Context context;  private VIEw vIEw;  //轮播图图片资源  private final int[] vIEwpage_images = {R.mipmap.two,R.mipmap.three,R.mipmap.four,R.mipmap.fifve};  private ArrayList<ImageVIEw> vIEwpage_imageList;  //判断是否自动滚动VIEwPage  private boolean isRunning = true;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    Instantiation();  }  public voID Instantiation() {    VIEwPage_Detail = (VIEwPager)findVIEwByID(R.ID.VIEwPage_Detail);    point_detail = (linearLayout)findVIEwByID(R.ID.point_detail);    //初始化图片资源    vIEwpage_imageList = new ArrayList<ImageVIEw>();    for (int i : vIEwpage_images) {      // 初始化图片资源      ImageVIEw imageVIEw = new ImageVIEw(this);      imageVIEw.setBackgroundResource(i);      vIEwpage_imageList.add(imageVIEw);      // 添加指示小点      ImageVIEw point = new ImageVIEw(this);      linearLayout.LayoutParams params = new linearLayout.LayoutParams(15,15);      params.rightmargin = 10;      params.bottommargin = 15;      point.setLayoutParams(params);      point.setBackgroundResource(R.mipmap.light_blue_point);      if (i == R.mipmap.two) {        //默认聚焦在第一张        point.setBackgroundResource(R.mipmap.blue_point);        point.setEnabled(true);      } else {        point.setEnabled(false);      }      point_detail.addVIEw(point);    }    //首页轮播    CarouselShow carouselShow = new CarouselShow(context,vIEwpage_imageList);    carouselShow.CarouselShow_Info_Detail(this);    handler.sendEmptyMessageDelayed(0,3000);  }  private Handler handler = new Handler() {    public voID handleMessage(Message msg) {      // 执行滑动到下一个页面      VIEwPage_Detail.setCurrentItem(VIEwPage_Detail.getCurrentItem() + 1);      if (isRunning) {        // 在发一个handler延时        handler.sendEmptyMessageDelayed(0,3000);      }    }  };  @OverrIDe  public voID onDestroy() {    // 停止滚动    isRunning = false;    super.onDestroy();  }}

CarouselShow类(轮播功能实现):

package com.yzp.vIEwpagedemo;import androID.content.Context;import androID.support.v4.vIEw.VIEwPager;import androID.Widget.ImageVIEw;import androID.Widget.linearLayout;import java.util.ArrayList;/** * 轮播展示公共类 * 作者: yzp on 2016-09-07. * E-mail: [email protected] * QQ: 486492302 */public class CarouselShow {  private final Context context;  private linearLayout point_group;  private ArrayList<ImageVIEw> vIEwpage_imageList;  protected int lastposition = 0;  private VIEwPager VIEwPage_Detail;  private linearLayout point_detail;  public CarouselShow(Context context,ArrayList<ImageVIEw> vIEwpage_imageList) {    this.context = context;    this.vIEwpage_imageList = vIEwpage_imageList;  }  /**   * 当需要多个轮播功能的时候 建立一个类来调用 并实现此方法   */  public voID CarouselShow_Info_Detail(MainActivity vIEw){    VIEwPage_Detail = (VIEwPager)vIEw.findVIEwByID(R.ID.VIEwPage_Detail);    point_detail = (linearLayout) vIEw.findVIEwByID(R.ID.point_detail);    VIEwPage_Detail.setAdapter(new TeaNetPageAdapter(vIEwpage_imageList));    // 设置当前vIEwPager的位置    VIEwPage_Detail.setCurrentItem(Integer.MAX_VALUE / 2        - (Integer.MAX_VALUE / 2 % vIEwpage_imageList.size()));    VIEwPage_Detail.setonPagechangelistener(new VIEwPager.OnPagechangelistener() {      @OverrIDe      public voID onPageSelected(int position) {        // 页面切换后调用, position是新的页面位置        // 实现无限制循环播放        position %= vIEwpage_imageList.size();        // 把当前点设置为true,将上一个点设为false;并设置point_group图标        point_detail.getChildAt(position).setEnabled(true);        point_detail.getChildAt(position).setBackgroundResource(R.mipmap.blue_point);//设置聚焦时的图标样式        point_detail.getChildAt(lastposition).setEnabled(false);        point_detail.getChildAt(lastposition).setBackgroundResource(R.mipmap.light_blue_point);//上一张恢复原有图标        lastposition = position;      }      @OverrIDe      public voID onPageScrolled(int position,float positionOffset,int positionOffsetPixels) {      }      @OverrIDe      public voID onPageScrollStateChanged(int state) {      }    });  }}

TeaNetPageAdapter(适配器):

package com.yzp.vIEwpagedemo;import androID.support.v4.vIEw.PagerAdapter;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.ImageVIEw;import java.util.ArrayList;/** * 作者: yzp on 2016-09-07. * E-mail: [email protected] * QQ: 486492302 */public class TeaNetPageAdapter extends PagerAdapter {  private ArrayList<ImageVIEw> vIEwpage_imageList;  public TeaNetPageAdapter(ArrayList<ImageVIEw> vIEwpage_imageList) {    this.vIEwpage_imageList = vIEwpage_imageList;  }  // 需要实现以下四个方法  @OverrIDe  public int getCount() {    return Integer.MAX_VALUE;  }  @OverrIDe  public boolean isVIEwFromObject(VIEw vIEw,Object object) {    // 判断vIEw和Object对应是否有关联关系    if (vIEw == object) {      return true;    } else {      return false;    }  }  @OverrIDe  public Object instantiateItem(VIEwGroup container,int position) {    // 获得相应位置上的vIEw; container vIEw的容器,其实就是vIEwpage自身,// position: vIEwpager上的位置    // 给container添加内容    container.addVIEw(vIEwpage_imageList.get(position % vIEwpage_imageList.size()));    return vIEwpage_imageList.get(position % vIEwpage_imageList.size());  }  @OverrIDe  public voID destroyItem(VIEwGroup container,int position,Object object) {    // 销毁对应位置上的Object    // super.destroyItem(container,position,object);    container.removeVIEw((VIEw) object);    object = null;  }}

简单的几个类,首页轮播的功能就实现了,不过主类的图片资源就没有贴出来了,到时候可以自己下载几张图片,贴到mipmap文件夹下就OK了。

效果图展示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:Android自定义控件实现简单的轮播图控件Android自定义控件实现优雅的广告轮播图Android ViewPager实现轮播图效果Android如何使用RecyclerView打造首页轮播图Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView控件Android开发在轮播图片上加入点击事件的方法Android实现轮播图无限循环效果Android下拉刷新与轮播图滑动冲突解决方案Android实现自定义轮播图片控件示例Android中用RxJava和ViewPager实现轮播图 总结

以上是内存溢出为你收集整理的Android实现ViewPage轮播图效果全部内容,希望文章能够帮你解决Android实现ViewPage轮播图效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存