TestDemo01

来源:互联网 发布:淘宝网络红人 编辑:程序博客网 时间:2024/06/07 17:47
//主页面布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    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.bawei.dangzhentao20170918.MainActivity">    <android.support.design.widget.TabLayout        android:id="@+id/tabs"        android:layout_width="match_parent"        android:layout_height="wrap_content"        app:tabIndicatorColor="@color/red"        app:tabMode="scrollable"        app:tabSelectedTextColor="@color/red"        app:tabTextColor="@color/black" />    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="wrap_content" /></LinearLayout>
//Fragment+PullToRefershListView布局
 
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto"        android:id="@+id/pull"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:cacheColorHint="#000000"        android:divider="#19000000"        android:dividerHeight="4dp"        android:fadingEdge="none"        android:fastScrollEnabled="false"        android:footerDividersEnabled="false"        android:headerDividersEnabled="false"        android:smoothScrollbar="true"        ptr:ptrAnimationStyle="rotate"        ptr:ptrDrawable="@mipmap/ic_launcher"        ptr:ptrHeaderBackground="@null"        ptr:ptrHeaderSubTextColor="#00ffff"        ptr:ptrHeaderTextColor="#ffffff" /></LinearLayout>
//item
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/tv"        android:layout_gravity="center"/>    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/img"/></LinearLayout>

//主方法
package com.bawei.dangzhentao20170918;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ViewPager vp;    private TabLayout tabLayout;    private String[] channels={"福利","Android","iOS","休息视频","拓展资源","前端","all"};    private String[] urls={"https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1",            "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=2",            "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=3",            "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=4",            "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=5",            "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=6",            "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=7"};    private LayoutInflater in;    private List<ChannelFragment> nview=new ArrayList<ChannelFragment>();    private ChannelFragment fragment;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        vp = (ViewPager) findViewById(R.id.vp);        tabLayout = (TabLayout) findViewById(R.id.tabs);        in = LayoutInflater.from(this);        //创建fragment        for(int i=0;i<channels.length;i++){            fragment=new ChannelFragment();            Bundle b=new Bundle();            b.putString("url",urls[i]);            fragment.setArguments(b);            nview.add(fragment);            tabLayout.addTab(tabLayout.newTab().setText(channels[i]));        }        FragmentManager fm = getSupportFragmentManager();        MyFragmentAdapter adapter = new MyFragmentAdapter(fm, nview);        vp.setAdapter(adapter);        tabLayout.setupWithViewPager(vp);        tabLayout.setTabsFromPagerAdapter(adapter);    }    class MyFragmentAdapter extends FragmentPagerAdapter{        private List<ChannelFragment> nview;        public MyFragmentAdapter(FragmentManager fm,List<ChannelFragment> nview) {            super(fm);            this.nview=nview;        }        @Override        public Fragment getItem(int position) {            return nview.get(position);        }        @Override        public int getCount() {            return nview.size();        }        @Override        public CharSequence getPageTitle(int position) {            return channels[position];        }    }}
//Fragment+PullToRefershListView代码
package com.bawei.dangzhentao20170918;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.text.format.DateUtils;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ListView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.List;/** * Created by *** on 2017/9/18. * fragment */public class ChannelFragment extends Fragment {    private String new_url;    private ListView lv;    private PullToRefreshListView pullToRefreshListView;    private Adapter adapter;    private List<Results> results;    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Bundle bundle=getArguments();        new_url = (String) bundle.get("url");    }    @Nullable    @Override    public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment, null);        pullToRefreshListView = (PullToRefreshListView) view.findViewById(R.id.pull);        new AsyncTask<String,Integer,String>(){            @Override            protected String doInBackground(String... params) {                String url=params[0];                String ss="";                URL url1=null;                HttpURLConnection httpURLConnection=null;                try {                    url1=new URL(url);                    httpURLConnection= (HttpURLConnection) url1.openConnection();                    httpURLConnection.setConnectTimeout(5000);                    httpURLConnection.setReadTimeout(5000);                    int responseCode = httpURLConnection.getResponseCode();                    if(responseCode==200){                        InputStream inputStream = httpURLConnection.getInputStream();                        int len=0;                        byte[] b=new byte[1024*1024];                        while ((len=inputStream.read(b))!=-1){                            ss+=new String(b,0,len);                        }                        inputStream.close();                    }                } catch (Exception e) {                    e.printStackTrace();                }                return ss;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                Bean bean = new Gson().fromJson(s, Bean.class);                results = bean.getNewslist();                adapter = new Adapter(getActivity(), results);                pullToRefreshListView.setAdapter(adapter);                pullToRefreshListView.onRefreshComplete();            }        }.execute(new_url);        pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {            @Override            public void onRefresh(PullToRefreshBase<ListView> refreshView) {                String label = DateUtils.formatDateTime(getActivity().getApplicationContext(), System.currentTimeMillis(),                                DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);                new AsyncTask<String,Integer,String>(){                    @Override                    protected String doInBackground(String... params) {                        String url=params[0];                        String ss="";                        URL url1=null;                        HttpURLConnection httpURLConnection=null;                        try {                            url1=new URL(url);                            httpURLConnection= (HttpURLConnection) url1.openConnection();                            httpURLConnection.setConnectTimeout(5000);                            httpURLConnection.setReadTimeout(5000);                            int responseCode = httpURLConnection.getResponseCode();                            if(responseCode==200){                                InputStream inputStream = httpURLConnection.getInputStream();                                int len=0;                                byte[] b=new byte[1024*1024];                                while ((len=inputStream.read(b))!=-1){                                    ss+=new String(b,0,len);                                }                                inputStream.close();                            }                        } catch (Exception e) {                            e.printStackTrace();                        }                        return ss;                    }                    @Override                    protected void onPostExecute(String s) {                        super.onPostExecute(s);                        Bean bean = new Gson().fromJson(s, Bean.class);                        results = bean.getNewslist();                        adapter = new Adapter(getActivity(), results);                        pullToRefreshListView.setAdapter(adapter);                        pullToRefreshListView.onRefreshComplete();                    }                }.execute(new_url);            }        });        pullToRefreshListView.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() {            @Override            public void onLastItemVisible() {                new AsyncTask<String,Integer,String>(){                    @Override                    protected String doInBackground(String... params) {                        String url=params[0];                        String ss="";                        URL url1=null;                        HttpURLConnection httpURLConnection=null;                        try {                            url1=new URL(url);                            httpURLConnection= (HttpURLConnection) url1.openConnection();                            httpURLConnection.setConnectTimeout(5000);                            httpURLConnection.setReadTimeout(5000);                            int responseCode = httpURLConnection.getResponseCode();                            if(responseCode==200){                                InputStream inputStream = httpURLConnection.getInputStream();                                int len=0;                                byte[] b=new byte[1024*1024];                                while ((len=inputStream.read(b))!=-1){                                    ss+=new String(b,0,len);                                }                                inputStream.close();                            }                        } catch (Exception e) {                            e.printStackTrace();                        }                        return ss;                    }                    @Override                    protected void onPostExecute(String s) {                        super.onPostExecute(s);                        Bean bean = new Gson().fromJson(s, Bean.class);                        List<Results> resultss = bean.getNewslist();                        results.addAll(resultss);                        adapter.notifyDataSetChanged();                        pullToRefreshListView.onRefreshComplete();                    }                }.execute(new_url);            }        });        return view;    }}

//适配器
import android.content.Context;        import android.view.View;        import android.view.ViewGroup;        import android.widget.BaseAdapter;        import android.widget.ImageView;        import android.widget.TextView;        import com.nostra13.universalimageloader.core.ImageLoader;        import com.nostra13.universalimageloader.core.assist.ImageSize;        import java.util.List;public class Myadapter extends BaseAdapter {    private List<JavaBean.ResultBean.DataBean> data;    private Context context;    public Myadapter(List<JavaBean.ResultBean.DataBean> data, Context context) {        this.data = data;        this.context = context;    }    @Override    public int getCount() {        return data.size();    }    @Override    public Object getItem(int i) {        return data.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    //判断子条目的布局      @Override    public int getItemViewType(int position) {        int re=0;        if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()!=null&&data.get(position).getThumbnail_pic_s03()!=null){            re=0;        }        else if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()!=null&&data.get(position).getThumbnail_pic_s03()==null){            re=1;        }        else if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()==null&&data.get(position).getThumbnail_pic_s03()==null){            re=2;        }        return re;    }    @Override    public int getViewTypeCount() {        return 3;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder1 holder1=null;        ViewHolder2 holder2=null;        ViewHolder3 holder3=null;        int re = getItemViewType(i);        if(re==0){            if(view==null){                view=View.inflate(context,R.layout.item1,null);                holder1=new ViewHolder1();                holder1.tv=(TextView) view.findViewById(R.id.tv);                holder1.image1=(ImageView)view.findViewById(R.id.image1);                holder1.image2=(ImageView)view.findViewById(R.id.image2);                holder1.image3=(ImageView)view.findViewById(R.id.image3);                view.setTag(holder1);            }else{                holder1= (ViewHolder1) view.getTag();            }            holder1.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate());            String thumbnail_pic_s = data.get(i).getThumbnail_pic_s();            String thumbnail_pic_s02 = data.get(i).getThumbnail_pic_s02();            String thumbnail_pic_s03 = data.get(i).getThumbnail_pic_s03();            ImageSize size=new ImageSize(100,100);            ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder1.image1,size);            ImageLoader.getInstance().displayImage(thumbnail_pic_s02,holder1.image2,size);            ImageLoader.getInstance().displayImage(thumbnail_pic_s03,holder1.image3,size);        }else if(re==1){            if(view==null){                view=View.inflate(context,R.layout.item2,null);                holder2=new ViewHolder2();                holder2.tv=(TextView) view.findViewById(R.id.tv);                holder2.image1=(ImageView)view.findViewById(R.id.image1);                holder2.image2=(ImageView)view.findViewById(R.id.image2);                view.setTag(holder2);            }else{                holder2= (ViewHolder2) view.getTag();            }            holder2.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate());            String thumbnail_pic_s = data.get(i).getThumbnail_pic_s();            String thumbnail_pic_s02 = data.get(i).getThumbnail_pic_s02();            ImageSize size=new ImageSize(100,100);            ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder2.image1,size);            ImageLoader.getInstance().displayImage(thumbnail_pic_s02,holder2.image2,size);        }else if(re==2){            if(view==null){                view= View.inflate(context,R.layout.item3,null);                holder3=new ViewHolder3();                holder3.tv=(TextView) view.findViewById(R.id.tv);                holder3.image1=(ImageView)view.findViewById(R.id.image1);                view.setTag(holder3);            }else{                holder3= (ViewHolder3) view.getTag();            }            holder3.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate());            String thumbnail_pic_s = data.get(i).getThumbnail_pic_s();            ;            ImageSize size=new ImageSize(100,100);            ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder3.image1,size);        }        return view;    }    class ViewHolder3{        TextView tv;        ImageView image1;    }    class ViewHolder2{        TextView tv;        ImageView image1;        ImageView image2;    }    class ViewHolder1{        TextView tv;        ImageView image1;        ImageView image2;        ImageView image3;    }}

//ImageLoader配置
package com.bwei.utils;import java.io.File;import android.app.Application;import android.graphics.Bitmap;import android.os.Environment;import com.bwei.main.R;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import com.nostra13.universalimageloader.core.assist.QueueProcessingType;import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;import com.nostra13.universalimageloader.core.download.BaseImageDownloader;public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(                MyApplication.this)                // max width, max height,即保存的每个缓存文件的最大宽高                .memoryCacheExtraOptions(100, 100)                // 线程池内加载的数量                .threadPoolSize(3)                .threadPriority(Thread.NORM_PRIORITY - 1)                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))                .memoryCacheSize(2 * 1024 * 1024)                .diskCacheSize(50 * 1024 * 1024)                // 将保存的时候的URI名称用MD5 加密                .diskCacheFileNameGenerator(new Md5FileNameGenerator())                .diskCacheFileCount(100)                // 自定义缓存路径                .diskCache(new UnlimitedDiskCache(new File(Environment.getExternalStorageDirectory() +"")))                .denyCacheImageMultipleSizesInMemory()                .discCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密                .tasksProcessingOrder(QueueProcessingType.FIFO)                .defaultDisplayImageOptions(getDisplayOptions())                .imageDownloader(new BaseImageDownloader(this, 5*1000, 30*1000))                //.writeDebugLogs()                .build(); //开始构建        ImageLoader.getInstance().init(config);    }    private DisplayImageOptions getDisplayOptions() {        DisplayImageOptions options;        options = new DisplayImageOptions.Builder()                .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片在下载期间显示的图片                .showImageForEmptyUri(R.mipmap.ic_launcher)// 设置图片Uri为空或是错误的时候显示的图片                .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载/解码过程中错误时候显示的图片                .cacheInMemory(true)// 设置下载的图片是否缓存在内存中                .cacheOnDisc(true)// 设置下载的图片是否缓存在SD卡中                .considerExifParams(true) // 是否考虑JPEG图像EXIF参数(旋转,翻转)                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示                .bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//                // .delayBeforeLoading(int delayInMillis)//int                // delayInMillis为你设置的下载前的延迟时间                // 设置图片加入缓存前,对bitmap进行设置                // .preProcessor(BitmapProcessor preProcessor)                .resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位                .displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角,弧度为多少                .displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间                .build();// 构建完成        return options;    }}

原创粉丝点击