先来两效果图
这是最简单的滑动切换 适用初学者
第一步:布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<!-- 这里是显示页面的 没有初始化 什么都不会有 -->
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white" >
</android.support.v4.view.ViewPager>
<!-- 这里是小圆点布局 -->
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/viewGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="50.0dp"
android:gravity="center"
android:orientation="horizontal" >
</LinearLayout>
</RelativeLayout>
</FrameLayout>
下面是需要切换的页面布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_centerInParent="true"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="layout1" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_centerInParent="true"
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="layout2" />
</RelativeLayout>
第二步:MyAdapter
public class MyAdapter extends PagerAdapter{
private List<View> mListViews;
public MyAdapter(List<View> mListViews) {
this.mListViews = mListViews;//构造方法,参数是我们的页卡,这样比较方便。
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mListViews.get(position));//删除页卡
}
@Override
public Object instantiateItem(ViewGroup container, int position) {//这个方法用来实例化页卡
container.addView(mListViews.get(position), 0);//添加页卡
return mListViews.get(position);
}
@Override
public int getCount() {
return mListViews.size();//返回页卡的数量
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
}
第三步:MainActivity
public class MainActivity extends Activity {
private View view1,view2;
private List<View> viewList;
private ImageView[] img;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init(){
mViewPager = (ViewPager) this.findViewById(R.id.viewpager);
LayoutInflater lf=LayoutInflater.from(this);
view1=lf.inflate(R.layout.layout1, null);
view2=lf.inflate(R.layout.layout2, null);
viewList=new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
setImg(viewList);
mViewPager.setAdapter(new MyAdapter(viewList));
mViewPager.setOnPageChangeListener(new ViewPagerPageChangeListener());
}
//设置图片
public void setImg(List<View> viewList){
img = new ImageView[viewList.size()];
LinearLayout layout = (LinearLayout) findViewById(R.id.viewGroup);
for (int i = 0; i < viewList.size(); i++) {
img[i] = new ImageView(MainActivity.this);
if (0 == i) {
img[i].setBackgroundResource(R.drawable.on);
} else {
img[i].setBackgroundResource(R.drawable.noon);
}
img[i].setPadding(0, 0, 20, 0);
layout.addView(img[i]);
}
}
//滑动事件
class ViewPagerPageChangeListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onPageScrolled(int page, float positionOffset,
int positionOffsetPixels) {
}
@Override
public void onPageSelected(int page) {
//更新图标
for (int i = 0; i < viewList.size(); i++) {
if (page == i) {
img[i].setBackgroundResource(R.drawable.on);
} else {
img[i].setBackgroundResource(R.drawable.noon);
}
}
}
}
}
搞定收工
最后附上源码:http://download.csdn.net/detail/laigezao/8923351
(拒绝伸手党,需资源分1分)