MainActivity主方法
package com.yuan.todaynews;
import java.util.HashMap;
import java.util.Random;
import com.astuetz.PagerSlidingTabStrip;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.yuan.todaynews.adapter.FragmentAdapter;
import com.yuan.todaynews.adapter.MenuAdapter;
import com.yuan.todaynews.base.BaseActivity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ToggleButton;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;
import cn.sharesdk.tencent.qq.QQ;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import cn.smssdk.gui.RegisterPage;
public class MainActivity extends BaseActivity {
/**
* 春花雪雨命,
* 夏草风暖心,
* 秋来百花枯,
* 冬去万物苏,
* 四季往反复,
* 谁言心中苦?
* 一天一月又一年,
* 天天月月又年年
* ...
*/
String APPKEYShouJi="15265c97533fc";
String APPSECRETShouJi="8809e834d31404f9cfebd3b7828810e8";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
ShareSDK.initSDK(this);
/**
* 图片点击实现侧滑
*/
ImageView imag_head = (ImageView) findViewById(R.id.imag_head);
imag_head.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initSlidingMenuView();
initButton();
initRegister();
initLonging();
initShare();
initLv();
}
});
initView();
}
/**
* ListView每条item的点击事件
*/
private void initLv() {
ListView menu_lv=(ListView) findViewById(R.id.menu_lv);
menu_lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
switch (position) {
case 0:
Intent intent=new Intent(MainActivity.this, LogingActivity.class);
startActivity(intent);
break;
default:
Toast.makeText(getApplicationContext(), "哎咿哎咿呦", Toast.LENGTH_SHORT).show();
break;
}
}
});
}
/**
* qq分享
*/
private void initShare() {
ImageView img_kongjian=(ImageView) findViewById(R.id.img_kongjian);
img_kongjian.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
OnekeyShare oks = new OnekeyShare();
oks.disableSSOWhenAuthorize();
oks.setTitle("liuxiyuan521博客");
oks.setTitleUrl("http://blog.csdn.net/liuxiyuan521?viewmode=list");
oks.setText("风吹雨落成花,刹那间走天涯");
oks.setUrl("http://blog.csdn.net/liuxiyuan521?viewmode=list");
oks.setComment("我是测试评论文本");
oks.setSite(getString(R.string.app_name));
oks.setSiteUrl("http://blog.csdn.net/liuxiyuan521?viewmode=list");
oks.show(MainActivity.this);
}
});
}
/**
* qq登录
*/
private void initLonging() {
ImageView img_qq=(ImageView) findViewById(R.id.img_qq);
img_qq.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Platform qq = ShareSDK.getPlatform(MainActivity.this, QQ.NAME);
qq.authorize();
qq.setPlatformActionListener(new PlatformActionListener() {
@Override
public void onError(Platform qq, int arg1, Throwable arg2) {
System.out.println("第三方登录失败");
}
@Override
public void onComplete(Platform qq, int arg1, HashMap<String, Object> arg2) {
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
}
@Override
public void onCancel(Platform arg0, int arg1) {
}
});
}
});
}
/**
* 短信验证
*/
private void initRegister() {
SMSSDK.initSDK(getApplicationContext(), APPKEYShouJi, APPSECRETShouJi);
ImageView img_shouji=(ImageView) findViewById(R.id.img_shouji);
img_shouji.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
RegisterPage rePage=new RegisterPage();
rePage.setRegisterCallback(new EventHandler(){
@Override
public void afterEvent(int event, int result, Object data) {
if(result==SMSSDK.RESULT_COMPLETE){
@SuppressWarnings("unchecked")
HashMap<String, Object> maps=(HashMap<String, Object>) data;
String country=(String) maps.get("country");
String phone=(String) maps.get("phone");
submitUserInfo(country, phone);
}
}
});
rePage.show(getApplicationContext());
}
});
}
/**
* 提交用户信息
*/
public void submitUserInfo(String country,String phone){
Random r=new Random();
String uid=Math.abs(r.nextInt())+"";
String nickName="LIUXIYUAN";
SMSSDK.submitUserInfo(uid, nickName, null, country, phone);
}
/**
* 夜间模式
*/
private void initButton() {
ToggleButton btn = (ToggleButton) findViewById(R.id.btn_menu_night);
btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
dayMode();
} else {
nightMode();
}
}
});
}
/**
* 导航栏效果
*/
private void initView() {
PagerSlidingTabStrip pager_tab = (PagerSlidingTabStrip) findViewById(R.id.pager_tab);
ViewPager ViPager = (ViewPager) findViewById(R.id.ViPager);
ViPager.setAdapter(new FragmentAdapter(getSupportFragmentManager()));
pager_tab.setViewPager(ViPager);
}
/**
* 侧滑
*/
private void initSlidingMenuView() {
SlidingMenu menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
menu.setBehindOffsetRes(R.dimen.offess);
menu.setFadeDegree(0.9f);
menu.setMenu(R.layout.menu_item);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
menu.showMenu();
ListView menu_lv = (ListView) findViewById(R.id.menu_lv);
menu_lv.setVerticalScrollBarEnabled(false);
menu_lv.setFastScrollEnabled(false);
menu_lv.setAdapter(new MenuAdapter(getApplicationContext()));
}
}
头部适配
package com.yuan.todaynews.adapter;
import com.yuan.todaynews.fragment.CaijingFragment;
import com.yuan.todaynews.fragment.GuojiFragment;
import com.yuan.todaynews.fragment.GuoneiFragment;
import com.yuan.todaynews.fragment.JunshiFragment;
import com.yuan.todaynews.fragment.KejiFragment;
import com.yuan.todaynews.fragment.ShehuiFragment;
import com.yuan.todaynews.fragment.ShipingFragment;
import com.yuan.todaynews.fragment.ShishangFragment;
import com.yuan.todaynews.fragment.TiyuFragment;
import com.yuan.todaynews.fragment.TopFragment;
import com.yuan.todaynews.fragment.TuijianFragment;
import com.yuan.todaynews.fragment.YuleFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class FragmentAdapter extends FragmentPagerAdapter {
String[] title = { "推荐","视频","头条", "社会", "国内", "国际", "娱乐", "体育", "军事", "科技", "财经", "时尚" };
public FragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return title[position];
}
@Override
public int getCount() {
return title.length;
}
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:{
return new TuijianFragment();
}
case 1:{
return new ShipingFragment();
}
case 2:{
return new TopFragment();
}
case 3:{
return new ShehuiFragment();
}
case 4:{
return new GuoneiFragment();
}
case 5:{
return new GuojiFragment();
}
case 6:{
return new YuleFragment();
}
case 7:{
return new TiyuFragment();
}
case 8:{
return new JunshiFragment();
}
case 9:{
return new KejiFragment();
}
case 10:{
return new CaijingFragment();
}
case 11:{
return new ShishangFragment();
}
default :
return null;
}
}
}
Fragment布局实例
package com.yuan.todaynews.fragment;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.yuan.todaynews.R;
import com.yuan.todaynews.WebviewActivity;
import com.yuan.todaynews.adapter.FuAdapter;
import com.yuan.todaynews.bean.NewsHotspot;
import com.yuan.todaynews.bean.NewsHotspot.DataBean;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
public class ShipingFragment extends Fragment {
private String URL = "http://ic.snssdk.com/2/article/v25/stream/?category=video&count=20&min_behot_time=1455521349&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522107&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000";
private ArrayList<DataBean> list=new ArrayList<DataBean>();
private XListView xLv;
private FuAdapter adapter;
private NewsHotspot bean;
@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int i = msg.what;
NewsHotspot bean = (NewsHotspot) msg.obj;
if (i == 2) {
list.addAll(bean.getData());
} else if (i == 0) {
list.clear();
list.addAll(bean.getData());
}
adapter.notifyDataSetChanged();
close();
};
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.top_fragment, container, false);
xLv = (XListView) v.findViewById(R.id.xLv);
xLv.setPullRefreshEnable(true);
xLv.setPullLoadEnable(true);
adapter = new FuAdapter(getActivity(), list);
xLv.setAdapter(adapter);
initData(0);
xLv.setXListViewListener(new IXListViewListener() {
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@SuppressLint("SimpleDateFormat")
public void run() {
initData(0);
/**
* 获取当前时间 yyyy年MM月dd日
*/
SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日 HH:mm");
Date curDate = new Date(System.currentTimeMillis());
String str = formatter.format(curDate);
xLv.setRefreshTime(str);
}
}, 2000);
}
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
public void run() {
initData(2);
}
}, 2000);
}
});
return v;
}
private void initData(final int i) {
HttpUtils hu = new HttpUtils();
/**
* 第一参数:请求方式
* 第二参数:请求网络地址
* 第三参数:操作结果
*/
hu.send(HttpMethod.GET, URL, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
Toast.makeText(getActivity(), "解析错误", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(ResponseInfo<String> result) {
String json = result.result;
Gson gson = new Gson();
bean = gson.fromJson(json, NewsHotspot.class);
Message msg = new Message();
msg.what = i;
msg.obj = bean;
handler.sendMessage(msg);
xLv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent intent = new Intent(getActivity(), WebviewActivity.class);
intent.putExtra("url", list.get(arg2 - 1).getUrl());
startActivity(intent);
}
});
}
});
}
protected void close() {
xLv.stopLoadMore();
xLv.stopRefresh();
}
}
package com.yuan.todaynews.fragment;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.yuan.todaynews.R;
import com.yuan.todaynews.WebviewActivity;
import com.yuan.todaynews.adapter.FragmentPagerAdapter;
import com.yuan.todaynews.bean.NewsBean;
import com.yuan.todaynews.bean.NewsData;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
public class TopFragment extends Fragment {
private String URL = "http://v.juhe.cn/toutiao/index?type=top&key=cd94a84c68c7574ff3a57a511e105baf";
private ArrayList<NewsData> list=new ArrayList<NewsData>();
private XListView xLv;
private FragmentPagerAdapter adapter;
private NewsBean bean;
@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int i = msg.what;
NewsBean bean = (NewsBean) msg.obj;
if (i == 2) {
list.addAll(bean.result.data);
} else if (i == 0) {
list.clear();
list.addAll(bean.result.data);
}
adapter.notifyDataSetChanged();
close();
};
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.top_fragment, container, false);
xLv = (XListView) v.findViewById(R.id.xLv);
xLv.setPullRefreshEnable(true);
xLv.setPullLoadEnable(true);
adapter = new FragmentPagerAdapter(list, getActivity());
xLv.setAdapter(adapter);
initData(0);
xLv.setXListViewListener(new IXListViewListener() {
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@SuppressLint("SimpleDateFormat")
public void run() {
initData(0);
/**
* 获取当前时间yyyy年MM月dd日
*/
SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日 HH:mm");
Date curDate = new Date(System.currentTimeMillis());
String str = formatter.format(curDate);
xLv.setRefreshTime(str);
}
}, 2000);
}
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
public void run() {
initData(2);
}
}, 2000);
}
});
return v;
}
private void initData(final int i) {
HttpUtils hu = new HttpUtils();
hu.send(HttpMethod.GET, URL, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
Toast.makeText(getActivity(), "解析错误", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(ResponseInfo<String> result) {
String json = result.result;
Gson gson = new Gson();
bean = gson.fromJson(json, NewsBean.class);
Message msg = new Message();
msg.what = i;
msg.obj = bean;
handler.sendMessage(msg);
xLv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent intent = new Intent(getActivity(), WebviewActivity.class);
intent.putExtra("url", list.get(arg2 - 1).url);
startActivity(intent);
}
});
}
});
}
protected void close() {
xLv.stopLoadMore();
xLv.stopRefresh();
}
}
Web页面
package com.yuan.todaynews;
import com.yuan.todaynews.base.BaseActivity;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebviewActivity extends BaseActivity {
private ProgressDialog progressDialog = null;
private WebView webVi = null;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_webview);
webVi = (WebView) findViewById(R.id.webVi);
webVi.getSettings().setJavaScriptEnabled(true);
webVi.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
Intent intent = getIntent();
String url = intent.getStringExtra("url");
webVi.loadUrl(url);
if (webVi != null) {
webVi.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressDialog.dismiss();
}
});
initVIew(url);
}
}
private void initVIew(String uri) {
if (webVi != null) {
progressDialog = ProgressDialog.show(WebviewActivity.this, "加载", "正在加载,请稍候!", true);
webVi.loadUrl(uri);
}
}
}