package cn.com.scitc.swl.rssnews.activity;
import java.util.ArrayList;
import java.util.Date;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import cn.com.scitc.swl.rssnews.R;
import cn.com.scitc.swl.rssnews.adapter.NewsFragmentPagerAdapter;
import cn.com.scitc.swl.rssnews.constants.CommonUrl;
import cn.com.scitc.swl.rssnews.constants.Constants;
import cn.com.scitc.swl.rssnews.customview.ColumnHorizontalScrollView;
import cn.com.scitc.swl.rssnews.fragment.CollectFragment;
import cn.com.scitc.swl.rssnews.fragment.NewsFragment;
import cn.com.scitc.swl.rssnews.fragment.SubscibeFragment;
import cn.com.scitc.swl.rssnews.model.NewsClassify;
import cn.com.scitc.swl.rssnews.model.RssNews;
import cn.com.scitc.swl.rssnews.service.HttpUtils;
import cn.com.scitc.swl.rssnews.slidemenu.CustomSlideMenu;
import cn.com.scitc.swl.rssnews.tools.BaseTools;
import cn.com.scitc.swl.rssnews.tools.XMLTools;
public class MainActivity extends FragmentActivity implements
View.OnClickListener {
private ColumnHorizontalScrollView mColumnHorizontalScrollView;
LinearLayout mRadioGroup_content;
LinearLayout ll_more_columns;
RelativeLayout rl_column;
private ViewPager mViewPager;
private SlidingMenu slidingMenu;
/** 顶部按钮 */
private Button mProfile;
private ArrayList<NewsClassify> newsClassify = new ArrayList<NewsClassify>();
private int columnSelectIndex = 0;
public ImageView shade_left;
public ImageView shade_right;
private int mScreenWidth = 0;
private int mItemWidth = 0;
private ArrayList<Fragment> fragments = new ArrayList<Fragment>();
// 退出键处理
private long TIME_DIFF = 2 * 1000;
private long mLastBackTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
slidingMenu = CustomSlideMenu.initSlidingMenu(this);
mScreenWidth = BaseTools.getWindowsWidth(this);
mItemWidth = mScreenWidth / 7;//
initView();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String xmlStr = HttpUtils.httpGet(CommonUrl.RSS_NEWS_TAIMEITI,
"UTF-8");
// System.out.println("XML" + xmlStr);
ArrayList<RssNews> list = XMLTools.parseXML(xmlStr);
for (int i = 0; i < list.size(); i++) {
System.out.println("==title==>" + list.get(i).title);
// System.out.println(list.get(i).link);
// System.out.println("==description==>"
// + list.get(i).description);
// System.out.println("==content==>" + list.get(i).content);
// System.out.println(list.get(i).pubDate);
if (list.get(i).imgUrl != null
&& !"".equals(list.get(i).imgUrl)) {
System.out.println("==imgUrl==>" + list.get(i).imgUrl);
System.out.println("==imgName==>" + list.get(i).imgName);
}
}
// List<RssNews> list1 = list.subList(0, list.size() / 2);
// List<RssNews> list2 = list.subList(list.size() / 2,
// list.size());
// System.out.println(list.toString());
}
});
}
private void initView() {
mColumnHorizontalScrollView = (ColumnHorizontalScrollView) findViewById(R.id.mColumnHorizontalScrollView);
mRadioGroup_content = (LinearLayout) findViewById(R.id.mRadioGroup_content);
mViewPager = (ViewPager) findViewById(R.id.mViewPager);
mProfile = (Button) findViewById(R.id.top_profile);
mProfile.setOnClickListener(this);
setChangelView();
}
private void setChangelView() {
initColumnData();
initTabColumn();
initFragment();
}
private void initColumnData() {
newsClassify = Constants.getData();
}
/**
* */
private void initTabColumn() {
mRadioGroup_content.removeAllViews();
int count = newsClassify.size();
mColumnHorizontalScrollView.setParam(this, mScreenWidth,
mRadioGroup_content, ll_more_columns, rl_column);
for (int i = 0; i < count; i++) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
mItemWidth, LayoutParams.WRAP_CONTENT);
params.leftMargin = 15;
params.rightMargin = 20;
TextView localTextView = new TextView(this);
localTextView.setTextAppearance(this,
R.style.top_category_scroll_view_item_text);
// localTextView.setBackground(R.drawable.radio_text_sel);
localTextView.setGravity(Gravity.CENTER);
localTextView.setPadding(5, 0, 5, 0);
localTextView.setId(i);
localTextView.setText(newsClassify.get(i).getTitle());
localTextView.setTextColor(getResources().getColorStateList(
R.color.top_category_scroll_text_color_day));
if (columnSelectIndex == i) {
localTextView.setSelected(true);
}
localTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < mRadioGroup_content.getChildCount(); i++) {
View localView = mRadioGroup_content.getChildAt(i);
if (localView != v)
localView.setSelected(false);
else {
localView.setSelected(true);
mViewPager.setCurrentItem(i);
}
}
}
});
mRadioGroup_content.addView(localTextView, i, params);
}
}
/**
* */
private void selectTab(int tab_postion) {
columnSelectIndex = tab_postion;
for (int i = 0; i < mRadioGroup_content.getChildCount(); i++) {
View checkView = mRadioGroup_content.getChildAt(tab_postion);
int k = checkView.getMeasuredWidth();
int l = checkView.getLeft();
int i2 = l + k / 2 - mScreenWidth / 2;
mColumnHorizontalScrollView.smoothScrollTo(i2, 0);
}
for (int j = 0; j < mRadioGroup_content.getChildCount(); j++) {
View checkView = mRadioGroup_content.getChildAt(j);
boolean ischeck;
if (j == tab_postion) {
ischeck = true;
} else {
ischeck = false;
}
checkView.setSelected(ischeck);
}
}
/**
* 初始化fragment
* */
private void initFragment() {
Bundle data = new Bundle();
data.putString("text", "订阅");
SubscibeFragment subscibeFragment = new SubscibeFragment();
subscibeFragment.setArguments(data);
fragments.add(subscibeFragment);
Bundle data2 = new Bundle();
data.putString("text", "推荐");
NewsFragment newfragment = new NewsFragment();
subscibeFragment.setArguments(data2);
fragments.add(newfragment);
Bundle data3 = new Bundle();
data3.putString("text", "收藏");
CollectFragment collectFragment = new CollectFragment();
subscibeFragment.setArguments(data3);
fragments.add(collectFragment);
NewsFragmentPagerAdapter mAdapetr = new NewsFragmentPagerAdapter(
getSupportFragmentManager(), fragments);
mViewPager.setAdapter(mAdapetr);
mViewPager.setOnPageChangeListener(pageListener);
}
/**
* 页面改变监听事件
* */
public OnPageChangeListener pageListener = new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
mViewPager.setCurrentItem(position);
selectTab(position);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/**
* 按钮监听事件
*
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.top_profile:
slidingMenu.showMenu();
break;
default:
break;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* Check the Network Connection
*
* @return
*/
public boolean isOnline() {
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}
@SuppressLint("ShowToast")
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
long now = new Date().getTime();
if (now - mLastBackTime < TIME_DIFF) {
return super.onKeyDown(keyCode, event);
} else {
mLastBackTime = now;
Toast.makeText(this, "重复刚才的动作将退出应用", 2000).show();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}