• Android利用ViewPager实现滑动广告板


    •android-support-v4.jar,这是谷歌官方 给我们提供的一个兼容低版本Android设备的软件包,里面包囊了只有在Android3.0以上可以使用的api。而ViewPager就是其中之 一,利用它我们可以做很多事情,从最简单的导航,到页面切换菜单等等。

    •ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。
    •本Demo向大家演示ViewPager的使用,并在用户未滑动View时,每隔5s钟自动切换到下一个View(循环切换),而当用户有Touch到View时取消5s自动切换功能。并有指示器指示当前处于哪一个View。
     
    下面是运行的截图:
     
    这个是非常常见的应用
    下面给出实现的代码:
    1.源文件
      1 ackage com.eyeandroid.viewpager;  
      2   
      3 import java.util.ArrayList;  
      4 import java.util.List;  
      5 import java.util.concurrent.atomic.AtomicInteger;  
      6   
      7 import android.annotation.SuppressLint;  
      8 import android.app.Activity;  
      9 import android.os.Bundle;  
     10 import android.os.Handler;  
     11 import android.os.Message;  
     12 import android.os.Parcelable;  
     13 import android.support.v4.view.PagerAdapter;  
     14 import android.support.v4.view.ViewPager;  
     15 import android.support.v4.view.ViewPager.OnPageChangeListener;  
     16 import android.view.MotionEvent;  
     17 import android.view.View;  
     18 import android.view.View.OnTouchListener;  
     19 import android.view.ViewGroup;  
     20 import android.view.ViewGroup.LayoutParams;  
     21 import android.widget.ImageView;  
     22   
     23 @SuppressLint("HandlerLeak")  
     24 public class MainActivity extends Activity {  
     25     private ImageView[] imageViews = null;  
     26     private ImageView imageView = null;  
     27     private ViewPager advPager = null;  
     28     private AtomicInteger what = new AtomicInteger(0);  
     29     private boolean isContinue = true;  
     30   
     31     @Override  
     32     public void onCreate(Bundle savedInstanceState) {  
     33         super.onCreate(savedInstanceState);  
     34         setContentView(R.layout.main);  
     35         initViewPager();  
     36     }  
     37   
     38   
     39     private void initViewPager() {  
     40         advPager = (ViewPager) findViewById(R.id.adv_pager);  
     41         ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup);  
     42   
     43 //      这里存放的是四张广告背景  
     44         List<View> advPics = new ArrayList<View>();  
     45   
     46         ImageView img1 = new ImageView(this);  
     47         img1.setBackgroundResource(R.drawable.advertising_default_1);  
     48         advPics.add(img1);  
     49   
     50         ImageView img2 = new ImageView(this);  
     51         img2.setBackgroundResource(R.drawable.advertising_default_2);  
     52         advPics.add(img2);  
     53   
     54         ImageView img3 = new ImageView(this);  
     55         img3.setBackgroundResource(R.drawable.advertising_default_3);  
     56         advPics.add(img3);  
     57   
     58         ImageView img4 = new ImageView(this);  
     59         img4.setBackgroundResource(R.drawable.advertising_default);  
     60         advPics.add(img4);  
     61           
     62 //      对imageviews进行填充  
     63         imageViews = new ImageView[advPics.size()];  
     64 //小图标  
     65         for (int i = 0; i < advPics.size(); i++) {  
     66             imageView = new ImageView(this);  
     67             imageView.setLayoutParams(new LayoutParams(20, 20));  
     68             imageView.setPadding(5, 5, 5, 5);  
     69             imageViews[i] = imageView;  
     70             if (i == 0) {  
     71                 imageViews[i]  
     72                         .setBackgroundResource(R.drawable.banner_dian_focus);  
     73             } else {  
     74                 imageViews[i]  
     75                         .setBackgroundResource(R.drawable.banner_dian_blur);  
     76             }  
     77             group.addView(imageViews[i]);  
     78         }  
     79   
     80         advPager.setAdapter(new AdvAdapter(advPics));  
     81         advPager.setOnPageChangeListener(new GuidePageChangeListener());  
     82         advPager.setOnTouchListener(new OnTouchListener() {  
     83               
     84             @Override  
     85             public boolean onTouch(View v, MotionEvent event) {  
     86                 switch (event.getAction()) {  
     87                 case MotionEvent.ACTION_DOWN:  
     88                 case MotionEvent.ACTION_MOVE:  
     89                     isContinue = false;  
     90                     break;  
     91                 case MotionEvent.ACTION_UP:  
     92                     isContinue = true;  
     93                     break;  
     94                 default:  
     95                     isContinue = true;  
     96                     break;  
     97                 }  
     98                 return false;  
     99             }  
    100         });  
    101         new Thread(new Runnable() {  
    102   
    103             @Override  
    104             public void run() {  
    105                 while (true) {  
    106                     if (isContinue) {  
    107                         viewHandler.sendEmptyMessage(what.get());  
    108                         whatOption();  
    109                     }  
    110                 }  
    111             }  
    112   
    113         }).start();  
    114     }  
    115   
    116       
    117     private void whatOption() {  
    118         what.incrementAndGet();  
    119         if (what.get() > imageViews.length - 1) {  
    120             what.getAndAdd(-4);  
    121         }  
    122         try {  
    123             Thread.sleep(5000);  
    124         } catch (InterruptedException e) {  
    125               
    126         }  
    127     }  
    128   
    129     private final Handler viewHandler = new Handler() {  
    130   
    131         @Override  
    132         public void handleMessage(Message msg) {  
    133             advPager.setCurrentItem(msg.what);  
    134             super.handleMessage(msg);  
    135         }  
    136   
    137     };  
    138   
    139     private final class GuidePageChangeListener implements OnPageChangeListener {  
    140   
    141         @Override  
    142         public void onPageScrollStateChanged(int arg0) {  
    143   
    144         }  
    145   
    146         @Override  
    147         public void onPageScrolled(int arg0, float arg1, int arg2) {  
    148   
    149         }  
    150   
    151         @Override  
    152         public void onPageSelected(int arg0) {  
    153             what.getAndSet(arg0);  
    154             for (int i = 0; i < imageViews.length; i++) {  
    155                 imageViews[arg0]  
    156                         .setBackgroundResource(R.drawable.banner_dian_focus);  
    157                 if (arg0 != i) {  
    158                     imageViews[i]  
    159                             .setBackgroundResource(R.drawable.banner_dian_blur);  
    160                 }  
    161             }  
    162   
    163         }  
    164   
    165     }  
    166   
    167     private final class AdvAdapter extends PagerAdapter {  
    168         private List<View> views = null;  
    169   
    170         public AdvAdapter(List<View> views) {  
    171             this.views = views;  
    172         }  
    173   
    174         @Override  
    175         public void destroyItem(View arg0, int arg1, Object arg2) {  
    176             ((ViewPager) arg0).removeView(views.get(arg1));  
    177         }  
    178   
    179         @Override  
    180         public void finishUpdate(View arg0) {  
    181   
    182         }  
    183   
    184         @Override  
    185         public int getCount() {  
    186             return views.size();  
    187         }  
    188   
    189         @Override  
    190         public Object instantiateItem(View arg0, int arg1) {  
    191             ((ViewPager) arg0).addView(views.get(arg1), 0);  
    192             return views.get(arg1);  
    193         }  
    194   
    195         @Override  
    196         public boolean isViewFromObject(View arg0, Object arg1) {  
    197             return arg0 == arg1;  
    198         }  
    199   
    200         @Override  
    201         public void restoreState(Parcelable arg0, ClassLoader arg1) {  
    202   
    203         }  
    204   
    205         @Override  
    206         public Parcelable saveState() {  
    207             return null;  
    208         }  
    209   
    210         @Override  
    211         public void startUpdate(View arg0) {  
    212   
    213         }  
    214   
    215     }  
    216   
    217 }  
    2.布局文件
    这个文件在屏幕上的图片显示具有至关重要的作用
     1 <?xml version="1.0" encoding="utf-8"?>  
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     3     android:layout_width="fill_parent"  
     4     android:layout_height="fill_parent"  
     5     android:orientation="vertical" >  
     6   
     7     <RelativeLayout  
     8         android:layout_width="wrap_content"  
     9         android:layout_height="wrap_content"  
    10         android:orientation="vertical" >  
    11         <!-- ViewPager是一个控件 -->  
    12         <android.support.v4.view.ViewPager  
    13             android:id="@+id/adv_pager"  
    14             android:layout_width="fill_parent"  
    15             android:layout_height="160dp" >  
    16               
    17         </android.support.v4.view.ViewPager>  
    18         <LinearLayout  
    19             android:id="@+id/viewGroup"  
    20             android:layout_below="@id/adv_pager"  
    21             android:layout_width="fill_parent"  
    22             android:layout_height="wrap_content"  
    23             android:layout_marginTop="-25px"  
    24             android:gravity="right"  
    25             android:orientation="horizontal" >  
    26         </LinearLayout>  
    27     </RelativeLayout>  
    28   
    29 </LinearLayout>  

    原博客地址:http://blog.csdn.net/dlutbrucezhang/article/details/8736807

  • 相关阅读:
    Jekins与sonarqube集成
    小程序checkbox调整大小(checkbox样式修改)
    小程序拿checkbox的checked属性
    微信小程序animation动画2种方法
    关于xshell中的异常----进程被占用
    xshell应用
    微信公众平台教程
    事件类型和事件对象
    小程序开发指南
    WXSS样式语言
  • 原文地址:https://www.cnblogs.com/ycxyyzw/p/3808573.html
Copyright © 2020-2023  润新知