效果展示:
注意:imageloader 工具包的地址:com.nostra13.universalimageloader:universal-image-loader:1.9.5
总体布局:
listview 单个条目的布局:
主Activity 代码(部分):
listview 获取数据:
//异步请求
public void getData(String url){
new AsyncTask<String,Void,String>(){
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s==null){
return;
}
Gson gson=new Gson();
Health health=gson.fromJson(s,Health.class);
list=health.getResult().getData();
//将数据绑定到适配器上
adapter=new MyAdapter(list,MainActivity.this);
listView.setAdapter(adapter);
}
@Override
protected String doInBackground(String... strings) {
try {
String path=strings[0];
URL url=new URL(path);
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
int code=connection.getResponseCode();
if(code==200){
InputStream stream=connection.getInputStream();
return Tools.readFromNet(stream);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(url);
}
轮播图片的适配器:
class MyPagerAdapter exts 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) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView=new ImageView(MainActivity.this);
ImageLoader.getInstance().displayImage(imageList.get(position%imageList.size()),imageView,MyApp.getOptions());
container.addView(imageView);
return imageView;
}
}
轮播图片的自动转换功能:
private void AutoPlay(){
new Thread(){
@Override
public void run() {
super.run();
while (true){
try {
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
index++;
handler.sEmptyMessage(0);
}
}
}.start();
}
轮播图片的加载图片:
private void InitView(){
viewPager= (ViewPager) findViewById(R.id.viewpager);
layout= (LinearLayout) findViewById(R.id.layout);
viewPager.setAdapter(new MyPagerAdapter());
for(int i=0;i<imageList.size();++i){
View view=new View(this);
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(30,30);
//设置控件间距
params.rightMargin=10;
params.leftMargin=10;
view.setLayoutParams(params);
if(i==0){
view.setBackgroundResource(R.mipmap.ic_launcher);
}else{
view.setBackgroundResource(R.mipmap.ic_launcher_round);
}
layout.addView(view);
}
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
layout.getChildAt(position%imageList.size()).setBackgroundResource(R.mipmap.ic_launcher_round);
layout.getChildAt(oldPosition%imageList.size()).setBackgroundResource(R.mipmap.ic_launcher);
oldPosition=position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
oncreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView= (ListView) findViewById(R.id.listview);
//viewPager= (ViewPager) findViewById(R.id.viewpager);
imageList= Arrays.asList("http://cdn.duitang.com/uploads/blog/201308/18/20130818150526_Ru2Bk.thumb.600_0.png",
"http://www.bkill.com/u/info_img/2012-09/02/2012083116140522302.jpg",
"http://www.it165.net/uploadfile/2011/1218/20111218070928328.jpg");
InitView();
AutoPlay();
getData("http://japi.juhe.cn/health_knowledge/infoList?key=4a640cbc3cc59a07cbd945e1d2432e7a");
}
MyApplication用于从网路获取图片并加载:
public class MyApp exts Application {
@Override
public void onCreate() {
super.onCreate();
String path= Environment.getExternalStorageDirectory()+"1507D";
File file=new File(path);
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)
.threadPriority(100)
.threadPoolSize(5)
.memoryCacheExtraOptions(480,800)
.memoryCacheSize(2*1024*1024)
.diskCache(new UnlimitedDiskCache(file))
.diskCacheSize(50*1024*1024)
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.build();
ImageLoader.getInstance().init(configuration);
}
public static DisplayImageOptions getOptions(){
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
return options;
}
}
Tools工具类,使listview获取数据:
public class Tools {
public static String readFromNet(InputStream stream){
try {
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
byte[]arr=new byte[1024];
int len=0;
while((len=stream.read(arr))!=-1){
outputStream.write(arr,0,len);
}
return outputStream.toString();
} catch (Exception e) {
e.printStackTrace();
} return null;
}
}