Banner+DrawerLayout+Tablayout+PullTofresh+Fragment(Viewpage)

一,先在  manifrsts  写权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

二,在  < application  里面写
android:name=".MApp"

三,添加依赖
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.android.support:design:26+'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile 'com.youth.banner:banner:1.4.9'
注意:有gson的依赖,就不用导Gson包

四,布局
main:里布局
<?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"
    android:id="@+id/dv"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.bawei.chenkai.chenkai20171023.MainActivity">
    <ListView
        android:id="@+id/lv"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:choiceMode="singleChoice"
        android:divider="#000"
        android:layout_gravity="start"
        android:dividerHeight="1dp"
        android:background="#007efe">
    </ListView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <FrameLayout
            android:id="@+id/fl_main"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="9" />
        <RadioGroup
            android:id="@+id/rg"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="horizontal">
            <RadioButton
                android:id="@+id/but1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:gravity="center"
                android:text="首页" />
            <RadioButton
                android:id="@+id/but2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:gravity="center"
                android:text="发现" />
            <RadioButton
                android:id="@+id/but3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:gravity="center"
                android:text="下载" />
            <RadioButton
                android:id="@+id/but4"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:gravity="center"
                android:text="我的" />
        </RadioGroup>
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>

2,banner_header :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:orientation="vertical"/>
</LinearLayout>
3,fragment01 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.design.widget.TabLayout
        android:id="@+id/tl_titles"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    </android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"/>
</LinearLayout>
4,fragment02 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#44ff44">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="发现"
        android:textSize="30sp"
        />
</LinearLayout>
5,fragment03 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="下载"
        android:textSize="30sp"
        />
</LinearLayout>
6,fragment04 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff3660">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="我的"
        android:textSize="30sp"
        />
</LinearLayout>
7,item0 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/plv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
8,listview :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
一,MainActivity :主方法里
public class MainActivity extends AppCompatActivity {

    private RadioGroup rg;
    private ArrayList<Fragment> list = new ArrayList<Fragment>();
    private FragmentManager supportFragmentManager;
    private DrawerLayout drawerLayout;
    private ListView lv;
    ArrayList<String> list1 = new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //使用内部类
        initFragment();
        //初始化组件
        rg = (RadioGroup) findViewById(R.id.rg);
        drawerLayout= (DrawerLayout) findViewById(R.id.dv);
        lv = (ListView) findViewById(R.id.lv);
        getData();
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 	{
                drawerLayout.closeDrawer(lv);
            }
        });
        //使用使用者
        supportFragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction	();
        fragmentTransaction.add(R.id.fl_main, list.get(0)).commit();
        //设置监听
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
                switch (i) {
                    case R.id.but1:
                        supportFragmentManager.beginTransaction().replace(R.id.fl_main, new Fragment01()).commit();
                        break;
                    case R.id.but2:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment02()).commit();
                        break;
                    case R.id.but3:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment03()).commit();
                        break;
                    case R.id.but4:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment04()).commit();
                }
            }
        });
    }
    private void getData() {
        for (int i = 0; i <10 ; i++) {
            list1.add("item"+i);
        }
        //自定义适配器
        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list1);
        lv.setAdapter(mAdapter);
    }
    private void initFragment() {
        for (int i = 0; i <4 ; i++) {
           list.add(new Fragment01());
        }
    }
}
二,ChildFragment :方法里
public class ChildFragment extends Fragment {
    int page = 0;
    private PullToRefreshListView plv;
    private MAdapter mAdapter;
    String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
    private List<News.DataBean> list = new ArrayList<News.DataBean>();
    String[] imagUrls = {"https://img-my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
            "https://img-my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
            "https://img-my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
            "https://img-my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
            "https://img-my.csdn.net/uploads/201407/26/1406383299_1976.jpg"};
    private ListView lv;
    private Banner banner;
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //加载布局
        View view = inflater.inflate(R.layout.item0, null);
        View header_banner = inflater.inflate(R.layout.banner_header, null);
//初始化组件
        banner = (Banner) header_banner.findViewById(R.id.banner);
        plv = (PullToRefreshListView) view.findViewById(R.id.plv);
        //添加头部布局
        lv = plv.getRefreshableView();
        lv.addHeaderView(header_banner);
        return view;
    }
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        getNetData(page);//获取list集合的方法;
        getBanner();
        //主线程继续往下走,和刚才开启的线程互不影响;0.0001
        //添加适配器
        mAdapter = new MAdapter();
        lv.setAdapter(mAdapter);
        plv.setMode(PullToRefreshBase.Mode.BOTH);//上下拉都支持
        //设置监听
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) 	{
                list.clear();
                getNetData(0);
            }
            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                page++;
                getNetData(20);
            }
        });
    }
    private void getBanner() {
        banner.setImages(Arrays.asList(imagUrls));//设置图片集合
        banner.setImageLoader(new BannerLoader());
        banner.start();
    }
    private void getNetData(int page) {
        new MAsync().execute(baseUrl + page);
    }
    //设置适配器
    class MAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return list.size();
        }
        @Override
        public Object getItem(int i) {
            return list.get(i);
        }
        @Override
        public long getItemId(int i) {
            return i;
        }
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view = View.inflate(getActivity(), R.layout.listview, null);
            ImageView imageview = (ImageView) view.findViewById(R.id.image);
            TextView tv = (TextView) view.findViewById(R.id.tv);
            tv.setText(list.get(i).getTITLE());
            ImageLoader.getInstance().displayImage((String) list.get(i).getIMAGEURL(), 
imageview
); return view; } } class MAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { return NetWordUtils.getNetjson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); News news = gson.fromJson(s, News.class); List<News.DataBean> data = news.getData(); list.addAll(data); mAdapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } private class BannerLoader implements ImageLoaderInterface { @Override public void displayImage(Context context, Object path, View imageView) { ImageLoader instance = ImageLoader.getInstance(); instance.displayImage((String) path, (ImageView) imageView); } @Override public View createImageView(Context context) { return null; } }}
三,Fragment01 :方法里
public class Fragment01 extends Fragment {
    private TabLayout tabLayout;
    private ViewPager viewpager;
    ArrayList<Fragment> list=new ArrayList<Fragment>();
    String[] temp={"推荐","课程","实战","职业路径"};
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment01,null);
        tabLayout = (TabLayout) view.findViewById(R.id.tl_titles);
        viewpager = (ViewPager) view.findViewById(R.id.viewpager);
        return view;
    }
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        indata();
        MYaptera mYapter = new MYaptera(getChildFragmentManager());
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        tabLayout.setupWithViewPager(viewpager);
        viewpager.setAdapter(mYapter);
    }
    private void indata() {
        for (int i = 0; i < 4; i++) {
            list.add(new ChildFragment());
        }
    }
    class MYaptera extends FragmentPagerAdapter {

        public MYaptera(FragmentManager fm) {
            super(fm);
        }
        @Override
        public Fragment getItem(int position) {
            return list.get(position);
        }
        @Override
        public int getCount() {
            return list.size();
        }
        @Override
        public CharSequence getPageTitle(int position) {
            return temp[position];
        }
    }
}
四,Fragment02,Fragment03,Fragment04 :方法里,只需要改03,04
public class Fragment02 extends Fragment {
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment02, null);
        return view;
    }
}
五,MApp :方法里
public class MApp extends Application {
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration imageLoaderConfiguration=new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader.getInstance().init(imageLoaderConfiguration);
    }
}
六,NetWordUtils :方法里
/**
 * author:Created by WangZhiQiang on 2017/10/23.
 */
public class NetWordUtils {
    private static String  tag = "NetWordUtils";
    /**
     * 获取网络json
     *
     * @param urlString
     * @return
     */
    public static String getNetjson(String urlString) {
        try {
            URL url = new URL(urlString);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");//若果是get请求可以不用配置; 其他请求必须配置
            urlConnection.setConnectTimeout(8000);//设置链接超时间
            InputStream inputStream = urlConnection.getInputStream();//获取网络返回的输入流;
            //可拼接的字符串
            StringBuilder stringBuilder = new StringBuilder();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String temp = "";
            while ((temp = bufferedReader.readLine()) != null) {
                stringBuilder.append(temp);
                temp = "";
            }
            //这个是网络获取的数据
            String data = stringBuilder.toString();
            Log.e(tag, "getData: " + data);
            return data;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
    /**
     * 获取网络图片的工具类
     *
     * @param urlString
     * @return
     */
    public static Bitmap getNetBitmap(String urlString) {
        try {
            //用URL封装链接地址;
            URL url = new URL(urlString);
            //用url打开链接
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            //联网的状态码
            int responseCode = urlConnection.getResponseCode();
            if(responseCode ==200){
                //链接上获取输入流
                InputStream inputStream = urlConnection.getInputStream();
                //把流直接转换成bitmap(系统提供的BitmapFactory)
                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);//BitmapFactory是个工具类,系统提供的
                return bitmap;
            }else {
                Log.e(tag, "网络状态码:: "+responseCode );
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
七,News :方法里 
   接口要解析的内容,但是注意 ChildFragment 要需要改改


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值