嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在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);
}
}