Android viewpager无限轮播获取网络图片功能

本文实例为大家分享了viewpager无限轮播获取网络图片的具体代码,供大家参考,具体内容如下

话不多说直接上代码,你们都懂的

小圆点属性

dot_focused.xml

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

dot_normal.xml

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

dot_layout.xml  

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <View android:id="@+id/scrollView" android:layout_width="8dp" android:layout_height="8dp" android:layout_margin="3dp" android:background="@drawable/dot_normal" /> </LinearLayout>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/ll" android:layout_marginTop="450dp" android:orientation="horizontal" android:gravity="center" android:layout_width="match_parent" android:layout_height="20dp"/> </RelativeLayout>

以上是布局

下面src代码

import android.content.Intent; import android.os.AsyncTask; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import com.bwie.bean.SuperClass; import com.bwie.utils.NetWorkUtils; import com.bwie.utils.URLDB; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private Button bt; private LinearLayout layout; private List<SuperClass.ResultBean.DataBean> data; private NetWorkUtils netWorkUtils = new NetWorkUtils();//实例化工具类 private List<ImageView>imgs = new ArrayList<ImageView>();//图片的集合 private List<View> dots = new ArrayList<View>(); //小圆点集合 private int i = 0; private int dot = 0; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); viewPager.setCurrentItem(i); dots.get(dot).setBackgroundResource(R.drawable.dots_normal); dots.get(i%imgs.size()).setBackgroundResource(R.drawable.dots_focus); dot=i%imgs.size(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //异步网络请求 new AsyncTask<String,Integer,String>(){ @Override protected String doInBackground(String... params) { String json = netWorkUtils.getJsonHttpConnetion(URLDB.URL_IJ); return json; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); SuperClass superClass = new Gson().fromJson(s, SuperClass.class); data = superClass.getResult().getData(); init();//初始化方法 } }.execute(); } //初始化方法 private void init() { viewPager = (ViewPager) findViewById(R.id.viewPager); layout = (LinearLayout) findViewById(R.id.ll); getImgs();//获取图片 getDots();//获取小圆点 //viewPager适配器 viewPager.setAdapter(new PagerAdapter() { @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { int i = position % imgs.size(); ImageView imageView = imgs.get(i); imageView.setScaleType(ImageView.ScaleType.FIT_XY); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); //设置初始化位置 i = imgs.size()*10; //得到位置 viewPager.setCurrentItem(i); //设置第一个圆点为true dots.get(0).setBackgroundResource(R.drawable.dots_focus); //timer自动轮播 Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { i = viewPager.getCurrentItem() + 1; handler.sendEmptyMessage(i); } },1,2000); } //图片的方法 private void getImgs() { for(int i = 0;i<data.size();i++){ List<SuperClass.ResultBean.DataBean.StepsBean> steps = data.get(i).getSteps(); String url = steps.get(0).getImg(); ImageView img = new ImageView(this); img.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(url,img); imgs.add(img); } } //小圆点的方法 private void getDots() { for(int i=0;i<imgs.size();i++){ View view = LayoutInflater.from(this).inflate(R.layout.dot_item,null); View viewById = view.findViewById(R.id.scrollView); dots.add(viewById); layout.addView(view); } } }

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

时间: 2024-10-25 04:02:36

Android viewpager无限轮播获取网络图片功能的相关文章

Android图片无限轮播的实现代码_Android

本文实例为大家分享了AnAndroid图片无限轮播的具体代码,供大家参考,具体内容如下 public class MainActivity extends Activity { private ViewPager viewPager; private LinearLayout ll_dot; private String[] imageUrls = new String[] { "yun_qi_img/block.gif", "yun_qi_img/block.gif&quo

Android图片无限轮播的实现代码

本文实例为大家分享了AnAndroid图片无限轮播的具体代码,供大家参考,具体内容如下 public class MainActivity extends Activity { private ViewPager viewPager; private LinearLayout ll_dot; private String[] imageUrls = new String[] { "http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg&

Android ViewPager实现轮播图效果

先上一张效果图: 说到ViewPager实现轮播图效果,那么肯定会用到PagerAdapter,下面先介绍下这个类. PagerAdapter简介 PagerAdapter是Android.support.v4包中的类,是一个抽象类,直接继承于Object,导入包android.support.v4.view.PagerAdapter即可使用. PagerAdapter主要是viewpager的适配器,而viewPager则也是在android.support.v4扩展包中新添加的一个强大的控件

Android中用RxJava和ViewPager实现轮播图_Android

前言 很多人要实现轮播图都会想到使用ViewPager + Handler来完成轮播图的效果.但是在RxJava快速发展的情况下,已经可以使用RxJava来代替Handler完成这样任务了. 下面我们就来介绍如何实现RxJava+ViewPager的轮播图. 效果图如下 ViewPager的操作 说到ViwePager应该大家都不陌生,它可以结合普通的View也可以结合Fragment一起使用.在此我也就不对它的使用方法进行过多的介绍了.直接开始介绍轮播的方法. 常见的轮播操作 private

Android实现图片轮播效果的两种方法_Android

大家在使用APP的过程中,经常会看到上部banner图片轮播的效果,那么今天我们就一起来学习一下,android中图片轮询的几种实现方法: 第一种:使用动画的方法实现:(代码繁琐) 这种发放需要:两个动画效果,一个布局,一个主类来实现,不多说了,来看代码吧: public class IamgeTrActivity extends Activity { /** Called when the activity is first created. */ public ImageView image

IOS使用UICollectionView实现无限轮播效果_IOS

一.案例演示 本案例Demo演示的是一个首页轮播的案例,支持手动轮播和自动轮播.知识点主要集中在UICollectionView和NSTimer的使用. 二.知识储备 2.1.UICollectionView横向布局 只需要设置UICollectionViewFlowLayout的scrollDirection为UICollectionViewScrollDirectionHorizontal即可. 2.2.NSTimer的基本使用 NSTimer的初始化: 复制代码 代码如下:  + (NST

Android实现图片轮播切换实例代码_Android

利用Android的ViewFlipper和AnimationUtils实现图片带有动画的轮播切换,其中当点击"上一张"图片时,切换到上一张图片:当点击"下一张"图片时,切换到下一张图片.其效果图如下: 设置布局文件,其内容如下: activity_image_flipper_shade.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xm

Android 使用ViewPager实现轮播图效果

写这篇文章只是对今天所学的知识进行加深印象,对ViewPager的一些处理,比如适配器和各个方法的作用等. 先看效果图 这里我是在xml中写的圆点 Drawable文件夹下的xml代码: Shape_yes.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">

Android实现自定义轮播图片控件详解_Android

首先上效果图 实现原理 要完成一个轮播图片,首先想到的应该是使用ViewPager来实现.ViewPager已经有了滑动的功能,我们只要让它自己滚动.再加上下方的小圆点就行了.所以我们本次的自定义控件就是由ViewPager和LinearLayout叠加起来组成的. 一.创建一个自定义的ViewPager 先上完整的代码 package com.kcode.autoscrollviewpager.view; import android.content.Context; import andro