package com.topnews;
import java.util.ArrayList;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.topnews.adapter.NewsFragmentPagerAdapter;
import com.topnews.app.AppApplication;
import com.topnews.bean.ChannelItem;
import com.topnews.bean.ChannelManage;
import com.topnews.fragment.NewsFragment;
import com.topnews.tool.BaseTools;
import com.topnews.tool.Constants;
import com.topnews.view.ColumnHorizontalScrollView;
import com.topnews.view.DrawerView;
import android.content.Intent;
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.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
/**
* (android高仿系列)今日头条 --新闻阅读器
* author:RA
* blog : http://blog.csdn.net/vipzjyno1/
*/
public class MainActivity extends FragmentActivity {
/** 自定义HorizontalScrollView */
private ColumnHorizontalScrollView mColumnHorizontalScrollView;
LinearLayout mRadioGroup_content;
LinearLayout ll_more_columns;
RelativeLayout rl_column;
private ViewPager mViewPager;
private ImageView button_more_columns;
/** 用户选择的新闻分类列表*/
private ArrayList<ChannelItem> userChannelList=new ArrayList<ChannelItem>();
/** 当前选中的栏目*/
private int columnSelectIndex = 0;
/** 左阴影部分*/
public ImageView shade_left;
/** 右阴影部分 */
public ImageView shade_right;
/** 屏幕宽度 */
private int mScreenWidth = 0;
/** Item宽度 */
private int mItemWidth = 0;
private ArrayList<Fragment> fragments = new ArrayList<Fragment>();
protected SlidingMenu side_drawer;
/** head 头部 的中间的loading*/
private ProgressBar top_progress;
/** head 头部 中间的刷新按钮*/
private ImageView top_refresh;
/** head 头部 的左侧菜单 按钮*/
private ImageView top_head;
/** head 头部 的右侧菜单 按钮*/
private ImageView top_more;
/** 请求CODE */
public final static int CHANNELREQUEST = 1;
/** 调整返回的RESULTCODE */
public final static int CHANNELRESULT = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mScreenWidth = BaseTools.getWindowsWidth(this);
mItemWidth = mScreenWidth / 7;// 一个Item宽度为屏幕的1/7
initView();
initSlidingMenu();
}
/** 初始化layout控件*/
private void initView() {
mColumnHorizontalScrollView = (ColumnHorizontalScrollView)findViewById(R.id.mColumnHorizontalScrollView);
mRadioGroup_content = (LinearLayout) findViewById(R.id.mRadioGroup_content);
ll_more_columns = (LinearLayout) findViewById(R.id.ll_more_columns);
rl_column = (RelativeLayout) findViewById(R.id.rl_column);
button_more_columns = (ImageView) findViewById(R.id.button_more_columns);
mViewPager = (ViewPager) findViewById(R.id.mViewPager);
shade_left = (ImageView) findViewById(R.id.shade_left);
shade_right = (ImageView) findViewById(R.id.shade_right);
top_head = (ImageView) findViewById(R.id.top_head);
top_more = (ImageView) findViewById(R.id.top_more);
top_refresh = (ImageView) findViewById(R.id.top_refresh);
top_progress = (ProgressBar) findViewById(R.id.top_progress);
button_more_columns.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent_channel = new Intent(getApplicationContext(), ChannelActivity.class);
startActivityForResult(intent_channel, CHANNELREQUEST);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
});
top_head.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(side_drawer.isMenuShowing()){
side_drawer.showContent();
}else{
side_drawer.showMenu();
}
}
});
top_more.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(side_drawer.isSecondaryMenuShowing()){
side_drawer.showContent();
}else{
side_drawer.showSecondaryMenu();
}
}
});
setChangelView();
}
/**
* 当栏目项发生变化时候调用
* */
private void setChangelView() {
initColumnData();
initTabColumn();
initFragment();
}
/** 获取Column栏目 数据*/
private void initColumnData() {
userChannelList = ((ArrayList<ChannelItem>)ChannelManage.getManage(AppApplication.getApp().getSQLHelper()).getUserChannel());
}
/**
* 初始化Column栏目项
* */
private void initTabColumn() {
mRadioGroup_content.removeAllViews();
int count = userChannelList.size();
mColumnHorizontalScrollView.setParam(this, mScreenWidth, mRadioGroup_content, shade_left, shade_right, ll_more_columns, rl_column);
for(int i = 0; i< count; i++){
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mItemWidth , LayoutParams.WRAP_CONTENT);
params.leftMargin = 5;
params.rightMargin = 5;
// TextView localTextView = (TextView) mInflater.inflate(R.layout.column_radio_item, null);
TextView columnTextView = new TextView(this);
columnTextView.setTextAppearance(this, R.style.top_category_scroll_view_item_text);
// localTextView.setBackground(getResources().getDrawable(R.drawable.top_category_scroll_text_view_bg));
columnTextView.setBackgroundResource(R.drawable.radio_buttong_bg);
columnTextView.setGravity(Gravity.CENTER);
columnTextView.setPadding(5, 5, 5, 5);
columnTextView.setId(i);
columnTextView.setText(userChannelList.get(i).getName());
columnTextView.setTextColor(getResources().getColorStateList(R.color.top_category_scroll_text_color_day));
if(columnSelectIndex == i){
columnTextView.setSelected(true);
}
columnTextView.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);
}
}
Toast.makeText(getApplicationContext(), userChannelList.get(v.getId()).getName(), Toast.LENGTH_SHORT).show();
}
});
mRadioGroup_content.addView(columnTextView, i ,params);
}
}
/**
* 选择的Column里面的Tab
* */
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;
// rg_nav_content.getParent()).smoothScrollTo(i2, 0);
mColumnHorizontalScrollView.smoothScrollTo(i2, 0);
// mColumnHorizontalScrollView.smoothScrollTo((position - 2) *
// mItemWidth , 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() {
fragments.clear();//清空
int count = userChannelList.size();
for(int i = 0; i< count;i++){
Bundle data = new Bundle();
data.putString("text", userChannelList.get(i).getName());
data.putInt("id", userChannelList.get(i).getId());
NewsFragment newfragment = new NewsFragment();
newfragment.setArguments(data);
fragments.add(newfragment);
}
NewsFragmentPagerAdapter mAdapetr = new NewsFragmentPagerAdapter(getSupportFragmentManager(), fragments);
// mViewPager.setOffscreenPageLimit(0);
mViewPager.setAdapter(mAdapetr);
mViewPager.setOnPageChangeListener(pageListener);
}
/**
* ViewPager切换监听方法
* */
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) {
// TODO Auto-generated method stub
mViewPager.setCurrentItem(position);
selectTab(position);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
protected void initSlidingMenu() {
side_drawer = new DrawerView(this).initSlidingMenu();
}
private long mExitTime;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(side_drawer.isMenuShowing() ||side_drawer.isSecondaryMenuShowing()){
side_drawer.showContent();
}else {
if ((System.currentTimeMillis() - mExitTime) > 2000) {
Toast.makeText(this, "在按一次退出",
Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();
} else {
finish();
}
}
return true;
}
//拦截MENU按钮点击事件,让他无任何操作
if (keyCode == KeyEvent.KEYCODE_MENU) {
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
switch (requestCode) {
case CHANNELREQUEST:
if(resultCode == CHANNELRESULT){
setChangelView();
}
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}