package com.androidapp.viewpager;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Matrix;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
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.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class TestViewPagerActivity extends Activity {
ViewPager viewPager;// ViewPager对象
ImageView img_bottom_line;// 跟随图标
TextView text_one;// 标题1
TextView text_two;// 标题2
TextView text_three;// 标题3
int currIndex = 0;// 当前页卡编号
int bmpW;// 图片宽度
int offset;// 动画图片偏移量
View view1;
View view2;
View view3;
List<View> views;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initImageView();
initTextView();
initViewPager();
}
public void initTextView() {
text_one = (TextView) findViewById(R.id.text_one);
text_two = (TextView) findViewById(R.id.text_two);
text_three = (TextView) findViewById(R.id.text_three);
text_one.setOnClickListener(new MyOnClick(0));
text_two.setOnClickListener(new MyOnClick(1));
text_three.setOnClickListener(new MyOnClick(2));
}
public void initImageView() {
img_bottom_line = (ImageView) findViewById(R.id.img_bottom_line);
bmpW = img_bottom_line.getLayoutParams().width;
// BitmapFactory.decodeResource(getResources(), id);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenW = dm.widthPixels;
System.out.println("------------" + screenW);
offset = (screenW / 3 - bmpW) / 2;
Matrix matrix = new Matrix();
matrix.postTranslate(offset, 0);
img_bottom_line.setImageMatrix(matrix);// 设置动画初始位置
}
public void initViewPager() {
viewPager = (ViewPager) findViewById(R.id.viewPager);
views = new ArrayList<View>();
LayoutInflater inflater = getLayoutInflater();
view1 = inflater.inflate(R.layout.one, null);
view2 = inflater.inflate(R.layout.two, null);
view3 = inflater.inflate(R.layout.three, null);
views.add(view1);
views.add(view2);
views.add(view3);
viewPager.setAdapter(new MyViewPageAdapter(views));
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
class MyViewPageAdapter extends PagerAdapter {
private List<View> listViews;
MyViewPageAdapter(List<View> listViews) {
this.listViews = listViews;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(listViews.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(listViews.get(position), 0);
return listViews.get(position);
}
@Override
public int getCount() {
return listViews.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
class MyOnPageChangeListener implements OnPageChangeListener {
int one = offset * 2 + bmpW;// 页卡1-->页卡2 偏移量
int two = offset * 2;// 页卡2-->页卡3 偏移量
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
/**
* 页卡切换监听
*/
@Override
public void onPageSelected(int arg0) {
Animation animation = new TranslateAnimation(one * currIndex, one
* arg0, 0, 0);
currIndex = arg0;
animation.setFillAfter(true);// True:图片停在动画结束位置
animation.setDuration(300);
img_bottom_line.startAnimation(animation);
Toast.makeText(TestViewPagerActivity.this,
"您选择了" + viewPager.getCurrentItem() + "页卡",
Toast.LENGTH_SHORT).show();
}
}
/**
* 表头点击事件
*
* @author GM
*
*/
class MyOnClick implements OnClickListener {
int index = 0;
MyOnClick(int i) {
this.index = i;
}
@Override
public void onClick(View v) {
viewPager.setCurrentItem(index);
}
}
}
评论0