1.导包 android.support.v4.jar(sdk高版本有自带,不需要手动导入)
2.创建两个黑点和白点的xml 文件(dot_focused.xml白点,dot_normal.xml黑点)
3. 创建xml布局文件(invest.xml) (黑点和白点在布局文件当做背景来用)
4.创建MyPagerAdapter类 该类extends PagerAdapter
5.数据初始化+控件初始化
6.将MyPagerAdapter类在ViewPager中填充
//参数一:图片控件集合,参数二:图片id数组 参数三:上下文
MyPagerAdapter myPagerAdapter=new MyPagerAdapter(images,imageIds,InvestActivity.this,NewDetailActivity.class);
viewPager.setAdapter(myPagerAdapter);
bottomId.getBackground().setAlpha(70);//设置透明度
viewPager.setOnPageChangeListener(new MyPagerChangeListener());
//滚动视图转换
class MyPagerChangeListener implements OnPageChangeListener{
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
title.setText(titles[arg0]);//滚动时改变标题
dots.get(arg0).setBackgroundResource(R.drawable.dot_focused);//改变圆点
dots.get(oldPositon).setBackgroundResource(R.drawable.dot_normal);//实现黑白点切换
oldPositon = arg0;
currentItem = arg0;
}
}
(到了第六步已经有滑动效果了)
7。实现自动播放效果
1.创建private ScheduledExecutorService scheduledExecutorService;服务
2.重写activity生命周期方法onStart(); 用线程来发送更新ui的消息 实现3秒播放一张图片
3.重写activity生命周期方法onStop(); 当生命周期停止时,ScheduledExecutorService服务停止
4.用handler 来更新ui viewPager.setCurrentItem(currentItem);设置ViewPager控件的开始位置,又从第一张片进行播放
2.黑点和白点的xml 文件 (dot_focused.xml白点,dot_normal.xml黑点)
(dot_normal.xml)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="5dip"/>
<solid android:color="#55000000"/>
</shape>
(dot_focused.xml)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<corners android:radius="5dip" />
<solid android:color="#aaFFFFFF" />
</shape>
3.invest.xml布局文件
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="fill_parent"
android:layout_height="150dp" >
<android.support.v4.view.ViewPager
android:id="@+id/vp1"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:background="#990099" />
<LinearLayout
android:id="@+id/bottomId1"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_gravity="bottom"
android:background="#000000"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/title1"
android:layout_width="165dp"
android:layout_height="30dp"
android:gravity="center"
android:text="dddddddddddddd"
android:textColor="#CC3333" >
</TextView>
<View
android:id="@+id/dots_0"
android:layout_width="5dip"
android:layout_height="5dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_focused" />
<View
android:id="@+id/dots_1"
android:layout_width="5dip"
android:layout_height="5dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dots_2"
android:layout_width="5dip"
android:layout_height="5dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dots_3"
android:layout_width="5dip"
android:layout_height="5dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dots_4"
android:layout_width="5dip"
android:layout_height="5dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
</LinearLayout>
</FrameLayout>
4 创建MyPagerAdapter类 该类extends PagerAdapter
public class MyPagerAdapter extends PagerAdapter {
private List<ImageView> images=new ArrayList<ImageView>();//图片控件
private int [] imageIds=new int[]{};//图片id
private Context context;
private Class activity;
public MyPagerAdapter(List<ImageView> images,int[]imageIds,Context context,Class activity){
this.images=images;
this.imageIds=imageIds;
this.context=context;
this.activity=activity;
}
@Override
public int getCount() {
return imageIds.length;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
//当图片滚动到下一张图片时,上一张图片移除
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
//super.destroyItem(view, position, object);
view.removeView(images.get(position));
}
//图片滚动时,添加图片
@Override
public Object instantiateItem(ViewGroup view, int position) {
view.addView(images.get(position));
images.get(position).setOnClickListener(new MyPageImageClick());
return images.get(position);
}
//图片单击事件
class MyPageImageClick implements OnClickListener{
@Override
public void onClick(View v){
Intent intent=new Intent(context,NewDetailActivity.class);
context.startActivity(intent);
}
}
5.数据初始化+控件初始化
数据初始化
private String[] titles;
private ArrayList<View> dots;
private ArrayList<ImageView> images;
private int[]imageIds;
//滚动图片id
imageIds = new int[] { R.drawable.a, R.drawable.b, R.drawable.c,
R.drawable.d, R.drawable.e };
//滚动图片标题
titles = new String[]{
"1111111111",
"222222222",
"333333333",
"444444444",
"5555555555"
};
//滚动图片的圆点
dots = new ArrayList<View>();
dots.add(findViewById(R.id.dots_0));
dots.add(findViewById(R.id.dots_1));
dots.add(findViewById(R.id.dots_2));
dots.add(findViewById(R.id.dots_3));
dots.add(findViewById(R.id.dots_4));
//滚动的图片控件
images=new ArrayList<ImageView>();
for (int i = 0; i < imageIds.length; i++) {
ImageView imageView=new ImageView(this);
imageView.setImageResource(imageIds[i]);
imageView.setScaleType(ScaleType.FIT_XY);
images.add(imageView);
}
控件初始化
private LinearLayout bottomId;
private ViewPager viewPager;
private TextView title;
viewPager=(ViewPager)findViewById(R.id.vp1);
title=(TextView)findViewById(R.id.title1);
bottomId=(LinearLayout)findViewById(R.id.bottomId1);
6.将MyPagerAdapter类在ViewPager中填充
MyPagerAdapter myPagerAdapter=new MyPagerAdapter (images,imageIds,InvestActivity.this,NewDetailActivity.class);
viewPager.setAdapter(myPagerAdapter);
bottomId.getBackground().setAlpha(70);
viewPager.setOnPageChangeListener(new MyPagerChangeListener());
//滚动视图转换
class MyPagerChangeListener implements OnPageChangeListener{
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
title.setText(titles[arg0]);
dots.get(arg0).setBackgroundResource(R.drawable.dot_focused);
dots.get(oldPositon).setBackgroundResource(R.drawable.dot_normal);
oldPositon = arg0;
currentItem = arg0;
}
}
7。实现自动播放效果
1.创建private ScheduledExecutorService scheduledExecutorService;服务
2.重写activity生命周期方法onStart(); 用线程来发送更新ui的消息 实现3秒播放一张图片
3.重写activity生命周期方法onStop(); 当生命周期停止时,ScheduledExecutorService服务停止
4.用handler 来更新ui viewPager.setCurrentItem(currentItem);设置ViewPager控件的开始位置,又从第一张片进行播放
7.1
private ScheduledExecutorService scheduledExecutorService;
7.2 方法onStart()
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleWithFixedDelay(new PagerTask(), 3, 3, TimeUnit.SECONDS);
}
public class PagerTask implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
currentItem = (currentItem + 1) % imageIds.length;
//handler.sendEmptyMessage(0);
myHandler.obtainMessage().sendToTarget();
}
}
7.3 方法onStop()
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
scheduledExecutorService.shutdown();//???л???????
}
7.4
//handler来更新ui
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bundle bundle = msg.getData();
viewPager.setCurrentItem(currentItem);
}
}