您的位置:首页 > 理论基础 > 计算机网络

Android中ConvenientBanner的使用--获取网络图片 --(实现效果是自动轮播图片)

2017-09-15 08:31 1081 查看
一.首先添加依赖

compile'com.bigkoo:convenientbanner:2.0.5'

                           compile'com.github.bumptech.glide:glide:3.6.0'








二.首先获取本地图片 

1.在MainActivity中:
public class MainActivity extends AppCompatActivity {
private String[] images = {
"http://img2.3lian.com/2014/f2/37/d/40.jpg",

"http://img2.3lian.com/2014/f2/37/d/39.jpg",
"http://www.8kmm.com/UploadFiles/2012/8/201208140920132659.jpg",
"http://f.hiphotos.baidu.com/image/h%3D200/sign=1478eb74d5a20cf45990f9df460b4b0c/d058ccbf6c81800a5422e5fdb43533fa838b4779.jpg",
"http://f.hiphotos.baidu.com/image/pic/item/09fa513d269759ee50f1971ab6fb43166c22dfba.jpg"
};
//轮播下面的小点(小圆点是本地的,自己导入的图片)
private int[] indicator = {R.drawable.b1, R.drawable.b2};
private ConvenientBanner convenientBanner;
//图片加载地址的集合
private List<String> bean;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

convenientBanner = (ConvenientBanner) findViewById(R.id.convenientBanner);

bean = Arrays.asList(images);
convenientBanner.setPointViewVisible(true)
//设置小点
.setPageIndicator(indicator);
//允许手动轮播
convenientBanner.setManualPageable(true);
//设置自动轮播的时间
convenientBanner.startTurning(2000);
//设置点击事件
//泛型为具体实现类ImageLoaderHolder
convenientBanner.setPages(new CBViewHolderCreator<NetImageLoadHolder>() {
@Override
public NetImageLoadHolder createHolder() {
return new NetImageLoadHolder();
}
}, bean);

//设置每个pager的点击事件
convenientBanner.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(int position) {
Toast.makeText(MainActivity.this, "点击了" + convenientBanner.getCurrentItem(), Toast.LENGTH_SHORT).show();
}
});
}

public class NetImageLoadHolder implements Holder<String> {
private ImageView image_lv;

//可以是一个布局也可以是一个Imageview
@Override
public ImageView createView(Context context) {
image_lv = new ImageView(context);
image_lv.setScaleType(ImageView.ScaleType.FIT_XY);

return image_lv;

}

@Override
public void UpdateUI(Context context, int position, String data) {
//Glide框架
Glide.with(context).load(data).into(image_lv);

}

}
}


2.MainActivity的布局文件:



<com.bigkoo.convenientbanner.ConvenientBanner
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/convenientBanner"
android:layout_width="match_parent"
android:layout_height="200dp"
app:canLoop="true"
/>



需要在xml清单文件里面配置网络权限:

<uses-permission android:name="android.permission.INTERNET"/>


=================================================================================
解析json串获得图片链接的代码

public class MainActivity extends AppCompatActivity {
//轮播下面的小点(小圆点是本地的,自己导入的图片)
private int[] indicator = {R.drawable.b1, R.drawable.b2};
private ConvenientBanner convenientBanner;
private List<String>  list;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Jiexi();

findViewById(R.id.tiao).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);

}
});

}

private void add() {
convenientBanner = (ConvenientBanner) findViewById(R.id.convenientBanner);

// bean = Arrays.asList(images);
convenientBanner.setPointViewVisible(true)
//设置小点
.setPageIndicator(indicator);
//允许手动轮播
convenientBanner.setManualPageable(true);
//设置自动轮播的时间
convenientBanner.startTurning(2000);
//设置点击事件
//泛型为具体实现类ImageLoaderHolder
convenientBanner.setPages(new CBViewHolderCreator<NetImageLoadHolder>() {
@Override
public NetImageLoadHolder createHolder() {
return new NetImageLoadHolder();
}
}, list);

//设置每个pager的点击事件
convenientBanner.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(int position) {
Toast.makeText(MainActivity.this, "点击了" + convenientBanner.getCurrentItem(), Toast.LENGTH_SHORT).show();
}
});
}

private void Jiexi() {
new AsyncTask<String, Integer, String>(){

//一般基本最少写这俩种方法

//doInBackground 方法
@Override
protected String doInBackground(String... params) {
//打开连接

String str="";
try {
URL url= new URL("http://apis.juhe.cn/cook/query?key=dd452181a9ca8ee5710d153538a4b8d6&menu=%E8%A5%BF%E7%BA%A2%E6%9F%BF&rn=10&pn=1");

HttpURLConnection conne=(HttpURLConnection) url.openConnection();
//设置时间

Log.d("zzz", "走没走!!!!");
conne.setReadTimeout(5000);
conne.setConnectTimeout(5000);
int responseCode = conne.getResponseCode();
//判断
if (responseCode==200) {

InputStream in = conne.getInputStream();
byte[] by=new byte[1024];
int len=0;

while ((len=in.read(by))!=-1) {

str+=new String(by,0,len);

}

}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return str;
}

//onPostExecute方法
protected void onPostExecute(String result) {
Log.d("zzz", result);
Gson gson = new Gson();
Prioer p = gson.fromJson(result, Prioer.class);
List<Prioer.ResultBean.DataBean.StepsBean> data = p.getResult().getData().get(0).getSteps();

//图片加载地址的集合
list=new ArrayList<String>();
for(int i=0;i<data.size();i++){

String img = data.get(i).getImg();

list.add(img);

}
add();
super.onPostExecute(result);
};

//这一步必须要写execute()
}.execute();

}

public class NetImageLoadHolder implements Holder<String> {
private ImageView image_lv;

//可以是一个布局也可以是一个Imageview
@Override
public ImageView createView(Context context) {
image_lv = new ImageView(context);
image_lv.setScaleType(ImageView.ScaleType.FIT_XY);

return image_lv;

}

@Override
public void UpdateUI(Context context, int position, String data) {
//Glide框架
Glide.with(context).load(data).into(image_lv);

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐