banner轮播图
来源:互联网 发布:龙虎榜数据每天几点出 编辑:程序博客网 时间:2024/05/17 02:28
Mainactivity
package com.example.bannerdemo;
import android.graphics.Bitmap;
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.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.example.bannerdemo.utils.LoadImageAsyncTask;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewPager vp;
private List<String> imgeAddress = new ArrayList<String>();
private int index = 0;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//UI操作
switch (msg.what){
case 1:
{
//界面切换
vp.setCurrentItem(index);
}
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//准备好网络图片地址
imgeAddress.add("http://img.juhe.cn/cookbook/s/1/45_c25e0cedd2012f45.jpg");
imgeAddress.add("http://img.juhe.cn/cookbook/s/1/45_eb68327980f022dd.jpg");
imgeAddress.add("http://img.juhe.cn/cookbook/s/1/45_8e0cf83cb7306281.jpg");
vp = (ViewPager) findViewById(R.id.vp);
//设置适配器
vp.setAdapter(new MyPageAdapter());
//开始轮播
autoPlay();
}
class MyPageAdapter extends PagerAdapter{
@Override
public int getCount() {
return Integer.MAX_VALUE;//2的31次方减1
}
@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 LoadImageAsyncTask(new LoadImageAsyncTask.ImageCallBackListener() {
@Override
public void imageCallBack(Bitmap bitmap) {
System.out.println("回调了--->");
if(bitmap != null){
imageView.setImageBitmap(bitmap);
}else{
imageView.setImageResource(R.mipmap.ic_launcher);
}
}//position % imgeAddress.size() 这个是取模,//position ++ 2的31 减一次方为止 0,1,2
}).execute(imgeAddress.get(position % imgeAddress.size()));
//添加到container
container.addView(imageView);
return imageView;
}
}
/**
* 轮播
*/
private void autoPlay(){
new Thread(){
@Override
public void run() {
super.run();
while (true){
index++;//index++ 1 ++index 1-> 2
//vp.setCurrentItem(index % imgeAddress.size());
int index1 = index % imgeAddress.size();
System.out.println("循环 : "+index1);
try { Thread.sleep(3000);} catch (InterruptedException e) { e.printStackTrace(); }//sleep 睡觉 UI不工作了
//发送消息
handler.sendEmptyMessage(1);
}
}
}.start();
}
}
LoadImageAsyncTask 获取图片
package com.example.bannerdemo.utils;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Created by rookie on 2017/7/11.
*/
public class LoadImageAsyncTask extends AsyncTask<String,Void,Bitmap> {
//1.定义一个监听(接口)
public interface ImageCallBackListener{
void imageCallBack(Bitmap bitmap);
}
//构造方法
public LoadImageAsyncTask(ImageCallBackListener imageCallBackListener){
this.imageCallBackListener = imageCallBackListener;
}
//定义变量接收调用者所传递过来的监听对象
private ImageCallBackListener imageCallBackListener;
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
System.out.println("数据解析完成-->");
//回调图片对象
imageCallBackListener.imageCallBack(bitmap);
}
@Override
protected Bitmap doInBackground(String... params) {
try {
String path = params[0];
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
//服务器响应
int code = connection.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
InputStream is = connection.getInputStream();
return BitmapFactory.decodeStream(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
- 轮播图banner
- banner轮播图
- banner轮播图
- banner轮播图
- Banner轮播图
- Banner轮播图
- Banner轮播图
- Banner轮播图
- Banner轮播图
- Banner轮播图
- Banner轮播图
- banner轮播图
- Banner 轮播图
- 左右轮播图,banner
- banner轮播图的实现
- Banner (android 轮播图)
- banner—轮播图
- appframework实现Banner轮播图
- nodejs开发中关于post提交数据
- setters和getters方法
- linux命令中:wq和:wq!区别
- LCD MIPI DSI简析系列之二
- ES6常用语法
- banner轮播图
- [数论]线性求所有逆元的方法
- 慢查询日志详解
- 实现简单的万年历
- fatfs 学习笔记--f_write用法(最新版本R0.13)
- nginx缓存页面+cookie后 串会话问题
- Code[vs] 1506传话(tarjan缩点)
- UVA 116 Unidirectional TSP(动态规划)
- PreparedStatement和Statement的区别