亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android使用ViewPager實現滾動廣告

2019-10-21 21:35:36
字體:
來源:轉載
供稿:網友

在一些類似于淘寶的電商網站上經常能夠看到一些滾動的廣告條,許多軟件在首頁也有類似的廣告條,如圖:

Android,ViewPager,滾動廣告

實現起來并不是很復雜的,結合網上的一些教程,實現了現在這樣一個可以幾張圖循環播放,并且可以手指滑動切換的效果。

工程文件結構:

Android,ViewPager,滾動廣告

布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="yuxin.ad.MainActivity"> <android.support.v4.view.ViewPager  android:id="@+id/viewPager"  android:layout_width="wrap_content"  android:layout_height="200dp"  android:adjustViewBounds="true" /> <LinearLayout  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_alignBottom="@id/viewPager"  android:background="#33000000"  android:orientation="vertical"  android:padding="5dp">  <LinearLayout   android:id="@+id/show_point"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_gravity="center_horizontal"   android:orientation="horizontal" /> </LinearLayout></RelativeLayout>

最上面是一個ViewPager,用來展示需要滾動播放的圖片;下面是一個 線性布局,用來放最下面的幾個小圓點,也可以在里面放一些TextView等,小圓點的 數量是根據圖片數量動態添加的。

MainActivity.java

public class MainActivity extends AppCompatActivity { private ViewPager viewPager; // 存放圖片 private List<ImageView> imageViewList; private ImageView imageView; // 存放小圓點布局文件 private LinearLayout layoutPointGroup; // 線程開關,當activity銷毀后,線程也應該停止運行 private boolean isStop = false; private int previousPoint = 0; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  // 初始化  init();  //設置圖片自動滾動  new Thread(new Runnable() {   @Override   public void run() {    //如果activity未銷毀則一直執行    while (!isStop) {     //先休息3秒鐘     try {      Thread.sleep(3000);     } catch (InterruptedException e) {      e.printStackTrace();     }     //以下代碼發送到主線程中執行     runOnUiThread(new Runnable() {      @Override      public void run() {       viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);      }     });    }   }  }).start(); } private void init() {  viewPager = (ViewPager) findViewById(R.id.viewPager);  layoutPointGroup = (LinearLayout) findViewById(R.id.show_point);  imageViewList = new ArrayList<ImageView>();  // TODO:獲取圖片ID  int[] imageIDs = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e};  for (int id : imageIDs) {   // 構造新的圖片對象,并根據id 設置圖片背景   imageView = new ImageView(this);   imageView.setImageResource(id);   // 所有圖片都存放在 imageViewList 里面   imageViewList.add(imageView);   // 構造小點   View v = new View(this);   // 設置小點的寬和高   LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(8, 8);   // 設置小點的左邊距   params.leftMargin = 12;   v.setLayoutParams(params);   // 設置小點是否可用,默認都不可用,當不可用時,小點是透明的,否則是白色的   v.setEnabled(false);   // 設置小點的背景,這個背景是使用xml文件畫的一個小圓點   v.setBackgroundResource(R.drawable.pointer_selector);   // 把小點添加到它的布局文件中   layoutPointGroup.addView(v);  }  // 計算應用打開時顯示的第一項 Integer.MAX_VALUE /2 - 3=0  int index = Integer.MAX_VALUE / 2 - 3;  // 給mViewPager設置數據  viewPager.setAdapter(new MyPagerAdapter());  // 給mViewPager設置頁面滑動事件  viewPager.setOnPageChangeListener(new MyOnPageChangeListener());  // 設置應用打開時顯示的第一項,index的值為0  // 使用這種方式得到的0,和直接寫0有什么區別呢?  // 直接寫0,應用打開后不能直接向右滑動,因為viewpager中存image位置不能為負值,只能先向左滑動  // 這種方式得到的0,可以實現應用一打開,就可以向右滑動  viewPager.setCurrentItem(index); } private class MyPagerAdapter extends PagerAdapter {  @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(imageViewList.get(position % imageViewList.size()));  }  // 向容器中添加圖片,由于我們要實現循環滑動的效果,所以要對position取模  @Override  public Object instantiateItem(ViewGroup container, int position) {   container.addView(imageViewList.get(position % imageViewList.size()));   return imageViewList.get(position % imageViewList.size());  } } private class MyOnPageChangeListener implements ViewPager.OnPageChangeListener {  // 開始  @Override  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  }  // 進行時  @Override  public void onPageSelected(int position) {   // 當頁面滑動結束時,先對頁面位置取模   position = position % imageViewList.size();   // 將上一個點的可用性設置為false   layoutPointGroup.getChildAt(previousPoint).setEnabled(false);   // 把當前點的可用性設置為true   layoutPointGroup.getChildAt(position).setEnabled(true);   // 把當前位置值賦值給previousPoint   previousPoint = position;  }  // 結束  @Override  public void onPageScrollStateChanged(int state) {  } } // 當activity銷毀時,讓線程停止 @Override public void onDestroy() {  isStop = true;  super.onDestroy(); }}

具體功能實現可以看代碼里的注釋,寫的十分詳細了。

未選中的小圓點pointer_disable.xml:

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <!-- 設置圓角半徑 --> <corners android:radius="0.5dip" /> <!-- 設置填充的顏色 --> <solid android:color="#55000000" /></shape>

選中時的小圓點pointer_focus.xml:

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="0.5dip" /> <solid android:color="#aaFFFFFF" /></shape>

小圓點選擇器:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 選中時,小點為白色 --> <item android:drawable="@drawable/pointer_focus" android:state_enabled="true"></item> <!-- 未選中時,小點為透明色 --> <item android:drawable="@drawable/pointer_disable" android:state_enabled="false"></item></selector>

完整源碼下載

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品高清久久久| 中文字幕不卡av| 欧美视频在线看| 国产日韩精品视频| 最新国产精品亚洲| 国产aaa精品| 亚洲国产精品专区久久| 欧美黑人xxx| 欧美日韩国产限制| 98精品国产自产在线观看| 欧美极品美女视频网站在线观看免费| 亚洲a中文字幕| 久久久国产一区二区| 亚洲精品xxxx| 亚洲精品久久久久久久久久久久| 亚洲人高潮女人毛茸茸| 亚洲va电影大全| 91精品国产自产在线观看永久| 国产亚洲福利一区| 久久精品国产2020观看福利| 亚洲激情国产精品| 亚洲国产欧美精品| 性亚洲最疯狂xxxx高清| 九九九热精品免费视频观看网站| 欧美日韩高清在线观看| 韩国19禁主播vip福利视频| 欧美最猛性xxxxx免费| 性视频1819p久久| 久久久999成人| 亚洲自拍小视频免费观看| 日本久久中文字幕| 久久久久九九九九| 国产在线视频不卡| 精品久久久香蕉免费精品视频| 中文日韩电影网站| 国产精品自在线| 国产在线播放91| 久久视频在线播放| 成人av在线亚洲| 久久国产天堂福利天堂| 亚洲免费福利视频| 欧美夫妻性视频| 91国内免费在线视频| 亚洲欧洲国产一区| 爱福利视频一区| 国产精品扒开腿做爽爽爽视频| 激情成人在线视频| 国产精品免费福利| 欧美性猛交xxxx免费看漫画| 国产精品美女视频网站| 日韩国产精品亚洲а∨天堂免| 久久久免费观看视频| 国产精品国产三级国产aⅴ浪潮| 国产欧美欧洲在线观看| 91情侣偷在线精品国产| 在线激情影院一区| 亚洲免费精彩视频| 亚洲日本aⅴ片在线观看香蕉| 精品国产鲁一鲁一区二区张丽| 久久久精品欧美| 亚洲国产精品va在线| 精品视频在线播放| 日韩精品极品毛片系列视频| 欧美特级www| 亚洲女同性videos| 一本色道久久88亚洲综合88| 91精品免费视频| 日韩激情av在线免费观看| 国产在线精品成人一区二区三区| 亚洲欧美国内爽妇网| 美女扒开尿口让男人操亚洲视频网站| 一区二区三区视频免费| 色综合久久久久久中文网| 久久久av一区| 久久精品国产视频| 久久久精品在线| 精品丝袜一区二区三区| 欧美精品九九久久| 日韩精品高清在线观看| 亚洲精品久久久一区二区三区| 欧美日韩精品在线观看| 8x拔播拔播x8国产精品| 日韩小视频在线| 日韩成人av一区| 午夜精品一区二区三区视频免费看| 欧美成在线观看| 久久久久久久国产精品| 亚洲最大成人在线| 亚洲香蕉av在线一区二区三区| 成人av在线天堂| 欧美日韩国产成人在线观看| 国产欧美一区二区三区四区| 91成人在线播放| 日韩在线视频观看正片免费网站| 欧美精品成人在线| 色综合五月天导航| 亚洲午夜未删减在线观看| 日韩动漫免费观看电视剧高清| 欧美一区二区.| 久久久久中文字幕| 欧美在线视频a| 国产中文欧美精品| 亚洲精品美女免费| 91精品久久久久久久久青青| 在线不卡国产精品| 久久久久亚洲精品| 色狠狠久久aa北条麻妃| 亚洲天堂av网| 欧美激情va永久在线播放| 亚洲性视频网址| 欧美亚洲国产日本| 国产精品aaa| 久热在线中文字幕色999舞| 免费99精品国产自在在线| 国产精品va在线| 97成人精品区在线播放| 韩曰欧美视频免费观看| 日韩电影中文 亚洲精品乱码| 国模精品系列视频| 欧美日韩国产精品一区| 色小说视频一区| 欧美性jizz18性欧美| 亚洲午夜久久久久久久| 日韩免费看的电影电视剧大全| 国产日韩av在线播放| 欧美日韩在线影院| 中文字幕日韩欧美在线视频| 91国在线精品国内播放| 亚洲精品videossex少妇| 亚洲国产成人精品久久久国产成人一区| 亚洲福利小视频| 亚洲人成电影网站色| 一个人看的www欧美| 久久成年人免费电影| 欧美精品激情在线观看| 久久精品视频在线观看| 国产丝袜一区视频在线观看| 日本亚洲欧美成人| 91国产精品视频在线| 精品国产福利视频| 亚洲欧美日本伦理| 黄色一区二区在线| 97精品国产91久久久久久| 久久手机精品视频| 国产欧美日韩专区发布| 中文字幕日韩av综合精品| 亚洲国产精品va在线看黑人动漫| 2021国产精品视频| 久久中文字幕国产| www.久久草.com| 国产精品国产三级国产aⅴ浪潮| 日韩中文字幕欧美| 亚洲精品二三区| 日韩激情视频在线| 国产啪精品视频网站| 亚洲午夜激情免费视频| 久久中文精品视频| 夜夜狂射影院欧美极品| 日本精品久久久| 欧美激情一区二区三级高清视频| 日韩理论片久久| 久久天天躁狠狠躁夜夜av| 久久久久这里只有精品| 色偷偷av一区二区三区乱|