package com.topnews;
import java.util.ArrayList;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.topnews.adapter.NewsFragmentPagerAdapter;
import com.topnews.bean.NewsClassify;
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.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<NewsClassify> newsClassify=new ArrayList<NewsClassify>();
/** ��ǰѡ�е���Ŀ*/
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;
@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) {
// TODO Auto-generated method stub
}
});
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() {
newsClassify = Constants.getData();
}
/**
* ��ʼ��Column��Ŀ��
* */
private void initTabColumn() {
mRadioGroup_content.removeAllViews();
int count = newsClassify.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(newsClassify.get(i).getTitle());
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(), newsClassify.get(v.getId()).getTitle(), 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() {
int count = newsClassify.size();
for(int i = 0; i< count;i++){
Bundle data = new Bundle();
data.putString("text", newsClassify.get(i).getTitle());
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);
}
}