package cn.fanfan.found; import cn.fanfan.main.R; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.ImageView; import android.widget.TextView; public class FoundFragment extends Fragment { private int offset = 0;// ����ͼƬƫ���� private int currIndex = 0;// ��ǰҳ����� private int bmpW;// ����ͼƬ��� private int itemcount = 3; private ViewPager viewPager; private ImageView cursor;// ����ͼƬ private TextView t1, t2, t3;// ҳ��ͷ�� private FoundPageAdapter foundPageAdapter; public FoundFragment() { // TODO Auto-generated constructor stub } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.found_fragment, container, false); cursor = (ImageView) rootView.findViewById(R.id.cursor); DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); int screenW = dm.widthPixels;// ��ȡ�ֱ��ʿ�� LayoutParams ps = cursor.getLayoutParams(); ps.width = screenW / 3; cursor.setLayoutParams(ps); t1 = (TextView) rootView.findViewById(R.id.text1); t2 = (TextView) rootView.findViewById(R.id.text2); t3 = (TextView) rootView.findViewById(R.id.text3); viewPager = (ViewPager) rootView.findViewById(R.id.foundpager); InitTextView(); InitImageView(); InitViewPager(); return rootView; } private void InitTextView() { t1.setOnClickListener(new MyOnClickListener(0)); t2.setOnClickListener(new MyOnClickListener(1)); t3.setOnClickListener(new MyOnClickListener(2)); } private void InitViewPager() { foundPageAdapter = new FoundPageAdapter(getActivity() .getSupportFragmentManager()); viewPager.setAdapter(foundPageAdapter); viewPager.setOnPageChangeListener(new MyOnPageChangeListener()); } private void InitImageView() { bmpW = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.cursor_min).getWidth();// ��ȡͼƬ��� DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); int screenW = dm.widthPixels;// ��ȡ�ֱ��ʿ�� LayoutParams params = cursor.getLayoutParams(); params.width = screenW / 3; cursor.setLayoutParams(params); offset = (screenW / itemcount - bmpW) / 2;// ����ƫ���� Matrix matrix = new Matrix(); matrix.postTranslate(offset, 0); cursor.setImageMatrix(matrix);// ���ö�����ʼλ�� } public class MyOnClickListener implements View.OnClickListener { private int index = 0; public MyOnClickListener(int i) { index = i; } @Override public void onClick(View v) { viewPager.setCurrentItem(index); } }; public class FoundPageAdapter extends FragmentStatePagerAdapter { public FoundPageAdapter(FragmentManager fm) { // TODO Auto-generated constructor stub super(fm); } @Override public int getCount() { // TODO Auto-generated method stub return 3; } @Override public Fragment getItem(int position) { // TODO Auto-generated method stub return FoundArrayFragment.newInstance(position); } } public class MyOnPageChangeListener implements OnPageChangeListener { int one = offset * 2 + bmpW; @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub Animation animation = null; if (currIndex == 0) { animation = new TranslateAnimation(offset, one * arg0, 0, 0); } else { animation = new TranslateAnimation(one * currIndex, one * arg0, 0, 0); } currIndex = arg0; animation.setFillAfter(true);// True:ͼƬͣ�ڶ�������λ�� animation.setDuration(200); cursor.startAnimation(animation); } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } } }