Android无限轮播
春岁永年 2017-08-24 11:01:32 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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.bwie.yuekaolianxithree.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="200dp"
/>
<Button
android:id="@+id/button"
android:layout_below="@+id/viewPager"
android:layout_marginTop="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
MainActivity:
无限轮播的Activity
package com.bwie.yuekaolianxithree;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
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.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.HttpURLConnection;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private String baseUrl = "http://v.juhe.cn/toutiao/index?type=top&key=dbedecbcd1899c9785b95cc2d17131c5";
private ViewPager viewPager;
private Button button;
private ArrayList<String> list;
private ArrayList<MySuper.ResultBean.DataBean> datas;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
sendEmptyMessageDelayed(1,2000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
button= (Button) findViewById(R.id.button);
list = new ArrayList<>();
MyAsyncTask task=new MyAsyncTask();
task.execute(baseUrl);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
//无限轮播
public void wuxianlunbo() {
MyPager myPager=new MyPager();
viewPager.setAdapter(myPager);
handler.sendEmptyMessageDelayed(1,3000);
}
//异步加载图片
class MyAsyncTask extends AsyncTask {
@Override
protected Object doInBackground(Object[] params) {
String url_base = (String) params[0];
String allStr = "";
try {
URL url = new URL(url_base);
HttpURLConnection con= (HttpURLConnection) url.openConnection();
con.setReadTimeout(5 * 1000);
con.setConnectTimeout(5 * 1000);
int code = con.getResponseCode();
if (code == 200) {
InputStream is = con.getInputStream();
byte[] by = new byte[1024];
int length = 0;
while ((length = is.read(by)) != -1) {
String str = new String(by, 0, length);
allStr += str;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return allStr;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
String getjson = (String) o;
Gson gson = new Gson();
MySuper mySuper = gson.fromJson(getjson, MySuper.class);
datas = mySuper.getResult().getData();
for (MySuper.ResultBean.DataBean da : datas) {
String thumbnail_pic_s = da.getThumbnail_pic_s();
list.add(thumbnail_pic_s);
}
//无限轮播
wuxianlunbo();
}
}
//viewPager适配
class MyPager extends 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 index=position%list.size();
View view=View.inflate(MainActivity.this,R.layout.wuxianlunbo,null);
ImageView imageView= (ImageView) view.findViewById(R.id.wuxianimage);
ImageLoader.getInstance().displayImage(list.get(index),imageView);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
}
MySuper:
package com.bwie.yuekaolianxithree;
import java.util.ArrayList;
public class MySuper {
private String reason;
private ResultBean result;
private int error_code;
public MySuper(String reason,ResultBean result,int error_code) {
this.reason = reason;
this.result = result;
this.error_code = error_code;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public ResultBean getResult() {
return result;
}
public void setResult(ResultBean result) {
this.result = result;
}
public int getError_code() {
return error_code;
}
public void setError_code(int error_code) {
this.error_code = error_code;
}
public static class ResultBean{
private ArrayList<DataBean> data;
private int stat;
public ResultBean(ArrayList<DataBean> data,int stat) {
this.data = data;
this.stat = stat;
}
public ArrayList<DataBean> getData() {
return data;
}
public void setData(ArrayList<DataBean> data) {
this.data = data;
}
public int getStat() {
return stat;
}
public void setStat(int stat) {
this.stat = stat;
}
public static class DataBean{
private String title;
private String thumbnail_pic_s;
public DataBean(String title,String thumbnail_pic_s) {
this.title = title;
this.thumbnail_pic_s = thumbnail_pic_s;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getThumbnail_pic_s() {
return thumbnail_pic_s;
}
public void setThumbnail_pic_s(String thumbnail_pic_s) {
this.thumbnail_pic_s = thumbnail_pic_s;
}
}
}
}
wuxianlunbo.xml:::
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/wuxianimage"
android:src="@mipmap/ic_launcher"
android:layout_width="200dp"
android:layout_height="200dp"
/>
</LinearLayout>
MyApp:
package com.bwie.yuekaolianxithree;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class MyApp extends Application{
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration con=ImageLoaderConfiguration.createDefault(getApplicationContext());
ImageLoader.getInstance().init(con);
}
}
注意:要加3权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />