package com.baway.com.guolonggang1503a20170504.utils; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * 这是ViewPager实现轮播的工具类(使用接口回调) */ public class UtilsBanner extends AsyncTask<String,Void,Bitmap>{ @Override protected Bitmap doInBackground(String... params) { try { String path = params[0]; URL url = new URL(path); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("GET"); httpURLConnection.setReadTimeout(5000); httpURLConnection.setConnectTimeout(5000); int code = httpURLConnection.getResponseCode(); if (code == 200) { InputStream is = httpURLConnection.getInputStream(); return BitmapFactory.decodeStream(is); } } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if(bitmap!=null) { callImage.ImageBitmap(bitmap); } } public interface callImage { void ImageBitmap(Bitmap bitmap); } private callImage callImage; public UtilsBanner(callImage callImage) { this.callImage = callImage; } }
//主MainActivity
package com.example.viewpagerbanner;
import android.graphics.Bitmap; import android.os.Handler; import android.os.Message; import android.os.SystemClock; 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.View; import android.view.ViewGroup; import android.widget.ImageView;
import com.example.viewpagerbanner.utils.ImageLoadAsyncTask;
import java.util.ArrayList; import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewPager vp; private List<String> imgUrl; private int currentPosition = 33; private Handler handler = new Handler(){
@Override public void handleMessage(Message msg) { super.handleMessage(msg); //页面更换操作 vp.setCurrentItem(currentPosition);
} };
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
initData();
vp = (ViewPager) findViewById(R.id.vp); vp.setAdapter(new MyPagerAdapter());
autoPlay();
} //定时轮播 private void autoPlay() {
new Thread(){ @Override public void run() { super.run(); while (true) { SystemClock.sleep(3000); currentPosition++; handler.sendEmptyMessage(0);
}
} }.start();
}
private void initData() {
//准备网络图片 imgUrl = new ArrayList<>();
//注意这里的图片是网络上的图片 imgUrl.add("http://20.1.5.104:8080/tomcat.png"); imgUrl.add("http://20.1.5.104:8080/tomcat-power.gif"); imgUrl.add("http://20.1.5.104:8080/beautiful.jpg");
}
class MyPagerAdapter extends PagerAdapter{
@Override public int getCount() { return Integer.MAX_VALUE; }
@Override public boolean isViewFromObject(View view, Object object) { return view == object; }
@Override public void destroyItem(ViewGroup container, int position, Object object) { //super.destroyItem(container, position, object); container.removeView((View) object);
}
@Override public Object instantiateItem(ViewGroup container, int position) { //执行网络加载 final ImageView imageView = new ImageView(MainActivity.this);
//执行图片加载操作 new ImageLoadAsyncTask(new ImageLoadAsyncTask.ImageCallBack() { @Override public void callBitmap(Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
} }).execute(imgUrl.get(position % imgUrl.size()));//imgUrl.get(position % imgUrl.size() 取出图片地址
container.addView(imageView);
return imageView; }
}
}