Viewpager实现小圆点无限轮播

Android 自动无限轮播的轮播图(附源码)(通过InfiniteShufflingViewPager解决冲突) 轮播图是绝大多数的项目都要实现的功能,因为比较常用且并不复杂,所以出现了各种各样的轮播图,今天就做一个可以自动无限轮播的轮播图。废话不多说,直接进入正题。 注:文章末尾附项目源码下载链接。 效果展示 主要功能包括:通过Handler实现自动无限轮播、小圆点背景选择器、InfiniteShufflingViewPager解决冲突、轮播图数量... 阅读详情

//Main
package com.example.viewpagerw;

import java.util.ArrayList;

import com.lidroid.xutils.view.annotation.event.OnTouch;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class MainActivity extends Activity {

	private ViewPager vp;
	private int[] strimage = new int[] { R.drawable.icon1, R.drawable.icon2,
			R.drawable.icon3, R.drawable.icon4, R.drawable.icon5 };
	private LinearLayout ll;
	private ArrayList<ImageView> listImage;
	private Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case 0:
				int currentItem = vp.getCurrentItem();
				currentItem++;
				vp.setCurrentItem(currentItem);
				handler.sendEmptyMessageDelayed(0, 1000);
				break;

			default:
				break;
			}
		};
	};

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

		info();
		vp.setAdapter(new PagerAdapter() {

			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				return arg0 == arg1;
			}

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

			@Override
			public Object instantiateItem(ViewGroup container, int position) {
				ImageView iv = new ImageView(MainActivity.this);

				iv.setImageResource(strimage[position % strimage.length]);

				container.addView(iv);

				return iv;
			}

			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				container.removeView((View) object);
			}
		});
		vp.setCurrentItem(strimage.length * 5000);

		vp.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
				// TODO Auto-generated method stub
				for (int i = 0; i < listImage.size(); i++) {
					if (i == arg0 % strimage.length) {
						listImage.get(i).setImageResource(R.drawable.noml);
					} else {
						listImage.get(i).setImageResource(R.drawable.fnoml);
					}

				}

			}

			@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

			}
		});
		handler.sendEmptyMessageDelayed(0, 1000);
	}

	private void info() {
		listImage = new ArrayList<ImageView>();
		listImage.clear();
		for (int i = 0; i < strimage.length; i++) {
			ImageView iv = new ImageView(MainActivity.this);

			if (i == 0) {
				iv.setImageResource(R.drawable.noml);
			} else {
				iv.setImageResource(R.drawable.fnoml);
			}
			LayoutParams param = new LayoutParams(10, 10);
			param.setMargins(5, 0, 5, 5);
			listImage.add(iv);
			ll.addView(iv, param);

		}
	}

}


//Layout


<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.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/vp"/>
    <LinearLayout
        android:layout_alignBottom="@+id/vp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="20dp"
        android:layout_alignParentRight="true"
        android:gravity="center_horizontal"
        android:id="@+id/ll"></LinearLayout>

</RelativeLayout>

//drawable   一个亮的圆     和一个不亮的圆

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <corners android:radius="9dp"/>
    <solid android:color="#88000000"/>

</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <corners android:radius="9dp"/>
    <solid android:color="#FFF"/>

</shape>


自定义控件由浅到深(二)实现ViewPager滑动时的小圆点变化 在我的之前两个博客有介绍ViewPager的使用和简述自定义控件,但在ViewPager的使用中,我没有添加当ViewPager滑动状态改变时,下方小原点跟随变化的效果并没有实现。实现小圆点这种效果的方法有很有种,这一篇博客主要是为了深入的研究自定义View,那这里我给大家做一个利用自定义View来实现ViewPager滑动时的小圆点变化的例子。      通过这个例子,引申出: 阅读详情

相关推荐

Android viewpager打造带小圆点的引导页

Android ViewPager实现带小圆点的引导页 废话直接省略 上运行图,(这里博主不会录gif动态图。。) 第一页 第二页 第三页,这里一共就三页,所以我们需要在第三页加上立即体验按钮 在点击立即体验的时候,我们 就会有这样一个思想,这是第一次进入我们的程序,我们会加载引导页,那我们加载完引导页,第二次就不让他加载了。对于这个实现其实也很简单,博主这里使用的是Sha...

迟到的微笑 4244

Android 带圆点的自动轮播

要实现这个功能很简单,首先,循环创建和图片一样数量的圆点,判断设置第一个圆点为白色其他的为透明的, [java] view plain copy for(int i = 0;i             ImageView iv = new ImageView(MainActivity.this);               //循环创建小圆

tasty 399

THUCNews新闻文本分类-tfidf+sklearn

本文使用的是和鲸社区现有数据集,代码也在和鲸社区公开,fork之后可以直接运行。 本文中所用的数据集清华NLP组提供的THUCNews新闻文本分类数据集的一个子集(原始的数据集大约74万篇文档,训练起来需要花较长的时间)。 本次训练使用了其中的体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐10个分类,每个分类6500条,总共65000条新闻数据。项目在和鲸社区的平台上跑的,数据集直接引用了和鲸的数据集,每个分类6500条,总共65000条新闻数据。 数据集划分如下: cnews

wmq104的博客 4590

Android 超简单自动无限轮播图

Android 超简单自动无限轮播图LoopView 只需要你传入数据就可以了 效果图 demo地址 https://github.com/wanghao200906/Android-LoopView效果实现1.添加依赖库 2.添加到xml< com.kevin.loopview.AdLoopView android:id=”@+id/main_act_adloo

魑魅魍魉9527 4976

在C++中,NULL和nullptr有什么区别?

这两个定义导致了冲突,C++中的NULL如果和C语言一样也是(void *)0指针,而C++不允许void*隐式转换成其它指针类型,那NULL就无法表示空指针了。因此,使用 nullptr可以增加代码的清晰性,避免类型安全问题。即使在混合C++和C代码时,nullptr也提供了一个明确无误的空指针表示,达到兼容的目的。C++11 引入 nullptr 彻底解决了这些问题,提高语言的安全性、清晰性和现代性。在了解NULL和nullptr背后的故事之后,相信大家以后再也不会用NULL了。

hebhljdx的博客 678

利用Arcgis发布wmts服务

使用发布 GIS 服务连接连接到 ArcGIS Server 站点后,可以将各种 GIS 资源(如地图文档、数据库以及服务定义)发布到服务器上。此外,还可以添加、删除、启动和停止服务。使用管理 GIS 服务器连接到 ArcGIS Server 站点后,可以编辑各种服务器属性,例如配置存储位置、集群配置、参与到该站点中的计算机列表以及管理站点的数据存储。通过使用 GIS 服务连接建立连接后,可以查看并使用发布到该站点的服务。但不能编辑服务器或服务属性、发布服务,也不能添加、删除、启动、停止或暂停服务。

ghgfsasxda的博客 2392

ViewPager中代码动态的添加小圆点作为指示器indicator,以及实现无限轮播

1.首先我们需要一个相对布局装一个线性布局的容器和一个白色的小点作为选中的标识,用灰点表示未选中的情况。 <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height

haowei0708的博客 2533

GWAS与eQTL相结合,进一步筛选疾病相关基因

欢迎关注”生信修炼手册”!在GWAS分析结果中,大部分显著的SNP位点都位于非编码区,很难直接挖掘这些位点的调控机制。通常假设与疾病关联的SNP位点通过调控基因表达来发挥作用,而eQTL...

庐州月光的博客 1万+

ViewPager实现无限轮播+小圆点

在布局中:         android:id="@+id/viewpager"         android:layout_width="wrap_content"         android:layout_height="wrap_content" >                 android:id="@+id/linearlayout"      

qq_36119607的博客 312

VSCode搭配Keil开发STM32:从环境配置到代码跳转全流程(避坑指南)

本文详细介绍了如何使用VSCode搭配Keil进行STM32开发,从环境配置到代码跳转的全流程指南。通过安装必备插件和正确配置项目文件,开发者可以在VSCode中享受现代编辑器的便捷功能,同时保留Keil的编译调试能力,提升嵌入式开发效率。

weixin_28832121的博客 253

芒果YOLO11改进59:分类损失函数Loss篇FocalLoss:即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 548

viewpager无限轮播,画小圆点,小圆点的布局

首先在布局中写viewpager控件 activity_main.xml  下面linearlayout是小圆点的布局 [html] view plain copy android.support.v4.view.ViewPager         android:id="@+id/viewPager"         android:layout_grav

zuimeirensheng的博客 260

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2340

绘制轮播图小圆点

绘制轮播图的小圆点 一、绘制圆点 灰色圆点 首先在res目录下创建drawable目录 然后创建根节点为shape的dots_normal.xml文件 如下: <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > //选择

sfy666666的博客 3795

AI人工智能 Agent:在仓储物流中的应用

AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 860

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

viewpager添加小圆点的方法

第一步:在drawable中创建shape文件,制作小圆点 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <shape xmlns:android="http://schemas.andro

fish89757的博客 1001

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

viewpager实现轮询效果

import android.content.Context; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.viewpager.widget.PagerAdapter; import java.util.List; .

qq_26787409的博客 261

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

viewpager+小圆点

//选择器     android:shape="rectangle">              //主布局     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height

oceanisblue的博客 235

ViewPager无限轮播

activity_main 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="mat

L59_1的博客 678

ViewPager带小圆点的自动轮播

实现ViewPager自动无限轮播,如下效果图;请求网络上的数个图片地址使用xutils显示图片; [img]http://dl2.iteye.com/upload/attachment/0120/0142/e4831e21-1c45-3237-b32c-91c5c321d6b9.jpg[/img] 1 首先需要绘制小圆点,小圆点最后需要使用ImageView控件进行显示,ImageView控...

iteye_17948的博客 264

ViewPager无线轮播

package animtest.com.example.e531.zixun_tostudent; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; imp

AbyssalMagic的博客 313

ViewPager简单使用(四)实现图片轮播

在很多软件中,我们都会看到图片轮播的效果。如图:首先在布局文件中添加viewpager控件activity_main.xml&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"...

hua93的博客 384

Android 开发中的应用:ViewPager无限轮播(网络图片,小圆点)

MainActivity: package animtest.com.example.e531.zixun_tostudent; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app....

baipenggui_bo 423

android ViewPager(广告条)

1,实现效果 viewPager实现效果 ,handler实现轮播。小圆点自己绘制 2,实现逻辑 【1】布局声明 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tool...

Cricket_7的博客 364

Android初学者入门———————无限自动轮播和小圆点使用

一:首先来实现无限自动轮播,无限轮播无非也是三要素,控件、数据、适配器         1、控件                <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="wrap_content" android:layout_heigh

androidyhr的博客 481

android 网络请求轮播,Android viewpager无限轮播获取网络图片功能

本文实例为大家分享了viewpager无限轮播获取网络图片的具体代码,供大家参考,具体内容如下话不多说直接上代码,你们都懂的小圆点属性dot_focused.xmldot_normal.xmldot_layout.xmlandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation...

weixin_42515014的博客 219
上一篇: Zxing
下一篇: android 清除缓存
有志青年L
博客等级 码龄10年 30粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值