在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 仿CSDN的Android手机端

仿CSDN的Android手机端

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:68.64M
  • 下载次数:31
  • 浏览次数:293
  • 发布时间:2016-12-08
  • 实例类别:Android平台开发
  • 发 布 人:devin
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Android CSDN 手机客户端

实例介绍

【实例简介】

这是一个通过抓取CSDN客户端的手机应用,代码开源,里面有一个自己搜集的工具库,里面集成了各种各样常用的工具类

【实例截图】

【核心代码】


private void loadDataFromNetwork(String urlStr) {

 

        FinalHttp finalHttp = new FinalHttp();

        finalHttp.get(urlStr, new AjaxCallBack<String>() {

//网络请求成功的回调方法,在此回调方法中,采用jsoup1.8.3解析请求返

//的网页数据

            @Override

            public void onSuccess(String s) {

                super.onSuccess(s);

                Document document = Jsoup.parse(s);

                Element toplist

=document.select("div.list_item_new").get(0);

                Elements titles = toplist.select("div.article_title");

                Elements manages

= toplist.select("div.article_manage");

                for (int i = 0; i < titles.size(); i ) {

                    Element a

= titles.get(i).getElementsByTag("a").get(0);

                    Element likeSpan

= manages.get(i).select("span.link_view").get(0);

                    Element commentSpan

= manages.get(i).select("span.link_comments").get(0);

                    Element timeSpan

= manages.get(i).select("span.link_postdate").get(0);

                    String title = a.text();

                    String href = "http://blog.csdn.net"

a.attr("href");

                    String readnum = likeSpan.text().substring(3, likeSpan.text().length() - 1);

                    String commnum = commentSpan.text().substring(3, commentSpan.text().length() - 1);

                    String time = timeSpan.text();

 

                    ArticleModel articleModel = new ArticleModel();

                    articleModel.setTitle(title);

                    articleModel.setArticleUrl(href);

                    articleModel.setCommentNum(commnum);

                    articleModel.setReadNum(readnum);

                    articleModel.setTime(time);

 

                    articleModels.add(articleModel);

                }

 

                mAdapter.setDatas(articleModels);

                mAdapter.notifyDataSetChanged();

            }

//网络请求失败的回调方法

            @Override

            public void onFailure(Throwable t, int errorNo, String strMsg) {

                super.onFailure(t, errorNo, strMsg);

            }

//正在请求网络数据的回调方法

            @Override

            public void onLoading(long count, long current) {

                super.onLoading(count, current);

            }

//实时进度的回调方法,主要用于更新进度显示

            @Override

            public AjaxCallBack<String> progress(boolean progress, int rate) {

                return super.progress(progress, rate);

            }

 

            @Override

            public void onStart() {

                super.onStart();

            }

        });

 

    }

//xutils3.0的网络请求,首先是设置请求参数,比如请求的URL

RequestParams params=new RequestParams(urlStr);

        x.http().get(params, new Callback.CommonCallback<String>() {

//请求成功的回调方法,解析请求返回的json数据并用JavaBean封装

            @Override

            public void onSuccess(String result) {

                headlineModels = HeadlineParser.parserJson(result);

                headlineAdapter.setDatas(headlineModels);

                headlineAdapter.notifyDataSetChanged();

            }

//请求发生错误的回调方法

            @Override

            public void onError(Throwable ex, boolean isOnCallback) {

 

            }

//取消请求的回调方法

            @Override

            public void onCancelled(CancelledException cex) {

            }

//请求完成的回调方法

            @Override

            public void onFinished() {

 

            }

        });

 

    }

/* 初始化界面相关内容,初始化各个组件,获取到各个组件的句柄*/

    @Override

    protected void initView() {

        setContentView(R.layout.activity_main);

        fl_menu = (FrameLayout) findViewById(R.id.fl_menu);

        layout_main = (FrameLayout) findViewById(R.id.layout_main);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.dl);

        rl_menu_read = (RelativeLayout) findViewById(R.id.rl_menu_read);

        rl_menu_blog = (RelativeLayout) findViewById(R.id.rl_menu_blog);

        rl_menu_ask = (RelativeLayout) findViewById(R.id.rl_menu_ask);

        rl_menu_collect = (RelativeLayout) findViewById(R.id.rl_menu_collect);

        rl_menu_set = (RelativeLayout) findViewById(R.id.rl_menu_set);

//给各个组件设置事件监听

        rl_menu_read.setOnClickListener(this);

        rl_menu_blog.setOnClickListener(this);

        rl_menu_ask.setOnClickListener(this);

        rl_menu_collect.setOnClickListener(this);

        rl_menu_set.setOnClickListener(this);

        fragmentManager = getSupportFragmentManager();

        setSelection(SELECTION_HEADLINE);

    }   

    /* * 初始化数据*/

         @Override

    protected void initData() {

        drawerToggle = new

ActionBarDrawerToggle(this, mDrawerLayout, R.string.open_drawer, R.string.close_drawer) {@Override

            public void onDrawerOpened(View drawerView) {

                super.onDrawerOpened(drawerView);

            }

 

            @Override

            public void onDrawerClosed(View drawerView) {

                super.onDrawerClosed(drawerView);

            }

        };

        mDrawerLayout.setDrawerListener(drawerToggle);

        drawerToggle.syncState();

    }

    /**

     * 初始化actionbar

     */

    @Override

    protected void initActionBar() {

        mActionBar = getSupportActionBar();

        mActionBar.setDisplayHomeAsUpEnabled(true);

        mActionBar.setHomeButtonEnabled(true);

        mActionBar.setTitle("头条");

        mActionBar.setDisplayShowHomeEnabled(true);

    }

    /**

     * 处理actionbar图标的点击事件,如果是drawerToggle的就不拦截,不是就拦截

     */

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

    return drawerToggle.onOptionsItemSelected(item) | super.onOptionsItemSelected(item);

    }

 

    //事件的实现,判断点击的是哪一个事件,并作出相应的处理

@Override

    public void onClick(View v) {

        switch (v.getId()) {

            case R.id.rl_menu_read:

                mDrawerLayout.closeDrawers();

                setSelection(SELECTION_HEADLINE);

                mActionBar.setTitle(R.string.menu_read);

                break;

            case R.id.rl_menu_blog:

                mDrawerLayout.closeDrawers();

                mActionBar.setTitle(R.string.menu_blog);

                setSelection(SELECTION_BLOG);

                break;

            case R.id.rl_menu_ask:

                mDrawerLayout.closeDrawers();

                mActionBar.setTitle(R.string.menu_ask);

                setSelection(SELECTION_ASK);

                break;

            case R.id.rl_menu_collect:

                mDrawerLayout.closeDrawers();

                mActionBar.setTitle(R.string.menu_collect);

                setSelection(SELECTION_COLLECT);

                break;

            case R.id.rl_menu_set:

                mDrawerLayout.closeDrawers();

                mActionBar.setTitle(R.string.menu_set);

                setSelection(SELECTION_SET);

                break;

        }

    }

 

    /**

     * 设置relativelayout的选中项,改变样式和切换fragment

     *每次用户点击,就会清除掉所有的样式,然后判断点击的位置,并为点击的位

*设置相应的样式,实现互斥的效果

     */

    private void setSelection(int position) {

        clearSelection();

        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        hideFragments(fragmentTransaction);

        switch (position) {

            case SELECTION_HEADLINE:

rl_menu_read.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));

                if (headlineFragment == null) {

                    headlineFragment = new HeadlineFragment();

                    fragmentTransaction.add(R.id.layout_main, headlineFragment);

                }

                showFragment(fragmentTransaction, headlineFragment);

                break;

            case SELECTION_BLOG:

rl_menu_blog.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));

                if (blogFragment == null) {

                    blogFragment = new BlogOsphereFragment();

                    fragmentTransaction.add(R.id.layout_main, blogFragment);

                }

                showFragment(fragmentTransaction, blogFragment);

                break;

            case SELECTION_ASK:

rl_menu_ask.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));

                if (askFragment == null) {

                    askFragment = new AskFragment();

                    fragmentTransaction.add(R.id.layout_main, askFragment);

                }

                showFragment(fragmentTransaction, askFragment);

                break;

            case SELECTION_COLLECT:

rl_menu_collect.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));

                if (collectFragment == null) {

                    collectFragment = new CollectFragment();

                    fragmentTransaction.add(R.id.layout_main, collectFragment);

                }

                showFragment(fragmentTransaction, collectFragment);

                break;

            case SELECTION_SET:

rl_menu_set.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));

                if (settingFragment == null) {

                    settingFragment = new SettingFragment();

                    fragmentTransaction.add(R.id.layout_main, settingFragment);

                }

                showFragment(fragmentTransaction, settingFragment);

                break;

        }

        fragmentTransaction.commit();

    }

 

    /**

     * 清除所有的选中状态

     */

    private void clearSelection() {

        rl_menu_read.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));

    rl_menu_blog.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));

    rl_menu_ask.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));

    rl_menu_collect.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));

    rl_menu_set.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));

    }

 

    /**

     * 隐藏所有的fragment

     */

    private void hideFragments(FragmentTransaction fragmentTransaction) {

        if (headlineFragment != null) {

            fragmentTransaction.hide(headlineFragment);

        }

        if (blogFragment != null) {

            fragmentTransaction.hide(blogFragment);

        }

        if (askFragment != null) {

            fragmentTransaction.hide(askFragment);

        }

        if (collectFragment != null) {

            fragmentTransaction.hide(collectFragment);

        }

        if (settingFragment != null) {

            fragmentTransaction.hide(settingFragment);

        }

    }

 

    /**

     * 显示fragment

     */

    private void showFragment(FragmentTransaction fragmentTransaction, Fragment baseFragment) {

        if (baseFragment != null) {

            fragmentTransaction.show(baseFragment);

        }

    }

 

实例下载地址

仿CSDN的Android手机端

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警