android-auto-scroll-view-pager (無限廣告輪播圖)

來源:互聯網
上載者:User

標籤:

github 地址: https://github.com/Trinea/android-auto-scroll-view-pager

Gradle:

compile (‘cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2‘) {    exclude module: ‘support-v4‘}
-keep class cn.trinea.android.** { *; }-keepclassmembers class cn.trinea.android.** { *; }-dontwarn cn.trinea.android.**

布局檔案

         <cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager                 android:id="@+id/auto_view_pager"                 android:layout_width="match_parent"                 android:layout_height="320dp" />             <LinearLayout                 android:id="@+id/point_group"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:layout_gravity="center_horizontal"                 android:gravity="center"                 android:layout_alignParentBottom="true"                 android:orientation="horizontal"                 android:paddingBottom="5dp"                 >

代碼設定:

        if(imageList.size()==1){         auto_view_pager.stopAutoScroll();        }        auto_view_pager.setAdapter(new MyAdapter(imageList));//        //設定延時時間        auto_view_pager.setInterval(5000);        //設定輪播的方向 AutoScrollViewPager.RIGHT/AutoScrollViewPager.LEFT        auto_view_pager.setDirection(AutoScrollViewPager.RIGHT);        //設定是否自動迴圈輪播,預設為true        //注意:一旦設為true,則不能和ViewPagerIndicator一起使用          auto_view_pager.setCycle(true);        //設定切換動畫的時間長度        auto_view_pager.setScrollDurationFactor(5);        //設定當滑動到最後一個或者第一個時,如何切換下一張           //當滑動到最後一張或第一張時是否開啟動畫,預設為true        auto_view_pager.setBorderAnimation(true);        //當觸摸的時候,停止輪播        auto_view_pager.setStopScrollWhenTouch(true);////        //解決最後一個跳轉到第一個閃動問題//         auto_view_pager.setCurrentItem((Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2 % imageList.size()));        auto_view_pager.setCurrentItem(imageList.size()*10);        final LinearLayout point_group = (LinearLayout)                 findViewById(R.id.point_group);        point_group.removeAllViews();        for (int i = 0; i < imageList.size(); i++) {            // 添加指示點            ImageView point = new ImageView(DetailActivity.this);            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(                    ViewGroup.LayoutParams.WRAP_CONTENT,                    ViewGroup.LayoutParams.WRAP_CONTENT);            params.rightMargin = 10;            point.setLayoutParams(params);            point.setBackgroundResource(R.drawable.point_bg);            if (i == 0) {                point.setEnabled(true);            } else {                point.setEnabled(false);            }            point_group.addView(point);        }//         auto_view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {                @Override                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                }                @Override                public void onPageSelected(int position) {                    Log.e("TAG", "position" + position);                    // 改變指示點的狀態                    // 把當前點enbale 為true                    try {                        point_group.getChildAt(position % imageList.size()).setEnabled(true);                        // 把上一個點設為false                        point_group.getChildAt(lastPosition).setEnabled(false);                        lastPosition = position % imageList.size();                    } catch (Exception e) {                    }                }                @Override                public void onPageScrollStateChanged(int state) {                }            });

adapter

    class MyAdapter extends PagerAdapter {         List<String> mSimpleDraweeViewList;        public MyAdapter(List<String> mSimpleDraweeViewList) {            this.mSimpleDraweeViewList=mSimpleDraweeViewList;        }        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            Uri uri = Uri.parse(HttpBase.HOST_STRING +"/"+ mSimpleDraweeViewList.get(position % mSimpleDraweeViewList.size()));//            SimpleDraweeView draweeView = new SimpleDraweeView(DetailActivity.this);            SimpleDraweeView draweeView = (SimpleDraweeView)View.inflate(DetailActivity.this,R.layout.layout_image,null).findViewById(R.id.image1);            draweeView.setScaleType( ImageView.ScaleType.FIT_XY);            ViewGroup.LayoutParams imagebtn_params = new ViewGroup.LayoutParams(                    AutoUtils.getDisplayWidthValue(720), AutoUtils.getDisplayHeightValue(640));            draweeView.setLayoutParams(imagebtn_params);            draweeView.setImageURI(uri);//            ImageView im= new ImageView(DetailActivity.this);//            Picasso.with(DetailActivity.this).load(HttpBase.HOST_STRING +"/"+ mSimpleDraweeViewList.get(position % mSimpleDraweeViewList.size())).into(im);            ViewParent parent = draweeView.getParent();            // remove掉View之前已經加到一個父控制項中,否則報異常            if (parent != null) {                ViewGroup group = (ViewGroup) parent;                group.removeView(draweeView);            }            container.addView(draweeView);            return draweeView;//            container.addView(images.get(position % images.size()));//            return images.get(position % images.size());//            container.addView(draweeView);//          return draweeView;        }    }
    @Override    protected void onResume() {        super.onResume();        //開啟自動輪播,延時時間為getInterval()        auto_view_pager.startAutoScroll();        //開啟自動輪播,並設定延時//        auto_view_pager.startAutoScroll(delayTime);    }    @Override    protected void onPause() {        super.onPause();        //停止輪播        auto_view_pager.stopAutoScroll();    }

point_bg.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" >        <item android:drawable="@drawable/point_nomal"  android:state_enabled="true"/>    <item android:drawable="@drawable/point_focured"  android:state_enabled="false"/></selector>

point_focured.xml 

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval" >        <size  android:width="5dp" android:height="5dp"/>    <solid android:color="#33000000"/></shape>

point_nomal.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval" >        <size  android:width="5dp" android:height="5dp"/>    <solid android:color="#aaFFFFFF"/></shape>

 

android-auto-scroll-view-pager (無限廣告輪播圖)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.