用ViewPager实现广告栏

public class AdPagerMainActivity extends ActionBarActivity {
     
     private ImageView mDefaultImage = null ;
     
     private ViewPager mImagePager = null ;
     
     private ImageView[] mImageViews = null ;
     
     private AtomicInteger what = new AtomicInteger( 0 );
     
     private boolean isContinue = true ;
     
     private List<view> advPics;
     
     private Context mContext;
     
     private ImageView mImageView;
     
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.layout_ad_pager);
         init();
         initView();
         initViewPager();
     }
     
     /**
      * 初始化数据
      */
     private void init() {
         mContext = this ;
         advPics = new ArrayList<view>();
     }
     
     /**
      * 初始化控件
      */
     private void initView() {
         // TODO Auto-generated method stub
         mDefaultImage = (ImageView) findViewById(R.id.home_default_image);
         mImagePager = (ViewPager) findViewById(R.id.adv_pager);
     }
     
     /**
      * void
      */
     private void initViewPager() {
         // TODO Auto-generated method stub
         mDefaultImage.setVisibility(View.GONE);
         mImagePager.setVisibility(View.VISIBLE);
         
         ImageView img1 = new ImageView(mContext);
         img1.setBackgroundResource(R.drawable.img1);
         advPics.add(img1);
         
         ImageView img2 = new ImageView(mContext);
         img2.setBackgroundResource(R.drawable.img2);
         advPics.add(img2);
         
         ImageView img3 = new ImageView(mContext);
         img3.setBackgroundResource(R.drawable.img3);
         advPics.add(img3);
         
         ImageView img4 = new ImageView(mContext);
         img4.setBackgroundResource(R.drawable.img4);
         advPics.add(img4);
         
         // group是R.layou.mainview中的负责包裹小圆点的LinearLayout.
         ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup);
         mImageViews = new ImageView[advPics.size()];
         LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( 13 , 13 );
         layoutParams.setMargins( 5 , 0 , 5 , 1 );
         
         for ( int i = 0 ; i < advPics.size(); i++) {
             mImageView = new ImageView( this );
             mImageView.setLayoutParams(layoutParams);
             mImageViews[i] = mImageView;
             if (i == 0 ) {
                 // 默认选中第一张图片
                 mImageViews[i].setBackgroundResource(R.drawable.item_focus);
             }
             else {
                 mImageViews[i].setBackgroundResource(R.drawable.item_unfocus);
             }
             group.addView(mImageViews[i]);
         }
         
         mImagePager.setAdapter( new AdvAdapter(advPics));
         mImagePager.setOnPageChangeListener( new GuidePageChangeListener());
         // 按下时不继续定时滑动,弹起时继续定时滑动
         mImagePager.setOnTouchListener( new View.OnTouchListener() {
             
             @Override
             public boolean onTouch(View v, MotionEvent event) {
                 switch (event.getAction()) {
                     case MotionEvent.ACTION_DOWN:
                     case MotionEvent.ACTION_MOVE:
                         isContinue = false ;
                         break ;
                     case MotionEvent.ACTION_UP:
                         isContinue = true ;
                         break ;
                     default :
                         isContinue = true ;
                         break ;
                 }
                 return false ;
             }
         });
         // 定时滑动线程
         new Thread( new Runnable() {
             
             @Override
             public void run() {
                 while ( true ) {
                     if (isContinue) {
                         viewHandler.sendEmptyMessage(what.get());
                         whatOption();
                     }
                 }
             }
             
         }).start();
     }
     
     /**
      * 操作圆点轮换变背景
      */
     private void whatOption() {
         what.incrementAndGet();
         if (what.get() > mImageViews.length - 1 ) {
             what.getAndAdd(-mImageViews.length);
         }
         try {
             if (what.get() == 1 ) {
                 Thread.sleep( 3000 );
             }
             else {
                 Thread.sleep( 2000 );
             }
         }
         catch (InterruptedException e) {
         }
     }
     
     /**
      * 处理定时切换广告栏图片的句柄
      */
     @SuppressLint (HandlerLeak)
     private final Handler viewHandler = new Handler() {
         
         @Override
         public void handleMessage(Message msg) {
             mImagePager.setCurrentItem(msg.what);
             super .handleMessage(msg);
         }
     };
     
     /** 指引页面改监听器 */
     private final class GuidePageChangeListener implements OnPageChangeListener {
         
         @Override
         public void onPageScrollStateChanged( int arg0) {
             
         }
         
         @Override
         public void onPageScrolled( int arg0, float arg1, int arg2) {
             
         }
         
         @Override
         public void onPageSelected( int arg0) {
             arg0 = arg0 % advPics.size();
             for ( int i = 0 ; i < mImageViews.length; i++) {
                 mImageViews[arg0].setBackgroundResource(R.drawable.item_focus);
                 if (arg0 != i) {
                     mImageViews[i].setBackgroundResource(R.drawable.item_unfocus);
                 }
             }
             what.set(arg0);
         }
     }
     
     /**
      * @Description: 广告栏PaperView 图片适配器
      */
     private final class AdvAdapter extends PagerAdapter {
         private List<view> views = null ;
         
         public AdvAdapter(List<view> views) {
             this .views = views;
         }
         
         @Override
         public void destroyItem(View arg0, int arg1, Object arg2) {
             ((ViewPager) arg0).removeView(views.get(arg1));
         }
         
         @Override
         public void finishUpdate(View arg0) {
             
         }
         
         @Override
         public int getCount() {
             return views.size();
         }
         
         @Override
         public Object instantiateItem(View arg0, int arg1) {
             ((ViewPager) arg0).addView(views.get(arg1), 0 );
             return views.get(arg1);
         }
         
         @Override
         public boolean isViewFromObject(View arg0, Object arg1) {
             return arg0 == arg1;
         }
         
         @Override
         public void restoreState(Parcelable arg0, ClassLoader arg1) {
             
         }
         
         @Override
         public Parcelable saveState() {
             return null ;
         }
         
         @Override
         public void startUpdate(View arg0) {
             
         }
     }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均达到96,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均达到96,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值