package cn.edu.chd.yitu;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
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.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import cn.edu.chd.adapter.YiPageAdapter;
import cn.edu.chd.adapter.YiPageAdapter.OnReloadListener;
import cn.edu.chd.view.YiTitleBar;
import cn.edu.chd.view.YiTitleBar.LeftButtonClickListener;
/**
* @author Rowand jj ѡ��ͼģ��
*/
public class ChooseModel extends FragmentActivity implements
OnPageChangeListener, OnTouchListener, OnClickListener
{
/**
* �Զ��������
*/
private YiTitleBar title_bar = null;
/**
* ��������������������
*/
private static final int mTouchSlop = 100;
private ViewPager vPager = null;
/**
* ѡ��ı���
*/
private TextView title1, title2, title3;
/**
* ѡ��µĺ���
*/
private ImageView tab_cursor = null;
/**
* ѡ��»��߳���
*/
private static int lineWidth = 0;
/**
* ƫ���� ���ֻ���Ļ���/3-ѡ����ȣ�/2
*/
private static int offset = 0;
/**
* ѡ�����
*/
private static final int TAB_COUNT = 3;
private static final String TAG = "ChooseModel";
/**
* ��ǰ��ʾ��ѡ�λ��
*/
private int current_index = 0;
/**
* �»��ߴ�һ��λ�û�������һ��λ�õ�ƫ����
*/
private int one = 0;
/**
* ѡ����⼯��
*/
private TextView[] titles;
/**
* ������
*/
private YiPageAdapter adapter = null;
private long exitTime = 0;
/**
* ҳ�����ݼ���
*/
private List<Fragment> fgs = null;
private int downX = 0, upX = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_choose_model);
Log.i(TAG,"ONCREATE....");
initTitleBar();
initImageView();
title1 = (TextView) findViewById(R.id.choose_model_title1);
title2 = (TextView) findViewById(R.id.choose_model_title2);
title3 = (TextView) findViewById(R.id.choose_model_title3);
titles = new TextView[]
{ title1, title2, title3 };
vPager = (ViewPager) findViewById(R.id.choose_model_vPager);
fgs = new ArrayList<Fragment>();
fgs.add(new TabNormalModel());
fgs.add(new TabMyWorks());
fgs.add(new TabDIY());
adapter = new YiPageAdapter(getSupportFragmentManager(), fgs);
adapter.setOnReloadListener(new OnReloadListener()// ������������ʱ����
{
@Override
public void onReload()
{
// fgs = null;
List<Fragment> newdata = new ArrayList<Fragment>();
newdata.add(new TabNormalModel());
newdata.add(new TabMyWorks());
newdata.add(new TabDIY());
adapter.setPagerItems(newdata);// ��������ҳ������<ҳ������̫�࣬���ַ�ʽ���˷��ڴ�>
}
});
vPager.setAdapter(adapter);
vPager.setOnPageChangeListener(this);// ����ҳ��ı�Ļص��¼�
vPager.setOnTouchListener(this);// ���ô���ʱ�Ļص��¼�
title1.setOnClickListener(this);
title2.setOnClickListener(this);
title3.setOnClickListener(this);
}
/**
* ��ʼ��������
*/
private void initTitleBar()
{
title_bar = (YiTitleBar) findViewById(R.id.ytb_choose_model);
title_bar.setOnLeftButtonClickListener(new LeftButtonClickListener()
{
@Override
public void leftButtonClick()
{
goSetting();
}
});
}
/**
* ��ʼ��ѡ��»������ʼ��ʾλ��
*/
private void initImageView()
{
tab_cursor = (ImageView) findViewById(R.id.tab_cursor);
// ��ȡͼƬ���
lineWidth = BitmapFactory.decodeResource(getResources(),
R.drawable.line).getWidth();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
// ��ȡ��Ļ���
int screenWidth = dm.widthPixels;
Matrix matrix = new Matrix();
offset = (int) ((screenWidth / (float) TAB_COUNT - lineWidth) / 2);
matrix.postTranslate(offset, 0);
// ���ó�ʼλ��
tab_cursor.setImageMatrix(matrix);
one = offset * 2 + lineWidth;
}
/**
* ǰ�����ý���
*/
private void goSetting()
{
Intent intent = new Intent(ChooseModel.this, Settings.class);
ChooseModel.this.startActivity(intent);
overridePendingTransition(R.anim.in_left, R.anim.slide_remain);// ���������
}
@Override
public void onPageSelected(int index)
{
// �л�ѡ�ʱ���ñ�����ɫ�仯�Լ��»��ߵ��ƶ�Ч��
Animation animation = new TranslateAnimation(one * current_index, one* index, 0, 0);
animation.setFillAfter(true);
animation.setDuration(300);
tab_cursor.startAnimation(animation);
titles[current_index].setTextColor(Color.BLACK);
titles[index].setTextColor(Color.RED);
current_index = index;
Log.i(TAG, "INDEX = " + current_index);
}
public YiPageAdapter getAdapter()
{
return adapter;
}
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (current_index != 0)
{
return false;
} else
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN://down�¼�������
downX = (int) event.getRawX();
break;
case MotionEvent.ACTION_UP:
upX = (int) event.getRawX();
Log.i(TAG,"downX = "+downX+",upX="+upX);
if (upX - downX > mTouchSlop)
{
goSetting();
}
break;
}
return false;
}
}
@Override
public void onBackPressed()
{
if ((System.currentTimeMillis() - exitTime) > 2000)
{
Toast.makeText(this, "�ٰ�һ���˳�����", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else
{
super.onBackPressed();
}
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.choose_model_title1:
vPager.setCurrentItem(0, false);
break;
case R.id.choose_model_title2:
vPager.setCurrentItem(1, false);
break;
case R.id.choose_model_title3:
vPager.setCurrentItem(2, false);
break;
}
}
@Override
public void onPageScrollStateChanged(int arg0)
{
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2)
{
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
if(ev.getAction() == MotionEvent.ACTION_DOWN)
{
this.onTouch(vPager, ev);
}
return super.dispatchTouchEvent(ev);
}
@Override
protected void onResume()
{
super.onResume();
//TODO ÿ�ζ������¼��أ��е㲻����
adapter.reLoad();
}
}