• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 自定义图片轮播,简单就是好用,自定义图片轮播

自定义图片轮播,简单就是好用,自定义图片轮播

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了淘宝自定义全屏轮播,淘宝自定义图片轮播,自定义轮播代码,自定义轮播,京东自定义轮播代码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

自定义图片轮播,简单就是好用,自定义图片轮播


图片轮播是一种常见的自定义控件,也有多种实现的方法,这里提供一种简单的ViewPager实现的案例。

实现功能:图片循环轮播,进度显示,图片点击事件

实现只需三步:

1 添加类文件到项目中。

2 在xml布局中引入标签。

3 实例化并设置简单参数。

具体使用方法,详见代码注释。

==================================================================

自定义java文件

package com.dashou.viewpagerimage;

import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import org.xutils.image.ImageOptions;
import org.xutils.x;

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

/**
* 自定义图片轮播控件
* 使用方法:
* 1 在xml布局中引入本包名,并设置ID,代码类中实例化此类对象。
* 2 通过setViewPager()方法设置参数(int size, List<Map<String, Object>> list)
*   size是轮播图片的数量,list需要存入图片的url地址
* 3 设置此控件的监听事件
* 注意:Demo使用xutils请求网络
* Created by dashou on 2016/3/23.
*/
public class MyViewPager extends RelativeLayout implements View.OnTouchListener, ViewPager.OnPageChangeListener {

    private ViewPager viewPager;
    //放置圆点图片的布局
    private LinearLayout image;
    //设置图片填充方式
    public ImageView.ScaleType setScaleType = ImageView.ScaleType.FIT_XY;
    //存储图片url以及点击事件需要的id等数据
    private List<Map<String, Object>> list;
    private OnViewPagerClickListener onViewPagerClickListener;
    private int num;
    private int index_img = 0;
    public long time = 3000;//设置循环间隔时间
    private boolean isContinue = true;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            index_img++;
            viewPager.setCurrentItem(index_img);
        }
    };

    public MyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    /**
     * 初始化控件
     */
    private void init() {
        viewPager = new ViewPager(getContext());
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        addView(viewPager, lp);
        image = new LinearLayout(getContext());
        image.setOrientation(LinearLayout.HORIZONTAL);
        image.setGravity(Gravity.CENTER_VERTICAL);
        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(200, 50);
        rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        rlp.addRule(RelativeLayout.CENTER_HORIZONTAL);
        addView(image, rlp);
    }

    /**
     * 设置ViewPager
     */
    public void setViewPager(int size, List<Map<String, Object>> list) {
        this.list = list;
        num = size;
        addDots(size);
        List<View> views = new ArrayList<View>();
        for (int i = 0; i < size; i++) {
            ImageView img = new ImageView(getContext());
            img.setScaleType(setScaleType);
            views.add(img);
        }
        MyViewPagerAdapter adapter = new MyViewPagerAdapter(getContext(), views);
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(this);
        viewPager.setOnTouchListener(this);
        startContinue();
    }

    /**
     * 添加进度显示
     *
     * @param size
     */
    private void addDots(int size) {
        for (int i = 0; i < size; i++) {
            LinearLayout.LayoutParams dot_lp=new LinearLayout.LayoutParams(5,30);
            dot_lp.width=0;
            dot_lp.weight = 1.0f;
            TextView tv = new TextView(getContext());
            if (i==0){
                tv.setText(i+1+"");
                tv.setTextColor(Color.RED);
            }else {
                tv.setText(i+1+"");
                tv.setTextColor(Color.BLUE);
            }
            image.addView(tv,dot_lp);
        }
    }

    //重置图片状态按钮
    private void resetDots(int id){
        for (int i = 0; i < list.size(); i++) {
            ((TextView)(image.getChildAt(i))).setTextColor(Color.BLUE);
        }
        ((TextView)(image.getChildAt(id))).setTextColor(Color.RED);
    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
     &nbs

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 自定义图片轮播,简单就是好用,自定义图片轮播

相关文章

  • 2017-05-26【Android】第7章(2)--布局控件常用的公共属性,android第7章
  • 2017-05-26Intent(三)向下一个活动传递数据,intent传递
  • 2017-05-26Android java层音频相关的分析与理解(三)调用相关
  • 2017-05-26Android 判断当前语言环境是否是中文环境,android中文
  • 2017-05-26MySQL高可用组件MHA参数详解
  • 2017-05-26Android--判断是否连接成功了指定wifi,android--wifi
  • 2017-05-26android studio 中去除应用标题栏,androidstudio
  • 2017-08-0258同城Android端HTTPS实践之旅
  • 2017-05-26Android与H5互调(通过实例来了解Hybrid App),androidhybrid
  • 2017-05-26android support的作用及其常见错误的解决,androidsupport

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android学习第五篇——动画效果
    • Android Studio多渠道打包,androidstudio打包
    • Android开发艺术探索学习笔记(十一),android艺术探索
    • Android-Universal-Image-Loader (图片异步加载缓存库)的源码解读
    • AndRodi Strudio中的按钮时件,androdistrudio
    • 《Android Studio实用指南》7.1 AndroidStudio代码检查工具概述
    • [android] 手机卫士自定义控件的属性,android卫士
    • android studio导入PullToRefresh教程
    • Java虚拟机 JVM,java虚拟机jvm
    • android:Activity数据传递之对象(Serializable)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有