fragment加导航栏Tablayout,网络请求轮播图,shape画图,网络请求数据xlistview,and 分页,加drawerlayout侧滑

MainActivity页面

package bwie.com.zhoukao3moni1.activity;

import android.graphics.Color;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;

import java.util.ArrayList;

import bwie.com.zhoukao3moni1.R;
import bwie.com.zhoukao3moni1.adapter.MyFragmentAdapter;
import bwie.com.zhoukao3moni1.baseclass.BaseActivity;
import bwie.com.zhoukao3moni1.fragment.Fragment1;
import bwie.com.zhoukao3moni1.fragment.Fragment2;
import bwie.com.zhoukao3moni1.fragment.Fragment3;
import bwie.com.zhoukao3moni1.fragment.Fragment4;
import bwie.com.zhoukao3moni1.fragment.Fragment5;
import bwie.com.zhoukao3moni1.fragment.Fragment6;
import bwie.com.zhoukao3moni1.fragment.Fragment7;

public class MainActivity extends BaseActivity {


    private ViewPager view_pager;
    private TabLayout tab;
    ArrayList<String> tabs = new ArrayList<>();

    @Override
    protected int findId() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {
        //初始化控件
        view_pager = (ViewPager) findViewById(R.id.view_pager);
        tab = (TabLayout) findViewById(R.id.tab);
    }

    @Override
    protected void getServiceData() {
        //创建集合
        ArrayList<Fragment> list = new ArrayList<>();
        //创建Fragment
        list.add(new Fragment1());
        list.add(new Fragment2());
        list.add(new Fragment3());
        list.add(new Fragment4());
        list.add(new Fragment5());
        list.add(new Fragment6());
        list.add(new Fragment7());
        //创建适配器
        MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager(), list,tabs);
        //添加到适配器
        view_pager.setAdapter(adapter);


        //tab标题
        //设置tablayout模式
        tab.setTabMode(TabLayout.MODE_SCROLLABLE);
        //设置文字划过颜色
        tab.setTabTextColors(Color.BLACK,Color.RED);
        //tab.setTabGravity(TableLayout.TEXT_ALIGNMENT_GRAVITY);
        //创建集合存tab标签

        tabs.add("新闻");
        tabs.add("娱乐");
        tabs.add("游戏");
        tabs.add("热点");
        tabs.add("搜索");
        tabs.add("少儿");
        tabs.add("教育");
        //设置tab标签
        tab.addTab(tab.newTab().setText(tabs.get(0)));
        tab.addTab(tab.newTab().setText(tabs.get(1)));
        tab.addTab(tab.newTab().setText(tabs.get(2)));
        tab.addTab(tab.newTab().setText(tabs.get(3)));
        tab.addTab(tab.newTab().setText(tabs.get(4)));
        tab.addTab(tab.newTab().setText(tabs.get(5)));
        tab.addTab(tab.newTab().setText(tabs.get(6)));
        //设置疲累
        tab.setupWithViewPager(view_pager);
    }
}


布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="bwie.com.zhoukao3moni1.activity.MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_height="match_parent">
        <!--biaoti-->
        <android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/tab"
            app:tabGravity="center"
            app:tabPadding="5dp"
            app:tabTextAppearance="@style/AppTheme"
            ></android.support.design.widget.TabLayout>
        <!--fragment-->
        <android.support.v4.view.ViewPager
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/view_pager"
            ></android.support.v4.view.ViewPager>

    </LinearLayout>
    <RelativeLayout
        android:layout_width="350dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ff00"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="哈哈"
            />
    </RelativeLayout>


</android.support.v4.widget.DrawerLayout>


Fragment1

package bwie.com.zhoukao3moni1.fragment;


import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.bwei.imageloaderlibrary.utils.ImageLoaderUtils;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import bwie.com.zhoukao3moni1.R;
import bwie.com.zhoukao3moni1.adapter.MyAdapter;
import bwie.com.zhoukao3moni1.adapter.MyPageAdapter;
import bwie.com.zhoukao3moni1.baseclass.BaseFragment;
import bwie.com.zhoukao3moni1.bean.UserBean;
import bwie.com.zhoukao3moni1.httputils.HttpUtils;
import bwie.com.zhoukao3moni1.view.XListView;

/**
 * A simple {@link Fragment} subclass.
 */
public class Fragment1 extends BaseFragment {

    private List<ImageView> list=new ArrayList<>();
    private List<UserBean.DataBean> xlist=new ArrayList<>();
    private ViewPager vp;
    //创建连接
    private String path="http://www.xieast.com/api/news/news.php?page=";
    private int page=1;
    //创建小圆点集合
    private List<ImageView> images;
    //找到布局
    private LinearLayout ll_points;
    //创建Handler
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
                String json = (String) msg.obj;
                //解析
                try {
                    JSONObject jsonObject = new JSONObject(json);
                    JSONArray banner = jsonObject.getJSONArray("banner");
                    images = new ArrayList<>();
                    for (int i = 0; i < banner.length(); i++) {
                        JSONObject js = banner.getJSONObject(i);
                        String image_url = js.getString("image_url");

                        //创建image
                        ImageView imageView = new ImageView(getActivity());
                        DisplayImageOptions options = ImageLoaderUtils.getOptions();
                        ImageLoader.getInstance().displayImage(image_url,imageView,options);
                        list.add(imageView);
                        //小圆点  得到image
                        ImageView point = new ImageView(getActivity());
                        //通过point找到布局没选中的
                        point.setImageResource(R.drawable.noshape);
                        //设置子布局宽高
                        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(30, 30);
                        //设置子布局margin
                        params.leftMargin = 10;
                        params.rightMargin = 10;
                        //把以上添加到ll_points
                        ll_points.addView(point, params);
                        images.add(point);
                    }
                    //创建适配器
                    MyPageAdapter adapter = new MyPageAdapter(getActivity(),list);
                    vp.setAdapter(adapter);
                    // 设置第一个小圆点为选中状态
                    seletePoint(0);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    };
    private XListView xlistview;
    private MyAdapter adapter;

    private void seletePoint(int i) {
        for (int j = 0; j < images.size(); j++) {
            if (i == j) {
                images.get(j).setImageResource(R.drawable.shape);
            } else {
                images.get(j).setImageResource(R.drawable.noshape);
            }
        }
    }

    public Fragment1() {
        // Required empty public constructor
    }

    //设置布局
    @Override
    protected int getLayoutId() {
        return R.layout.fragment1;
    }
    //初始化
    @Override
    protected void initView(View view) {
        //初始化vp
        vp = (ViewPager) view.findViewById(R.id.vp);
        ll_points = (LinearLayout) view.findViewById(R.id.ll_points);
        xlistview = (XListView) view.findViewById(R.id.xlistview);
        initData();
    }

    private void initData() {
        //下拉刷新
        xlistview.setPullRefreshEnable(true);
        //上拉加载
        xlistview.setPullLoadEnable(true);
        //设置刷新时间
        long l = System.currentTimeMillis();
        Date date=new Date(l);
        SimpleDateFormat format=new SimpleDateFormat("HH:mm");
        xlistview.setRefreshTime(format.format(date));
        //监听
        xlistview.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                page=1;
                Wangluo();
            }

            @Override
            public void onLoadMore() {
                page+=1;
                Wangluo();
            }
        });


        //创建适配器
        adapter = new MyAdapter(getActivity(),xlist);
        xlistview.setAdapter(adapter);
    }

    //逻辑代码

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        new Thread(new Runnable() {
            @Override
            public void run() {
                //设置路径
                String path = "http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=banner";
                try {
                    URL url=new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);
                    connection.setRequestMethod("GET");
                    //判断状态吗
                    if (connection.getResponseCode()==200) {
                        InputStream inputStream = connection.getInputStream();
                        ByteArrayOutputStream bos=new ByteArrayOutputStream();
                        byte[] buffer=new byte[1024];
                        int len=0;
                        while ((len=inputStream.read(buffer))!=-1) {
                            bos.write(buffer,0,len);
                        }
                        //关流
                        inputStream.close();
                        bos.close();
                        String s = bos.toString();
                        Message message = handler.obtainMessage();
                        message.what=0;
                        message.obj=s;
                        message.sendToTarget();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();



        //网络请求
        Wangluo();
    }

    private void Wangluo() {
        String url=path+page;
        Log.i("aaa",url);
        HttpUtils httpUtils = HttpUtils.getinstance();
        httpUtils.getData(url);
        httpUtils.setjsonlisten(new HttpUtils.getjsonlisten() {
            @Override
            public void tojsonlisten(String json) {
                //创建Gson
                Gson gson = new Gson();
                UserBean userBean = gson.fromJson(json, UserBean.class);
                List<UserBean.DataBean> data = userBean.getData();
                if (page==1){
                    xlist.clear();
                }
                xlist.addAll(data);
                adapter.notifyDataSetChanged();
                if (page==1){
                    xlistview.stopRefresh();
                }else {
                    xlistview.stopLoadMore();
                }
            }
        });
    }


    //停止m,,,,
    @Override
    public void onPause() {
        super.onPause();
        stops();
    }
    //停止轮播
    private void stops() {
        handler.removeCallbacksAndMessages(null);
    }
    //开始
    @Override
    public void onResume() {
        super.onResume();
       starts();
    }
    //开始轮播
    private void starts() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                int i = vp.getCurrentItem();
                vp.setCurrentItem(i+1);
                seletePoint((i + 1) % images.size());
                handler.postDelayed(this,2000);
            }
        },2000);
    }
}

//解决轮播和viewpager问题
package bwie.com.zhoukao3moni1.baseclass;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.WindowInsets;

/**
 * Created by 我 on 2018/7/21.
 */

public class PagerClass extends ViewPager{
    public PagerClass(Context context) {
        super(context);
    }

    public PagerClass(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
        return super.dispatchApplyWindowInsets(insets);
    }
}



封装Framgnet类代码

package bwie.com.zhoukao3moni1.baseclass;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import bwie.com.zhoukao3moni1.R;

/**
 * Created by 我 on 2018/7/21.
 */

public abstract class BaseFragment extends Fragment{

    private View view;
    private View pager;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        if (view==null){
            view = View.inflate(getActivity(), getLayoutId(), null);
        }

        ViewGroup parent = (ViewGroup) view.getParent();
        if (parent!=null) {
            parent.removeView(view);
        }
        pager = view.findViewById(R.id.view_pager);
        initView(view);
        return view;
    }

    protected abstract int getLayoutId();

    protected abstract void initView(View view);


}


分页代码
package bwie.com.zhoukao3moni1.adapter;

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 java.util.List;

import bwie.com.zhoukao3moni1.R;
import bwie.com.zhoukao3moni1.bean.UserBean;

/**
 * Created by 我 on 2018/7/21.
 */

public class MyAdapter extends BaseAdapter{
    private static final int TYPE_0 = 0;
    private static final int TYPE_1 = 1;
    private static final int TYPE_2 = 2;
    private static final int TYPE_3 = 3;
    private Context context;
    private List<UserBean.DataBean> list;

    public MyAdapter(Context context, List<UserBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getViewTypeCount() {
        return 4;
    }

    @Override
    public int getItemViewType(int position) {
        String s1 = list.get(position).getThumbnail_pic_s();
        String s2 = list.get(position).getThumbnail_pic_s02();
        String s3 = list.get(position).getThumbnail_pic_s03();
        if (s1!=null&&s2==null&&s3==null){
            return TYPE_0;
        }else if (s1!=null&&s2!=null&&s3!=null){
            return TYPE_1;
        }else if (s1!=null&&s2!=null&&s3==null){
            return TYPE_2;
        }else {
            return TYPE_3;
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        int type = getItemViewType(position);
        if (convertView == null) {
            //有1个图片
            if (type==TYPE_0) {
                convertView = View.inflate(context, R.layout.item_adapter1, null);
                holder = new ViewHolder();
                holder.text_title1 = (TextView) convertView.findViewById(R.id.text_title1);
                holder.text_author1 = (TextView) convertView.findViewById(R.id.text_author1);
                holder.date1 = (TextView) convertView.findViewById(R.id.date1);
                holder.img1 = (ImageView) convertView.findViewById(R.id.img1);
                convertView.setTag(holder);
            } else if (type==TYPE_1){
                //有3个图片
                convertView = View.inflate(context, R.layout.item_adapter2, null);
                holder = new ViewHolder();
                holder.text_title2 = (TextView) convertView.findViewById(R.id.text_title2);
                holder.img2 = (ImageView) convertView.findViewById(R.id.img2);
                holder.img3 = (ImageView) convertView.findViewById(R.id.img3);
                holder.img4 = (ImageView) convertView.findViewById(R.id.img4);
                convertView.setTag(holder);
            }else if (type==TYPE_2){
                //有2图片
                convertView = View.inflate(context, R.layout.item_adapter3, null);
                holder = new ViewHolder();
                holder.text_title3 = (TextView) convertView.findViewById(R.id.text_title3);
                holder.img5 = (ImageView) convertView.findViewById(R.id.img5);
                holder.img6 = (ImageView) convertView.findViewById(R.id.img6);
                convertView.setTag(holder);
            }else {
                convertView = View.inflate(context, R.layout.item_adapter4, null);
                holder = new ViewHolder();
                holder.text_title4 = (TextView) convertView.findViewById(R.id.text_title4);
                holder.text_author4 = (TextView) convertView.findViewById(R.id.text_author4);
                holder.date4 = (TextView) convertView.findViewById(R.id.date4);
                convertView.setTag(holder);
            }

        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        if (type==TYPE_0){
            holder.text_title1.setText(list.get(position).getTitle());
            holder.text_author1.setText(list.get(position).getAuthor_name());
            holder.date1.setText(list.get(position).getDate());
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.img1);
        } else if (type==TYPE_1){
            holder.text_title2.setText(list.get(position).getTitle());
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.img2);
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.img3);
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder.img4);
        } else if (type==TYPE_2) {
            holder.text_title3.setText(list.get(position).getTitle());
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.img5);
            ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.img6);
        }else {
            holder.text_title4.setText(list.get(position).getTitle());
            holder.text_author4.setText(list.get(position).getAuthor_name());
            holder.date4.setText(list.get(position).getDate());
        }
        return convertView;
    }
    private class ViewHolder{
        TextView text_title1,date1,text_author1;
        TextView text_title2,text_title3;
        ImageView img1,img2,img3,img4,img5,img6;
        TextView text_title4,date4,text_author4;
    }
}



//MyPageadapter

package bwie.com.zhoukao3moni1.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.List;

/**
 * Created by 我 on 2018/7/21.
 */

public class MyPageAdapter extends PagerAdapter{
    private Context context;
    private List<ImageView> list;

    public MyPageAdapter(Context context, List<ImageView> 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) {
        position%=list.size();
        ImageView imageView = list.get(position);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View)object);
    }
}



//MyFragment代码  和绑定TABLAYOUT

package bwie.com.zhoukao3moni1.adapter;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

/**
 * Created by 我 on 2018/7/20.
 */

public class MyFragmentAdapter extends FragmentPagerAdapter {
    private List<Fragment> list;
    private List<String> tabs;

    public MyFragmentAdapter(FragmentManager fm, List<Fragment> list, List<String> tabs) {
        super(fm);
        this.list = list;
        this.tabs = tabs;
    }

    @Override
    public Fragment getItem(int position) {
        return list.get(position);
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return tabs.get(position);
    }
}


//接口回调
package bwie.com.zhoukao3moni1.httputils;

import android.os.AsyncTask;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

import cz.msebera.android.httpclient.HttpResponse;
import cz.msebera.android.httpclient.client.HttpClient;
import cz.msebera.android.httpclient.client.methods.HttpGet;
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient;

/**
 * Created by 我 on 2018/7/21.
 */

public class HttpUtils {

    private static HttpUtils httpUtils;
    private getjsonlisten getjsonlisten;
    public static HttpUtils getinstance(){
        if (httpUtils==null) {
            httpUtils = new HttpUtils();
        }
        return httpUtils;
    }
    public void getData(String url){
        Async async = new Async();
        async.execute(url);
    }

    private class Async extends AsyncTask<String,Void,String>{
        @Override
        protected String doInBackground(String... params) {
            HttpClient client=new DefaultHttpClient();
            HttpGet get=new HttpGet(params[0]);
            try {
                HttpResponse response = client.execute(get);
                int statusCode = response.getStatusLine().getStatusCode();
                if (statusCode==200){
                    InputStream inputStream = response.getEntity().getContent();
                    ByteArrayOutputStream bos=new ByteArrayOutputStream();
                    byte[] buffer=new byte[1024];
                    int len=0;
                    while ((len=inputStream.read(buffer))!=-1) {
                        bos.write(buffer,0,len);
                    }
                    inputStream.close();
                    bos.close();
                    String s = bos.toString();
                    return s;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            getjsonlisten.tojsonlisten(s);
        }
    }
    public interface getjsonlisten{
        public void tojsonlisten(String json);
    }
    public void setjsonlisten(getjsonlisten getjsonlisten){
        this.getjsonlisten=getjsonlisten;
    }
}

猜你喜欢

转载自blog.csdn.net/nideyida1/article/details/81156994