HttpURLConnection网络解析+universalimageloader解析图片+XListView刷新、加载+无限轮播

来源:互联网 发布:js表格中输入数据 编辑:程序博客网 时间:2024/05/16 03:20
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.bw.yuekao_lainxi.MainActivity">    <android.support.v4.view.ViewPager        android:id="@+id/pager"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_weight="1"/>    <RadioGroup        android:id="@+id/rg"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_weight="9"        android:orientation="horizontal">        <RadioButton            android:id="@+id/rb1"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:textSize="20sp"            android:text="我的"/>        <RadioButton            android:id="@+id/rb2"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:textSize="20sp"            android:text="信息"/>        <RadioButton            android:id="@+id/rb3"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:textSize="20sp"            android:text="中心"/>        <RadioButton            android:id="@+id/rb4"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:textSize="20sp"            android:text="我的"/>    </RadioGroup></LinearLayout>
fragment1.xml
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/drawer"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ListView        android:id="@+id/lv"        android:layout_width="240sp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="#fff"        android:choiceMode="singleChoice"        android:divider="#f00"        android:dividerHeight="1dp"        android:entries="@array/books" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="7">            <android.support.v4.view.ViewPager                android:id="@+id/viewPager"                android:layout_width="match_parent"                android:layout_height="match_parent" />            <LinearLayout                android:id="@+id/dotContainer"                android:layout_width="match_parent"                android:layout_height="40dp"                android:layout_alignParentBottom="true"                android:gravity="center"                android:orientation="horizontal" />        </RelativeLayout>        <ListView            android:id="@+id/lv1"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="3" />    </LinearLayout></android.support.v4.widget.DrawerLayout>


doc_select.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android">    <size        android:width="10dp"        android:height="10dp" />    <solid android:color="#ff0000" />    <corners android:radius="5dp" /></shape>
doc_select_no.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android">    <size        android:width="10dp"        android:height="10dp" />    <solid android:color="#00ff00" />    <corners android:radius="5dp" /></shape>
MainActivity
package com.bw.yuekao_lainxi;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.RadioButton;import android.widget.RadioGroup;import com.bw.fragment.Fragment01;import com.bw.fragment.Fragment02;import com.bw.fragment.Fragment03;import com.bw.fragment.Fragment04;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private List<Fragment> listFrag = new ArrayList<>();    private Fragment01 fragment01 = new Fragment01();    private Fragment02 fragment02 = new Fragment02();    private Fragment03 fragment03 = new Fragment03();    private Fragment04 fragment04 = new Fragment04();    private ViewPager pager;    private RadioGroup rg;    private RadioButton rb1,rb2,rb3,rb4;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listFrag.add(fragment01);        listFrag.add(fragment02);        listFrag.add(fragment03);        listFrag.add(fragment04);        pager = (ViewPager) findViewById(R.id.pager);        rg = (RadioGroup) findViewById(R.id.rg);        pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {            @Override            public Fragment getItem(int position) {                return listFrag.get(position);            }            @Override            public int getCount() {                return listFrag.size();            }        });        pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                switch (position){                    case 0:                        rg.check(R.id.rb1);                        break;                    case 1:                        rg.check(R.id.rb2);                        break;                    case 2:                        rg.check(R.id.rb3);                        break;                    case 3:                        rg.check(R.id.rb4);                        break;                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, int checkedId) {                switch (checkedId){                    case R.id.rb1:                        pager.setCurrentItem(0);                        break;                    case R.id.rb2:                        pager.setCurrentItem(1);                        break;                    case R.id.rb3:                        pager.setCurrentItem(2);                        break;                    case R.id.rb4:                        pager.setCurrentItem(3);                        break;                }            }        });    }}
Fragment01第一个Fragment
package com.bw.fragment;import android.os.AsyncTask;import android.os.Handler;import android.os.Message;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v4.widget.DrawerLayout;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import com.bw.adapter.MyPagerAdapter;import com.bw.bean.ComicsBean;import com.bw.bean.DataBean;import com.bw.bean.SuperClass;import com.bw.utils.NetWork;import com.bw.yuekao_lainxi.R;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;/** * Created by  */public class Fragment01 extends Fragment {    private static final String JSON = "";    private DrawerLayout drawerLayout;    private ListView lv,lv1;    private ViewPager viewPager;    private MyPagerAdapter pagerAdapter;    private List<ComicsBean> listPager;    private LinearLayout dotContainer;    private NetWork netWork = new NetWork();    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (msg.what == 0){                int currentItem = viewPager.getCurrentItem();                viewPager.setCurrentItem(currentItem+1);                handler.sendEmptyMessageDelayed(0,3000);            }        }    };    private List<ImageView> imgList;    private List<String> list = new ArrayList<>();    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment1, null);        lv = (ListView) view.findViewById(R.id.lv);        lv1 = (ListView) view.findViewById(R.id.lv1);        viewPager = (ViewPager) view.findViewById(R.id.viewPager);        dotContainer = (LinearLayout) view.findViewById(R.id.dotContainer);        init();        return view;    }    private void init() {        new AsyncTask<String,Integer,String>(){            @Override            protected String doInBackground(String... params) {                String jsonStr = netWork.getStringJson(JSON);                return jsonStr;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                //解析数据                SuperClass superClass = new Gson().fromJson(s, SuperClass.class);                DataBean data = superClass.getData();                listPager = data.getComics();                list.clear();                for (int i=0;i<listPager.size();i++){                    list.add(listPager.get(i).getCover_image_url());                }                //初始化小圆点                initDoc();                pagerAdapter = new MyPagerAdapter(getActivity(),list);                viewPager.setAdapter(pagerAdapter);                viewPager.setCurrentItem(list.size()*10000);                handler.sendEmptyMessageDelayed(0,3000);                viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {                    @Override                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                    }                    @Override                    public void onPageSelected(int position) {                        for (int i=0;i<imgList.size();i++){                            if (i == position%imgList.size()){                                imgList.get(i).setImageResource(R.drawable.doc_select);                            }else {                                imgList.get(i).setImageResource(R.drawable.doc_select_no);                            }                        }                    }                    @Override                    public void onPageScrollStateChanged(int state) {                    }                });            }        }.execute();    }    private void initDoc() {        imgList = new ArrayList<>();        dotContainer.removeAllViews();        imgList.clear();        for (int i=0;i<list.size();i++){            ImageView imageView = new ImageView(getActivity());            if (i == 0){                imageView.setImageResource(R.drawable.doc_select);            }else {                imageView.setImageResource(R.drawable.doc_select_no);            }            //添加到集合            imgList.add(imageView);            //添加到线性布局            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);            params.setMargins(5,0,5,0);            dotContainer.addView(imageView,params);        }    }}
MyPagerAdapter自动轮播适配器
package com.bw.adapter;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.view.ViewParent;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by on 2017/9/21. */public class MyPagerAdapter extends PagerAdapter {    private Context context;    private List<String> list;    public MyPagerAdapter(Context context, List<String> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view == object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView imageView = new ImageView(context);        imageView.setScaleType(ImageView.ScaleType.FIT_XY);        //加载图片        ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView);        ViewParent parent = imageView.getParent();        if(parent != null){            ViewGroup viewGroup = (ViewGroup) parent;            viewGroup.removeAllViews();        }        container.addView(imageView);        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}
工具类:解析数据
package com.bw.utils;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;/** * Created by */public class NetWork {    //HttpURLConnection解析Json数据    public String getStringJson(String jsonUrl){        //声明        URL url = null;        HttpURLConnection httpURLConnection = null;        InputStream inputStream = null;        String str = "";        try {            //获取网址            url = new URL(jsonUrl);            //打开网址            httpURLConnection = (HttpURLConnection) url.openConnection();            //获取请求码            int code = httpURLConnection.getResponseCode();            //判断请求码            if (code == 200){                //解析                inputStream = httpURLConnection.getInputStream();                byte[] b = new byte[1024];                int len = 0;                //循环解析                while ((len = inputStream.read(b)) != -1){                    str += new String(b,0,len);                }            }        } catch (Exception e) {            e.printStackTrace();        } finally {            if (inputStream != null){                try {                    inputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return str;    }}
工具类:解析图片
package com.bw.utils;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by */public class ImageWork extends Application {    @Override    public void onCreate() {        super.onCreate();        //创建ImageLoaderConfiguration        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)                .memoryCacheExtraOptions(200,400)                .build();        //初始化ImageLoader        ImageLoader.getInstance().init(config);    }}
阅读全文
0 0