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

时间:2022-07-27
本文章向大家介绍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);
}
}
}

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