基本信息
源码名称:仿CSDN的Android手机端
源码大小:68.64M
文件格式:.zip
开发语言:Java
更新时间:2016-12-08
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

这是一个通过抓取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);

        }

    }