欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-19 19:28:52
本文实例为大家分享了viewpager无限轮播获取网络图片的具体代码,供大家参考,具体内容如下 话不多说直接上代码,你们都懂的 小圆点属性 dot_focused.x...

本文实例为大家分享了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);
  }
 }
}

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

上一篇:

下一篇: