您的位置:首页 > 其它

viewpager用法

2015-09-19 21:39 337 查看
public class ViewPageActivity extends ActionBarActivity {
private View page;
private Button btnOK;
private ViewPager viewPager;
private ImageView imageView;
private ArrayList<View> pageViews;//存放每页要要显示的view
private ImageView[] imageViews;//存放小圆点
private ViewGroup viewPictures;
private ViewGroup viewPoints;
private SharedPreferences isfirst;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*
在实际开发中LayoutInflater这个类还是非常有用的,
它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,
并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。
利用getLayoutInflater()来实例化inflater
*/
LayoutInflater inflater = getLayoutInflater();
//pageViews数组用来保存要分页显示的View(即每张图片的.xml布局文件)
pageViews=new ArrayList<View>();
//通过inflater.inflate(R.layout.viewpager01, null)来引入View
//并把它添加到pageViews数组中
pageViews.add(inflater.inflate(R.layout.viewpager01, null));
pageViews.add(inflater.inflate(R.layout.viewpager02,null));
pageViews.add(inflater.inflate(R.layout.viewpager03,null));
//动态创建存放小圆点的数组imageViews的大小,和保存几个View的数组pageViews的大小一致
imageViews=new ImageView[pageViews.size()];
/*布局文件viewpagers是显示pageViews和imageViews的载体,
即pageViews和imageViews所相关的控件都写在布局文件viewpagers中

*/
viewPictures = (ViewGroup) inflater.inflate(R.layout.viewpagers, null);
//为图片viewPager和小圆点viewPoints设置监听事件
viewPager = (ViewPager) viewPictures.findViewById(R.id.guidePagers);
viewPoints = (ViewGroup) viewPictures.findViewById(R.id.viewPoints);
// 添加小圆点导航的图片,即动态添加ImageView
for (int i = 0; i < pageViews.size(); i++) {
imageView = new ImageView(ViewPageActivity.this);
imageView.setLayoutParams(new ViewGroup.LayoutParams(20, 20));
imageView.setPadding(5, 0, 5, 0);
// 把小圆点放进数组中
imageViews[i] = imageView;
// 默认选中的是第一张图片,此时第一个小圆点是选中状态,其他不是
if (i == 0)
imageViews[i].setImageDrawable(getResources().getDrawable(
R.drawable.page_indicator_focused));
else
imageViews[i].setImageDrawable(getResources().getDrawable(
R.drawable.page_indicator_unfocused));
// 将imageviews添加到小圆点视图组
viewPoints.addView(imageViews[i]);
}
//设置显示viewPictures
setContentView(viewPictures);
//设置适配器NavigationPageAdapter()继承自PagerAdapter()
viewPager.setAdapter(new NavigationPageAdapter());
// 为viewpager添加监听,当view发生滑动变化时的响应
//同样NavigationPageChangeListener()继承自OnPageChangeListener()
viewPager.setOnPageChangeListener(new NavigationPageChangeListener());
}
// 导航图片view的适配器,必须要实现的是下面四个方法
class NavigationPageAdapter extends PagerAdapter {

@Override
public int getCount() {
return pageViews.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
// 初始化每个Item
@Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(pageViews.get(position));
//为其中第3个有按钮的View页面添加相应的监听事件
if(position==2){
btnOK=(Button)findViewById(R.id.btnOK);
btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击按钮", Toast.LENGTH_SHORT);
//                        Intent intent = new Intent(ViewPageActivity.this, PicActivity.class);
//                        startActivity(intent);
}
});
}
return pageViews.get(position);
// return page;
}
// 销毁每个Item
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(pageViews.get(position));
}
}
// viewpager的监听器,主要是onPageSelected要实现
class NavigationPageChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {

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

}
@Override
public void onPageSelected(int position) {
// 循环主要是控制导航中每个小圆点的状态
for (int i = 0; i < imageViews.length; i++) {
// 当前view下设置小圆点为选中状态
imageViews[i].setImageDrawable(getResources().getDrawable(
R.drawable.page_indicator_focused));
// 其余设置为未选中状态
if (position != i)
imageViews[i].setImageDrawable(getResources().getDrawable(
R.drawable.page_indicator_unfocused));
}

}

}

}
参考博客:<a target=_blank href="http://blog.csdn.net/alangdangjia/article/details/9054921">点击打开链接</a>
<a target=_blank href="http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html">点击打开链接</a>
<a target=_blank href="http://www.cnblogs.com/weixing/archive/2013/10/11/3363951.html">点击打开链接</a>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: