滑屏自动播放效果实现步骤

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);
  }

 }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值