由于ViewPager是存在与V4包的所以xml中添加组件需要手动填写
操作步骤如下:
Ø 创建一个Android项目,在主Activity的布局文件中创建一个ViewPager控件和一个Button控件,Button控件的默认显示为“Gone”(3分钟)
Ø 在主Activity中实现ViewPager功能(10分钟)
1、 实例化控件
2、 初始化数据
3、 创建适配器对象
4、 绑定适配器
Ø 添加ViewPager的监听器,当滑动到第三页时,设置Button按钮的显示状态为“visible”,当滑动后如果不是第三页则设置button按钮的显示状态为“gone”(5分钟)
Ø 给Button按钮添加点击监听,点击后跳转到显示“我是主页面”的Activity。(2分钟)
<android.support.v4.view.ViewPager
/>
接下来直接上干货xml代码
activity_main.xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<!-- 这里就是ViewPaget组件-->
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<!-- ViewPager组件自动轮播的时候给予的动态效果-->
<RadioGroup
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/viewpager"
android:layout_centerHorizontal="true"
android:layout_marginBottom="124dp"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RadioGroup>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/viewpager"
android:layout_centerHorizontal="true"
android:layout_marginBottom="47dp"
android:text="体验"
android:visibility="gone"
/>
</RelativeLayout>
activity_show.xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ShowActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是主页" />
</RelativeLayout>
接下来是java代码片段首先写的是Viewpager的适配器
ViewPagerAdapter.java
package com.example.Adapter;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
public class ViewPagerAdapter extends PagerAdapter {
//这个是传入的图片集合
private List<Integer> list;
//上下文
private Context context;
public ViewPagerAdapter(List<Integer> list, Context context) {
super();
this.list = list;
this.context = context;
}
//想要设置无限轮播必须要在getCount中设置整数的最大值
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
//判断是否在连接状态
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
//删除视图的方法
//如果不删除返回值 在底层则会抛出异常,底层返回的就是异常
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View) object);
}
//添加创建视图方法
//自动轮播无限轮播只试用于图片ImageView 组件,如有其他自己开发!
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
ImageView imageView = new ImageView(context);
imageView.setImageResource(list.get(position%list.size()));
//这行代码是拉伸图片yx轴坐标
imageView.setScaleType(ScaleType.FIT_XY);
container.addView(imageView);
return imageView;
}
}
MainActivity.java
package com.example.demo3;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioGroup;
import com.example.Adapter.ViewPagerAdapter;
public class MainActivity extends Activity {
private RadioGroup group;
private Button btn;
private ViewPager viewpager;
private List<Integer> list;
private Handler handler = new Handler();
private int i;
private Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//获取控件
setContentView(R.layout.activity_main);
group = (RadioGroup) findViewById(R.id.group);
btn = (Button) findViewById(R.id.btn);
viewpager = (ViewPager) findViewById(R.id.viewpager);
//模拟数据
list = new ArrayList<Integer>();
list.add(R.drawable.yi);
list.add(R.drawable.er);
list.add(R.drawable.san);
//加载适配器
ViewPagerAdapter adapter = new ViewPagerAdapter(list, this);
viewpager.setAdapter(adapter);
viewpager.setCurrentItem(list.size()*10000);
//这个被注释掉的部分就是自动轮播
/* i = viewpager.getCurrentItem();
runnable = new Runnable() {
@Override
public void run() {
i++;
viewpager.setCurrentItem(i);
handler.postDelayed(runnable, 1000);
}
};
handler.postDelayed(runnable, 1000);*/
viewpager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
switch (arg0%list.size()) {
case 0:
group.check(R.id.button01);
btn.setVisibility(View.GONE);
break;
case 1:
group.check(R.id.button02);
btn.setVisibility(View.GONE);
break;
case 2:
group.check(R.id.button03);
btn.setVisibility(View.VISIBLE);
break;
}
}
@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
}
});
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this, ShowActivity.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
ShowActivity.java
package com.example.demo3;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class ShowActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.show, menu);
return true;
}
}