网络请求 + DrawerLayout + PullToFefresh + Fragment

来源:互联网 发布:棕榈油 知乎 编辑:程序博客网 时间:2024/06/01 09:48

首先加权限,并且添加需要的依赖包

//网络权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>//判断网络的权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

主函数代码

import android.app.Activity;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;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;import android.widget.Toast;import com.bwie.lianxi.fragment.hangqing;import com.bwie.lianxi.fragment.jiaoyi;import com.bwie.lianxi.fragment.shouye;import com.bwie.lianxi.fragment.zixuan;import com.bwie.lianxi.fragment.zixun;public class MainActivity extends AppCompatActivity {    //全局变量    private Button btn_shouye;    private Button btn_zixuan;    private Button btn_hangqing;    private Button btn_zixun;    private Button btn_jiaoyi;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //判断网络是否可用        if (isNetworkAvailable(MainActivity.this)) {            //吐司显示当前有可用的网络            Toast.makeText(getApplicationContext(), "当前有可用网络!", Toast.LENGTH_LONG).show();        } else {            //吐司显示当前没有可用网络            Toast.makeText(getApplicationContext(), "当前没有可用网络!", Toast.LENGTH_LONG).show();        }        //初始化控件        btn_shouye = (Button) findViewById(R.id.shouye);        btn_zixuan = (Button) findViewById(R.id.zixuan);        btn_hangqing = (Button) findViewById(R.id.hangqing);        btn_zixun = (Button) findViewById(R.id.zixun);        btn_jiaoyi = (Button) findViewById(R.id.jiaoyi);        //初始化界面        FragmentManager manager = getSupportFragmentManager();        FragmentTransaction transaction = manager.beginTransaction();        transaction.replace(R.id.frag, new shouye());        transaction.commit();        //按钮的点击事件        btn_shouye.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //首页                FragmentManager manager = getSupportFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                transaction.replace(R.id.frag, new shouye());                transaction.commit();            }        });        //按钮的点击事件        btn_zixuan.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //自选页                FragmentManager manager = getSupportFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                transaction.replace(R.id.frag, new zixuan());                transaction.commit();            }        });        //按钮的点击事件        btn_hangqing.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //行情页                FragmentManager manager = getSupportFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                transaction.replace(R.id.frag, new hangqing());                transaction.commit();            }        });        //按钮的点击事件        btn_zixun.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //资讯页                FragmentManager manager = getSupportFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                transaction.replace(R.id.frag, new zixun());                transaction.commit();            }        });        //按钮的点击事件        btn_jiaoyi.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //交易页                FragmentManager manager = getSupportFragmentManager();                FragmentTransaction transaction = manager.beginTransaction();                transaction.replace(R.id.frag, new jiaoyi());                transaction.commit();            }        });    }    public boolean isNetworkAvailable(Activity activity) {        Context context = activity.getApplicationContext();        // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        if (connectivityManager == null) {            //如果等于空,则返回false            return false;        } else {            //如果不为空,获取NetworkInfo对象            NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();            if (networkInfo != null && networkInfo.length > 0) {                for (int i = 0; i < networkInfo.length; i++) {                    System.out.println(i + "===状态===" + networkInfo[i].getState());                    System.out.println(i + "===类型===" + networkInfo[i].getTypeName());                    // 判断当前网络状态是否为连接状态                    if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {                        return true;                    }                }            }        }        return false;    }}


主页面布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v4.widget.DrawerLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <RelativeLayout            android:layout_width="200dp"            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="aaaaaaa" />            <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/shouye"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:gravity="center"                    android:text="首页" />                <Button                    android:id="@+id/zixuan"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:gravity="center"                    android:text="自选" />                <Button                    android:id="@+id/hangqing"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:gravity="center"                    android:text="行情" />                <Button                    android:id="@+id/zixun"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:gravity="center"                    android:text="资讯" />                <Button                    android:id="@+id/jiaoyi"                    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.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.bwie.lianxi.R;public class shouye extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v = View.inflate(getActivity(), R.layout.shouye, null);        return v;    }}

首页的布局文件(次要的)

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#f0f"></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 com.bwie.lianxi.R;import java.util.ArrayList;import java.util.List;public class zixun extends Fragment {    //全局变量    TabLayout tab;    private List<String> list;    ViewPager vp;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        //初始化视图        View v = View.inflate(getActivity(), R.layout.zixun, null);        //初始化控件        tab = v.findViewById(R.id.tab);        vp = v.findViewById(R.id.vp);        //创建集合        list = new ArrayList<>();        //向集合中添加数据        list.add("数据新闻");        list.add("快讯");        list.add("头条");        list.add("精编公告");        list.add("美股");        list.add("港股");        list.add("基金");        list.add("理财");        //ViewPager的监听事件        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("数据新闻")) {                    bundle.putString("name", "keji");                } else if (list.get(position).endsWith("快讯")) {                    bundle.putString("name", "startup");                } else if (list.get(position).endsWith("头条")) {                    bundle.putString("name", "apple");                } else if (list.get(position).endsWith("精编公告")) {                    bundle.putString("name", "it");                } else if (list.get(position).endsWith("美股")) {                    bundle.putString("name", "vr");                } else if (list.get(position).endsWith("港股")) {                    bundle.putString("name", "health");                } else if (list.get(position).endsWith("基金")) {                    bundle.putString("name", "meinv");                } else if (list.get(position).endsWith("理财")) {                    bundle.putString("name", "it");                }                //传递数据                fragments.setArguments(bundle);                return fragments;            }            @Override            public int getCount() {                return list.size();            }        });        //绑定        tab.setupWithViewPager(vp);        //返回视图        return v;    }}

资讯页布局

<?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"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <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></LinearLayout>

Fragments类

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.bwie.lianxi.R;import com.bwie.lianxi.RootBean;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 {    //全局变量    List<RootBean.NewslistBean> list;    MyAdapter myAdapter;    //创建Handler    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            if (msg.what == 0) {                RootBean bean = (RootBean) msg.obj;                list = bean.getNewslist();                myAdapter = new MyAdapter();                list_view.setAdapter(myAdapter);            }        }    };    PullToRefreshLayout pull_1;    private int shu = 10;    String s;    private String path;    ListView list_view;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        //初始化视图        View v = View.inflate(getActivity(), R.layout.fragment_layout, null);        //初始化控件        pull_1 = v.findViewById(R.id.pull_1);        list_view = v.findViewById(R.id.list_view);        //获取数据        Bundle bundle = getArguments();        s = bundle.getString("name", "keji");        streamToString(s);        //PullToRefresh的监听事件        pull_1.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;                        Log.i("aaaaaaaaa", path);                        streamToString(s);                        //刷新适配器                        //myAdapter.notifyDataSetChanged();                        //停止下拉刷新                        pull_1.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;                        streamToString(s);                        //刷新适配器                        //myAdapter.notifyDataSetChanged();                        //停止上拉加载                        pull_1.finishLoadMore();                    }                }, 3000);            }        });        return v;    }    //适配器    class MyAdapter extends BaseAdapter {        @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) {            ViewHolder holder;            if (view == null) {                view = view.inflate(getActivity(), R.layout.item_01, null);                holder = new ViewHolder();                holder.image_view = view.findViewById(R.id.image_view);                holder.text_view = view.findViewById(R.id.text_view);                view.setTag(holder);            } else {                holder = (ViewHolder) view.getTag();            }            //获取文字            holder.text_view.setText(list.get(i).getTitle());            //获取图片            ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), holder.image_view);            return view;        }        class ViewHolder {            ImageView image_view;            TextView text_view;        }    }    //网络请求    private void streamToString(final String s) {        new Thread() {            @Override            public void run() {                //判断                if (path == null) {                    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");                        //解析                        Gson gson = new Gson();                        RootBean fromJson = gson.fromJson(json, RootBean.class);                        //发送一个消息                        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;    }}

图片的二次采样

import android.app.Application;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;public class Img extends Application {    @Override    public void onCreate() {        //图片的二次采样        DisplayImageOptions options = new DisplayImageOptions                .Builder()                .showImageOnLoading(R.mipmap.ic_launcher)                .displayer(new FadeInBitmapDisplayer(2000))                .cacheInMemory(true)                .cacheOnDisc(true)                .build();        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration                .Builder(this)                .defaultDisplayImageOptions(options)                .threadPoolSize(5)                .build();        ImageLoader.getInstance().init(configuration);        super.onCreate();    }}

fragment_layout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <com.jwenfeng.library.pulltorefresh.PullToRefreshLayout        android:id="@+id/pull_1"        android:layout_width="match_parent"        android:layout_height="match_parent">        <ListView            android:id="@+id/list_view"            android:layout_width="match_parent"            android:layout_height="match_parent"></ListView>    </com.jwenfeng.library.pulltorefresh.PullToRefreshLayout></RelativeLayout>

item_01.xml

<?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="wrap_content"    android:orientation="horizontal">    <ImageView        android:id="@+id/image_view"        android:layout_width="70dp"        android:layout_height="70dp"        android:padding="10dp"        android:src="@mipmap/ic_launcher" />    <TextView        android:id="@+id/text_view"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:padding="10dp"        android:text="aaaaaaaa" /></LinearLayout>

阅读全文
2 0
原创粉丝点击