侧拉

来源:互联网 发布:淘宝蚂蚁摄影怎么样 编辑:程序博客网 时间:2024/04/27 10:27

主函数代码



import android.graphics.Color;import android.os.Bundle;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    Button xqy;    Button zhuye;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        xqy = (Button) findViewById(R.id.qqy);        zhuye = (Button) findViewById(R.id.zhuye);        FragmentManager manager = getSupportFragmentManager();        FragmentTransaction transaction = manager.beginTransaction();        transaction.replace(R.id.frag, new Zhuye());        transaction.commit();        zhuye.setBackgroundColor(Color.RED);        xqy.setBackgroundColor(Color.GRAY);        zhuye.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                FragmentManager manager = getSupportFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                transaction.replace(R.id.frag, new Zhuye());                transaction.commit();                zhuye.setBackgroundColor(Color.RED);                xqy.setBackgroundColor(Color.GRAY);            }        });        xqy.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                FragmentManager manager = getSupportFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                transaction.replace(R.id.frag, new Xql());                transaction.commit();                zhuye.setBackgroundColor(Color.GRAY);                xqy.setBackgroundColor(Color.RED);            }        });    }}


主界面布局


<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin">    <android.support.v4.widget.DrawerLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <RelativeLayout            android:layout_width="150dp"            android:layout_height="match_parent"            android:layout_gravity="left"            android:background="#fff">            <ImageView                android:id="@+id/dl_img"                android:layout_width="50dp"                android:layout_height="50dp"                android:padding="10dp"                android:src="@mipmap/ic_launcher" />            <TextView                android:id="@+id/name1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@+id/dl_img"                android:gravity="center"                android:padding="10dp"                android:text="aaaaa" />            <TextView                android:id="@+id/xw"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@+id/name1"                android:gravity="center"                android:padding="10dp"                android:text="新闻" />            <TextView                android:id="@+id/yl"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@+id/xw"                android:gravity="center"                android:padding="10dp"                android:text="娱乐" />            <TextView                android:id="@+id/sh"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@+id/yl"                android:gravity="center"                android:padding="10dp"                android:text="社会" />            <TextView                android:id="@+id/js"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@+id/sh"                android:gravity="center"                android:padding="10dp"                android:text="军事" />        </RelativeLayout>        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="match_parent">            <LinearLayout                android:id="@+id/ll"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_alignParentBottom="true"                android:gravity="center"                android:orientation="horizontal">                <Button                    android:id="@+id/zhuye"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:gravity="center"                    android:text="主页" />                <Button                    android:id="@+id/qqy"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:gravity="center"                    android:text="详情页" />            </LinearLayout>            <FrameLayout                android:id="@+id/frag"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:layout_above="@+id/ll"></FrameLayout>        </RelativeLayout>    </android.support.v4.widget.DrawerLayout></RelativeLayout>


主页代码


import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java.util.List;public class Zhuye extends Fragment {    TabLayout tab;    ViewPager vp;    private List<String> list;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v = View.inflate(getActivity(), R.layout.zy, null);        tab = v.findViewById(R.id.tab);        vp = v.findViewById(R.id.vp);        list = new ArrayList<>();        list.add("social");        list.add("guonei");        list.add("world");        list.add("huabian");        list.add("tiyu");        list.add("nba");        list.add("football");        list.add("keji");        list.add("startup");        list.add("apple");        vp.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {            @Override            public CharSequence getPageTitle(int position) {                return list.get(position);            }            @Override            public Fragment getItem(int position) {                Fragments fragments = new Fragments();                Bundle bundle = new Bundle();                if (list.get(position).endsWith("social")) {                    bundle.putString("name", "football");                } else if (list.get(position).endsWith("guonei")) {                    bundle.putString("name", "apple");                } else if (list.get(position).endsWith("world")) {                    bundle.putString("name", "world");                } else if (list.get(position).endsWith("huabian")) {                    bundle.putString("name", "huabian");                } else if (list.get(position).endsWith("tiyu")) {                    bundle.putString("name", "tiyu");                } else if (list.get(position).endsWith("nba")) {                    bundle.putString("name", "nba");                } else if (list.get(position).endsWith("football")) {                    bundle.putString("name", "football");                } else if (list.get(position).endsWith("keji")) {                    bundle.putString("name", "keji");                } else if (list.get(position).endsWith("startup")) {                    bundle.putString("name", "startup");                } else if (list.get(position).endsWith("apple")) {                    bundle.putString("name", "apple");                }                fragments.setArguments(bundle);                return fragments;            }            @Override            public int getCount() {                return list.size();            }        });        tab.setupWithViewPager(vp);        return v;    }}


主页布局


<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.design.widget.TabLayout        android:id="@+id/tab"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:fillViewport="false"        app:tabIndicatorColor="#052efc"        app:tabIndicatorHeight="5dp"        app:tabMode="scrollable"        app:tabSelectedTextColor="#f9ec03"        app:tabTextColor="#f204ce"></android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@+id/tab"></android.support.v4.view.ViewPager></RelativeLayout>

详情页代码


import android.content.Context;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.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.bigkoo.convenientbanner.ConvenientBanner;import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;import com.bigkoo.convenientbanner.holder.Holder;import com.bigkoo.convenientbanner.listener.OnItemClickListener;import com.google.gson.Gson;import com.jwenfeng.library.pulltorefresh.BaseRefreshListener;import com.jwenfeng.library.pulltorefresh.PullToRefreshLayout;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.Arrays;import java.util.List;public class Xql extends Fragment implements OnItemClickListener {    private String path;    private int shu = 10;    private ListView xqy_lv;    private GridView xqy_gv;    private PullToRefreshLayout pull;    private PullToRefreshLayout pull_1;    ConvenientBanner conven;    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            if (msg.what == 0) {                JsonBean bean = (JsonBean) msg.obj;                list = bean.getNewslist();                Log.i("aaa", list.toString());                myad = new Myad();                xqy_gv.setAdapter(myad);                myad1 = new Myad1();                xqy_lv.setAdapter(myad1);            }        }    };    private List<JsonBean.NewslistBean> list;    private String[] imgs = new String[]{            "http://image.wufazhuce.com/FvVmWbqlle7jlUCTeozoval9NyBH",            "http://image.wufazhuce.com/FmDRnQ1XhReHRHB4jYqAPSx8htsP",            "http://image.wufazhuce.com/Fu6o0fqKHsI_TjdpPX3N2Kc99vNP",            "http://image.wufazhuce.com/FuPgOcbGDD9__fyuCdPBXb5pbA1C"};    List<String> datas;    ImageLoader imageLoader;    private Myad myad;    private Myad1 myad1;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v = View.inflate(getActivity(), R.layout.xqy, null);        xqy_lv = v.findViewById(R.id.xqy_lv);        xqy_gv = v.findViewById(R.id.xqy_gv);        conven = v.findViewById(R.id.conven);        pull = v.findViewById(R.id.xqy_pull);        pull_1 = v.findViewById(R.id.xqy_pull_1);        imageLoader = ImageLoader.getInstance();        imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));        datas = Arrays.asList(imgs);        conven.setPages(new CBViewHolderCreator() {            @Override            public Object createHolder() {                return new Ha();            }        }, datas)                //设置指示器是否可见                .setPointViewVisible(true)                //设置自动切换(同时设置了切换时间间隔)                .startTurning(2000)                //设置两个点图片作为翻页指示器,不设置则没有指示器,可以根据自己需求自行配合自己的指示器,不需要圆点指示器可用不设                .setPageIndicator(new int[]{R.drawable.ic_page_indicator, R.drawable.ic_page_indicator_focused})                //设置指示器的方向(左、中、右)                .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL)                //设置点击事件                .setOnItemClickListener(this)                //默认是TRUE                .setManualPageable(true);        getdata();        pull.setRefreshListener(new BaseRefreshListener() {            @Override            public void refresh() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);                        getdata();                        myad.notifyDataSetChanged();                        pull.finishRefresh();                    }                }, 3000);            }            @Override            public void loadMore() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);                        getdata();                        myad.notifyDataSetChanged();                        pull.finishLoadMore();                    }                }, 3000);            }        });        pull_1.setRefreshListener(new BaseRefreshListener() {            @Override            public void refresh() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);                        getdata();                        myad1.notifyDataSetChanged();                        pull_1.finishRefresh();                    }                }, 3000);            }            @Override            public void loadMore() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);                        getdata();                        myad1.notifyDataSetChanged();                        pull_1.finishLoadMore();                    }                }, 3000);            }        });        return v;    }    class Myad extends BaseAdapter {        private final int lin = 0;        private final int one = 1;        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return null;        }        @Override        public long getItemId(int i) {            return 0;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            View v = View.inflate(getActivity(), R.layout.item1, null);            ImageView img = v.findViewById(R.id.item_img);            TextView item_text = v.findViewById(R.id.item_text);            item_text.setText(list.get(i).getTitle());            ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), img);            return v;        }    }    class Myad1 extends BaseAdapter {        private final int lin = 0;        private final int one = 1;        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return null;        }        @Override        public long getItemId(int i) {            return 0;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            View v = View.inflate(getActivity(), R.layout.item2, null);            ImageView img = v.findViewById(R.id.item2img);            TextView item_text = v.findViewById(R.id.item2text);            item_text.setText(list.get(i).getTitle());            ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), img);            return v;        }    }    private void getdata() {        new Thread() {            @Override            public void run() {                if (path == null) {                    path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;                }                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    if (connection.getResponseCode() == 200) {                        InputStream stream = connection.getInputStream();                        String json = zhuan(stream, "utf-8");                        Log.i("aaa", json);                        Gson gson = new Gson();                        JsonBean fromJson = gson.fromJson(json, JsonBean.class);                        Log.i("aaa", "aaaaaa");                        Message message = Message.obtain();                        message.what = 0;                        message.obj = fromJson;                        handler.sendMessage(message);                    }                } catch (Exception e) {                    e.printStackTrace();                }                super.run();            }        }.start();    }    private String zhuan(InputStream stream, String s) {        try {            InputStreamReader inputStreamReader = new InputStreamReader(stream, s);            BufferedReader reader = new BufferedReader(inputStreamReader);            String ss = null;            StringBuilder builder = new StringBuilder();            while ((ss = reader.readLine()) != null) {                builder.append(ss);            }            inputStreamReader.close();            return builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    @Override    public void onItemClick(int position) {    }    private class Ha implements Holder<String> {        private ImageView imageView;        @Override        public View createView(Context context) {            imageView = new ImageView(context);            imageView.setScaleType(ImageView.ScaleType.FIT_XY);            return imageView;        }        @Override        public void UpdateUI(Context context, int position, String data) {            ImageLoader.getInstance().displayImage(data, imageView);        }    }}

详情页布局


<?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">    <com.bigkoo.convenientbanner.ConvenientBanner        android:id="@+id/conven"        android:layout_width="match_parent"        android:layout_height="100dp"></com.bigkoo.convenientbanner.ConvenientBanner>    <com.jwenfeng.library.pulltorefresh.PullToRefreshLayout        android:id="@+id/xqy_pull"        android:layout_width="match_parent"        android:layout_height="150dp">        <GridView            android:id="@+id/xqy_gv"            android:layout_width="match_parent"            android:layout_height="150dp"            android:numColumns="4"></GridView>    </com.jwenfeng.library.pulltorefresh.PullToRefreshLayout>    <com.jwenfeng.library.pulltorefresh.PullToRefreshLayout        android:id="@+id/xqy_pull_1"        android:layout_width="match_parent"        android:layout_height="match_parent">        <ListView            android:id="@+id/xqy_lv"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_below="@+id/xqy_gv"></ListView>    </com.jwenfeng.library.pulltorefresh.PullToRefreshLayout></LinearLayout>


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.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.jwenfeng.library.pulltorefresh.BaseRefreshListener;import com.jwenfeng.library.pulltorefresh.PullToRefreshLayout;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.List;public class Fragments extends Fragment {    PullToRefreshLayout pull;    ListView pull_lv;    private String s;    private int shu = 10;    private String path;    List<JsonBean.NewslistBean> list;    MyAdapter myAdapter;    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            if (msg.what == 0) {                JsonBean bean = (JsonBean) msg.obj;                list = bean.getNewslist();                Log.i("aaa",list.toString());                myAdapter = new MyAdapter();                pull_lv.setAdapter(myAdapter);            }        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v = View.inflate(getActivity(), R.layout.fragments, null);        pull = v.findViewById(R.id.pull);        pull_lv = v.findViewById(R.id.pull_lv);        Bundle bundle = getArguments();        s = bundle.getString("name", "social");        getdata(s);        pull.setRefreshListener(new BaseRefreshListener() {            @Override            public void refresh() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        shu++;                        path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;                        getdata(s);                        myAdapter.notifyDataSetChanged();                        pull.finishRefresh();                    }                }, 3000);            }            @Override            public void loadMore() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        shu++;                        path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;                        getdata(s);                        myAdapter.notifyDataSetChanged();                        pull.finishLoadMore();                    }                }, 3000);            }        });        return v;    }    private void getdata(final String s) {        new Thread() {            @Override            public void run() {                path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    if (connection.getResponseCode() == 200) {                        InputStream stream = connection.getInputStream();                        String json = zhuan(stream, "utf-8");                        Log.i("aaa",json);                        Gson gson = new Gson();                        JsonBean fromJson = gson.fromJson(json, JsonBean.class);                        Message message = Message.obtain();                        message.what = 0;                        message.obj = fromJson;                        handler.sendMessage(message);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }.start();    }    private String zhuan(InputStream stream, String s) {        try {            InputStreamReader inputStreamReader = new InputStreamReader(stream, s);            BufferedReader reader = new BufferedReader(inputStreamReader);            String ss = null;            StringBuilder builder = new StringBuilder();            while ((ss = reader.readLine()) != null) {                builder.append(ss);            }            inputStreamReader.close();            return builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    class MyAdapter extends BaseAdapter {        private final int lin = 0;        private final int one = 1;        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return null;        }        @Override        public long getItemId(int i) {            return 0;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            int type = getItemViewType(i);            Diyi diyi;            Dier dier;            switch (type) {                case lin:                    if (view == null) {                        view = View.inflate(getActivity(), R.layout.diyi, null);                        diyi = new Diyi();                        diyi.yiimg1 = view.findViewById(R.id.yiimg);                        diyi.yitext = view.findViewById(R.id.yitext);                        view.setTag(diyi);                    }                    break;                case one:                    if (view == null) {                        view = View.inflate(getActivity(), R.layout.dier, null);                        dier = new Dier();                        dier.erimg1 = view.findViewById(R.id.erimg1);                        dier.erimg2 = view.findViewById(R.id.erimg2);                        dier.erimg3 = view.findViewById(R.id.erimg3);                        view.setTag(dier);                    }                    break;                default:                    break;            }            switch (type) {                case lin:                    diyi = (Diyi) view.getTag();                    diyi.yitext.setText(list.get(i).getTitle());                    ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), diyi.yiimg1);                    break;                case one:                    dier = (Dier) view.getTag();                    ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), dier.erimg1);                    ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), dier.erimg2);                    ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), dier.erimg3);                    break;                default:                    break;            }            return view;        }        @Override        public int getItemViewType(int position) {            int i = position % 2;            if (i == 0) {                return 0;            } else {                return 1;            }        }        @Override        public int getViewTypeCount() {            return 2;        }        class Diyi {            ImageView yiimg1;            TextView yitext;        }        class Dier {            ImageView erimg1, erimg2, erimg3;        }    }}