您的位置:首页 > 其它

自定义ViewPagerIndicator

2016-06-18 11:45 197 查看
public class MyViewPagerIndicator extends HorizontalScrollView implements

OnClickListener {

private LinearLayout linearLayout;

private String[] titles;

private List<View> viewList = new ArrayList<View>();

private ViewPager viewpager;

public MyViewPagerIndicator(Context context, AttributeSet attrs,

int defStyle) {

super(context, attrs, defStyle);

initView();

}

public MyViewPagerIndicator(Context context, AttributeSet attrs) {

super(context, attrs);

initView();

}

public MyViewPagerIndicator(Context context) {

super(context);

initView();

}

public void setViewPager(ViewPager viewpager) {

this.viewpager = viewpager;

viewpager.setOnPageChangeListener(new OnPageChangeListener() {

@Override

public void onPageSelected(int arg0) {

setCurrentItem(arg0);

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

// TODO Auto-generated method stub

}

@Override

public void onPageScrollStateChanged(int arg0) {

// TODO Auto-generated method stub

}

});

}

private void initView() {

// 创建线性布局

linearLayout = new LinearLayout(getContext());

this.addView(linearLayout);

}

public void addTitles(String[] titles) {

this.titles = titles;

viewList.clear();

for (int i = 0; i < titles.length; i++) {

View view = View.inflate(getContext(), R.layout.titles_item, null);

TextView tv_titles = (TextView) view.findViewById(R.id.tv_titles);

TextView tv_line = (TextView) view.findViewById(R.id.tv_line);

viewList.add(view);

tv_titles.setText(titles[i]);

if (i == 0) {

tv_titles.setTextColor(Color.RED);

tv_line.setVisibility(View.VISIBLE);

} else {

tv_titles.setTextColor(Color.BLACK);

tv_line.setVisibility(View.GONE);

}

view.setId(i);

view.setOnClickListener(this);

// 设置红线之间的距离

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(

LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

linearLayout.addView(view, params);

}

}

// 设置默认要显示的内容

public void setCurrentItem(int position) {

// this.setScrollBarStyle(HorizontalScrollView.GONE);

int width = linearLayout.getChildAt(position).getWidth();

this.scrollTo(width * position, 0);

for (int i = 0; i < titles.length; i++) {

View view = viewList.get(i);

TextView tv_titles = (TextView) view.findViewById(R.id.tv_titles);

TextView tv_line = (TextView) view.findViewById(R.id.tv_line);

if (position == i) {

// 设置传递过来的viewpager的当前页

viewpager.setCurrentItem(i);

tv_titles.setTextColor(Color.RED);

tv_line.setVisibility(View.VISIBLE);

} else {

tv_titles.setTextColor(Color.BLACK);

tv_line.setVisibility(View.GONE);

}

}

}

@Override

public void onClick(View v) {

setCurrentItem(v.getId());

}

}

public class MainActivity extends Activity {

private MyViewPagerIndicator myindicator;

private String[] titles = { "哈哈", "呵呵", "吼吼", "啦啦", "呀呀", "嘎嘎", "飞飞", "吱吱",

"唧唧", "歪歪", "哒哒", "QQ", "滴滴", "嘻嘻" };

private int[] pics = { R.drawable.a10, R.drawable.a3, R.drawable.a5,

R.drawable.a8, R.drawable.a9, R.drawable.a32, R.drawable.a35,

R.drawable.a34, R.drawable.a33, R.drawable.a36, R.drawable.a37,

R.drawable.a38, R.drawable.a39, R.drawable.ab};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

myindicator = (MyViewPagerIndicator) findViewById(R.id.myindicator);

ViewPager viewpager = (ViewPager) findViewById(R.id.vp);

myindicator.setViewPager(viewpager);

myindicator.addTitles(titles);

viewpager.setAdapter(new PagerAdapter() {

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

// TODO Auto-generated method stub

return arg0==arg1;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return pics.length;

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

ImageView imageview=new ImageView(MainActivity.this);

imageview.setImageResource(pics[position]);

container.addView(imageview);

return imageview;

}

@Override

public void destroyItem(ViewGroup container, int position,

Object object) {

container.removeView((View) object);

}

});

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: