自动轮播图片+列表展示数据

网站UI设计

  效果展示:

  注意: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;

   }

  }

标签: 网站UI设计