一、新建项目,引入ViewPager控件
ViewPager。它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换。
1.在主布局文件里加入
<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"
tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
2、新建一个layout,用于滑动切换的视图
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/mImg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY" />
</LinearLayout>
二、MainActivity代码实战
通过Handler不间断的发送消息来实现自动轮播
public class MainActivity extends AppCompatActivity {
//创建一个数组用来存放滑动轮播的图片(最少4张图片)
int[] ii={R.mipmap.a2,R.mipmap.a3,R.mipmap.ic_launcher,R.mipmap.a3};
View[] view=new View[ii.length]; //用来存放滑动的视图
int index=0; //图片滑动的下表
private ViewPager vp;
boolean isFlag=true;// 关闭广告轮播的标志
boolean TouchFlag=false;// 触摸锁
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
if (TouchFlag)
return ;
if (!isFlag)
return ;
index++;
vp.setCurrentItem(index);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.swipe_target);
initView();//设置图片的逻辑
vp.setAdapter(new MyAdapter());
//ViewPager滑动事件
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//每次滑动下标索引
@Override
public void onPageSelected(int position) {
index = position;
}
//是否滑动成功判断触摸锁在里面写
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
TouchFlag = false;
}else {
TouchFlag = true;
}
}
});
startTime();
}
private void initView() {
for (int i = 0; i < ii.length; i++) {
View v = View.inflate(MainActivity.this,R.layout.aaa, null);
ImageView iv=(ImageView) v.findViewById(R.id.iv);
iv.setImageResource(ii[i]);
view[i]=v;
}
}private class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
//初始化视图
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO 自动生成的方法存根
((ViewPager)container).addView(view[position%view.length]);
return view[position%view.length];
}
//销毁原有的视图
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager)container).removeView(view[position%view.length]);
}
}
private class TimeThread extends Thread{
@Override
public void run() {
while (isFlag) {
try {
Thread .sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.sendEmptyMessage(0);
}
}
}
private void startTime(){
new TimeThread().start();
}
private void closeTime(){
isFlag = false;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
closeTime();
}
}