zoukankan      html  css  js  c++  java
  • ViewPager实现每隔两秒自动切换图片

    布局代码:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent" >
     5 
     6     <FrameLayout 
     7         android:layout_width="fill_parent"
     8         android:layout_height="200dip"        
     9         >
    10         
    11         <android.support.v4.view.ViewPager
    12             android:id="@+id/vp"
    13             android:layout_width="fill_parent"
    14             android:layout_height="fill_parent"
    15             />
    16         
    17         <LinearLayout 
    18             android:layout_width="fill_parent"
    19             android:layout_height="35dip"
    20             android:orientation="vertical"
    21             android:layout_gravity="bottom"
    22             android:gravity="center"
    23             android:background="#33000000"
    24             >
    25             
    26             <TextView 
    27                 android:id="@+id/title"
    28                 android:layout_width="wrap_content"
    29                 android:layout_height="wrap_content"
    30                 android:text="图片标题"
    31                 android:textColor="@android:color/white"
    32                 />
    33             
    34             <LinearLayout 
    35                 android:layout_width="wrap_content"
    36                 android:layout_height="wrap_content"
    37                 android:orientation="horizontal"
    38                 android:layout_marginTop="3dip"
    39                 >
    40                 
    41                 <View 
    42                     android:id="@+id/dot_0"
    43                     android:layout_width="5dip"
    44                     android:layout_height="5dip"
    45                     android:layout_marginLeft="2dip"
    46                     android:layout_marginRight="2dip"
    47                     android:background="@drawable/dot_focused"
    48                     />
    49                 <View 
    50                     android:id="@+id/dot_1"
    51                     android:layout_width="5dip"
    52                     android:layout_height="5dip"
    53                     android:layout_marginLeft="2dip"
    54                     android:layout_marginRight="2dip"
    55                     android:background="@drawable/dot_normal"
    56                     />
    57                 <View 
    58                     android:id="@+id/dot_2"
    59                     android:layout_width="5dip"
    60                     android:layout_height="5dip"
    61                     android:layout_marginLeft="2dip"
    62                     android:layout_marginRight="2dip"
    63                     android:background="@drawable/dot_normal"
    64                     />
    65                 <View 
    66                     android:id="@+id/dot_3"
    67                     android:layout_width="5dip"
    68                     android:layout_height="5dip"
    69                     android:layout_marginLeft="2dip"
    70                     android:layout_marginRight="2dip"
    71                     android:background="@drawable/dot_normal"
    72                     />
    73                 <View 
    74                     android:id="@+id/dot_4"
    75                     android:layout_width="5dip"
    76                     android:layout_height="5dip"
    77                     android:layout_marginLeft="2dip"
    78                     android:layout_marginRight="2dip"
    79                     android:background="@drawable/dot_normal"
    80                     />
    81                 
    82             </LinearLayout>
    83             
    84             
    85         </LinearLayout>
    86         
    87     </FrameLayout>
    88     
    89     
    90 </RelativeLayout>

    正常的shape图形dot_normal.xml:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     3     android:shape="oval"
     4     >
     5     
     6     <corners android:radius="5dip" />
     7     
     8     <solid android:color="#55000000" />
     9 
    10 </shape>

    获取焦点的shape图形 dot_focused.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     3     android:shape="oval"
     4     >
     5     
     6     <corners android:radius="5dip" />
     7     
     8     <solid android:color="#aaFFFFFF" />
     9 
    10 </shape>

    具体实现代码:

      1 import java.util.ArrayList;
      2 import java.util.concurrent.Executors;
      3 import java.util.concurrent.ScheduledExecutorService;
      4 import java.util.concurrent.TimeUnit;
      5 
      6 import android.app.Activity;
      7 import android.os.Bundle;
      8 import android.os.Handler;
      9 import android.os.Message;
     10 import android.support.v4.view.PagerAdapter;
     11 import android.support.v4.view.ViewPager;
     12 import android.support.v4.view.ViewPager.OnPageChangeListener;
     13 import android.view.View;
     14 import android.view.ViewGroup;
     15 import android.widget.ImageView;
     16 import android.widget.TextView;
     17 
     18 public class MainActivity extends Activity {
     19 
     20     private int imageIds[];
     21     private String[] titles;
     22     private ArrayList<ImageView> images;
     23     private ArrayList<View> dots;
     24     private TextView title;
     25     private ViewPager mViewPager;
     26     private ViewPagerAdapter adapter;
     27     
     28     private int oldPosition = 0;//记录上一次点的位置
     29     private int currentItem; //当前页面
     30     private ScheduledExecutorService scheduledExecutorService;
     31 
     32     @Override
     33     public void onCreate(Bundle savedInstanceState) {
     34         super.onCreate(savedInstanceState);
     35         setContentView(R.layout.activity_main);
     36         
     37         //图片ID
     38         imageIds = new int[]{
     39             R.drawable.a,    
     40             R.drawable.b,    
     41             R.drawable.c,    
     42             R.drawable.d,    
     43             R.drawable.e    
     44         };
     45         
     46         //图片标题
     47         titles = new String[]{
     48             "巩俐不低俗,我就不能低俗",    
     49             "扑树又回来啦!再唱经典老歌引万人大合唱",    
     50             "揭秘北京电影如何升级",    
     51             "乐视网TV版大派送",    
     52             "热血屌丝的反杀"
     53         };
     54         
     55         //显示的图片
     56         images = new ArrayList<ImageView>();
     57         for(int i =0; i < imageIds.length; i++){
     58             ImageView imageView = new ImageView(this);
     59             imageView.setBackgroundResource(imageIds[i]);
     60             
     61             images.add(imageView);
     62         }
     63         
     64         //显示的点
     65         dots = new ArrayList<View>();
     66         dots.add(findViewById(R.id.dot_0));
     67         dots.add(findViewById(R.id.dot_1));
     68         dots.add(findViewById(R.id.dot_2));
     69         dots.add(findViewById(R.id.dot_3));
     70         dots.add(findViewById(R.id.dot_4));
     71         
     72         title = (TextView) findViewById(R.id.title);
     73         title.setText(titles[0]);
     74         
     75         mViewPager = (ViewPager) findViewById(R.id.vp);
     76         
     77         adapter = new ViewPagerAdapter(); 
     78         mViewPager.setAdapter(adapter);
     79         
     80         mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
     81             
     82 
     83 
     84             @Override
     85             public void onPageSelected(int position) {
     86                 // TODO Auto-generated method stub
     87                 title.setText(titles[position]);
     88                 
     89                 dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);
     90                 dots.get(position).setBackgroundResource(R.drawable.dot_focused);
     91                 
     92                 oldPosition = position;
     93                 currentItem = position;
     94             }
     95             
     96             @Override
     97             public void onPageScrolled(int arg0, float arg1, int arg2) {
     98                 // TODO Auto-generated method stub
     99                 
    100             }
    101             
    102             @Override
    103             public void onPageScrollStateChanged(int arg0) {
    104                 // TODO Auto-generated method stub
    105                 
    106             }
    107         });
    108         
    109     }
    110     
    111     private class ViewPagerAdapter extends PagerAdapter {
    112 
    113         @Override
    114         public int getCount() {
    115             // TODO Auto-generated method stub
    116             return images.size();
    117         }
    118 
    119         //是否是同一张图片
    120         @Override
    121         public boolean isViewFromObject(View arg0, Object arg1) {
    122             // TODO Auto-generated method stub
    123             return arg0 == arg1;
    124         }
    125 
    126         @Override
    127         public void destroyItem(ViewGroup view, int position, Object object) {
    128             // TODO Auto-generated method stub
    129 //            super.destroyItem(container, position, object);
    130 //            view.removeViewAt(position);
    131             view.removeView(images.get(position));
    132             
    133         }
    134 
    135         @Override
    136         public Object instantiateItem(ViewGroup view, int position) {
    137             // TODO Auto-generated method stub
    138             view.addView(images.get(position));
    139             
    140             return images.get(position);
    141         }
    142     }
    143 
    144     @Override
    145     protected void onStart() {
    146         // TODO Auto-generated method stub
    147         super.onStart();
    148         
    149         scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
    150         
    151         //每隔2秒钟切换一张图片
    152         scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 2, 2, TimeUnit.SECONDS);
    153     }
    154     
    155     //切换图片
    156     private class ViewPagerTask implements Runnable {
    157 
    158         @Override
    159         public void run() {
    160             // TODO Auto-generated method stub
    161             currentItem = (currentItem +1) % imageIds.length;
    162             //更新界面
    163 //            handler.sendEmptyMessage(0);
    164             handler.obtainMessage().sendToTarget();
    165         }
    166         
    167     }
    168     
    169     private Handler handler = new Handler(){
    170 
    171         @Override
    172         public void handleMessage(Message msg) {
    173             // TODO Auto-generated method stub
    174             //设置当前页面
    175             mViewPager.setCurrentItem(currentItem);
    176         }
    177         
    178     };
    179 
    180     @Override
    181     protected void onStop() {
    182         // TODO Auto-generated method stub
    183         super.onStop();
    184     }
    185     
    186     
    187 
    188 }
  • 相关阅读:
    c 概念详解
    c 目录
    win文件操作
    使用panads处理数据
    冒泡排序
    notepad++搭建python环境
    继承方法-->一级一级继承
    原型问题2—原型对象的替换
    原型问题1—原型对象的替换
    js继承——扩展Object方式实现继承
  • 原文地址:https://www.cnblogs.com/androidez/p/2956107.html
Copyright © 2011-2022 走看看