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

首頁(yè) > 系統(tǒng) > Android > 正文

Android實(shí)現(xiàn)輪播圖片展示效果

2019-10-21 21:26:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例為大家分享了Android輪播圖片的展示,供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)邏輯

1.創(chuàng)建XML布局文件,使用ViewPager完成輪播圖片

2.初始化ViewPager控件,然后為控件設(shè)置適配器,創(chuàng)建出來(lái)的適配器實(shí)現(xiàn)里面的四個(gè)方法

3.四個(gè)方法分別是getCount isViewFromObject instantiateItem destroyItem

4.在onCreat方法中,加載圖片資源,將圖片ID存在集合中,使圖片能夠在頁(yè)面中顯示,(圖片之所以能夠在頁(yè)面中顯示,是因?yàn)樵谶m配器中的instantiateItem方法中獲取了集合中的圖片元素)

5.圖片下方的文字顯示:圖片下方之所以會(huì)有文字,可以通過(guò)初始化控件,在ViewPager監(jiān)聽器中的onPageSelected方法中tv_desc.setText(descs[position]);這樣文字就可以跟隨者圖片進(jìn)行切換

6.文字下方的小圓點(diǎn)的切換:在XML布局中設(shè)置一個(gè)Linlayout布局,然后再onCreat方法中設(shè)置小圓點(diǎn),通過(guò)LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(10, 10);的方法引入小圓點(diǎn)(具體代碼可以參考下方的initDot方法)

7.要想讓小圓點(diǎn)隨著頁(yè)面的切換而切換,可以定義下方的changeDots的方法,讓此方法在監(jiān)聽器中的onPageSelected方法中進(jìn)行調(diào)用

8.圖片的無(wú)限輪播的實(shí)現(xiàn):可以使適配器中的getCount返回值設(shè)為一個(gè)很大很大的值,同時(shí)在instantiateItem方法中設(shè)置position position = position % imageResIds.length;防止索引越界異常,這樣就可以使圖片無(wú)限輪播,但是此時(shí)還有一個(gè)問(wèn)題就是,右邊可以無(wú)限輪播,但是左邊是無(wú)法無(wú)限輪播的,這個(gè)問(wèn)題的解決辦法是在onCreat方法中設(shè)置當(dāng)前選中的條目viewPager.setCurrentItem(count / 2);這樣兩邊都可以實(shí)現(xiàn)無(wú)限輪播 

9.圖片自動(dòng)切換的處理:使用handler機(jī)制實(shí)現(xiàn)頁(yè)面的延時(shí)更新,同時(shí)為了防止內(nèi)存溢出,需要在頁(yè)面可見(jiàn)時(shí),也就是activity的onStart方法中發(fā)送消息,在頁(yè)面消失時(shí),也就是onStop方法中刪除消息

布局文件

<?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:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.a2_.MainActivity"><android.support.v4.view.ViewPager  android:id="@+id/vp"  android:layout_width="match_parent"  android:layout_height="250dp"></android.support.v4.view.ViewPager><LinearLayout  android:orientation="vertical"  android:gravity="center"  android:background="#66000000"  android:layout_alignBottom="@id/vp"  android:layout_width="match_parent"  android:layout_height="50dp">  <TextView    android:id="@+id/desc"    android:text="描述文本"    android:textColor="#ffffff"    android:layout_width="wrap_content"    android:layout_height="wrap_content" />  <LinearLayout    android:id="@+id/layout_dot"    android:orientation="horizontal"    android:layout_width="wrap_content"    android:layout_height="wrap_content">  </LinearLayout></LinearLayout></RelativeLayout>

核心代碼

package com.example.a2_;import android.os.Handler;import android.os.Message;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private static final int UPDATE_ITEM = 1;private ArrayList<ImageView> imageViews = new ArrayList<>();private int[] imageResIds = {R.mipmap.icon_1, R.mipmap.icon_2, R.mipmap.icon_3,    R.mipmap.icon_4, R.mipmap.icon_5};private String[] descs = {"為夢(mèng)想堅(jiān)持", "我相信我是黑馬", "黑馬公開課", "Google/IO", "輕松1w+"};private ViewPager viewPager;private TextView tv_desc;private LinearLayout layout_dot;private int count = 10000000;private Handler handler = new Handler() {  @Override  public void handleMessage(Message msg) {    switch (msg.what) {      case UPDATE_ITEM:        upDataItem();        break;    }    super.handleMessage(msg);  }};@Overrideprotected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  //初始化控件  viewPager = (ViewPager) findViewById(R.id.vp);  tv_desc = (TextView) findViewById(R.id.desc);  layout_dot = (LinearLayout) findViewById(R.id.layout_dot);  //給viewPager設(shè)置適配器  viewPager.setAdapter(new MyPagerAdapter());  //對(duì)viewPager設(shè)置監(jiān)聽器  viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {    //當(dāng)頁(yè)面滾動(dòng)時(shí)觸發(fā)的時(shí)間    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }    //當(dāng)頁(yè)面被選中時(shí)觸發(fā)的方法    @Override    public void onPageSelected(int position) {      //對(duì)position進(jìn)行處理      position = position % imageViews.size();      //當(dāng)頁(yè)面被選中的時(shí)候,改變描述文本      tv_desc.setText(descs[position]);      changeDots(position);    }    //當(dāng)頁(yè)面狀態(tài)滾動(dòng)狀態(tài)發(fā)生改變時(shí)觸發(fā)的事件    @Override    public void onPageScrollStateChanged(int state) {      //當(dāng)頁(yè)面空閑狀態(tài)被改變的時(shí)候      if (state == viewPager.SCROLL_STATE_IDLE) {        handler.sendEmptyMessageDelayed(UPDATE_ITEM, 3000);      } else {        handler.removeMessages(UPDATE_ITEM);      }    }  });  //初始化圖片  initImage();  //初始化文字下方的點(diǎn)  initDot();  //當(dāng)加載頁(yè)面的時(shí)候,默認(rèn)讓第一個(gè)文本加載出來(lái)//    initDescFirst();  //使兩邊都可以無(wú)限輪播  viewPager.setCurrentItem(count / 2);//頁(yè)面加載時(shí)更新  upDataItem();}private void upDataItem() {  int index = viewPager.getCurrentItem();  viewPager.setCurrentItem(++index);  handler.sendEmptyMessageDelayed(UPDATE_ITEM, 3000);}//選中對(duì)應(yīng)的原點(diǎn)private void changeDots(int position) {  //先把所有的點(diǎn)恢復(fù)為白色  for (int i = 0; i < layout_dot.getChildCount(); i++) {    View view = layout_dot.getChildAt(i);    view.setSelected(false);  }  //獲取當(dāng)前被選中的條目 設(shè)置為選中狀態(tài)  layout_dot.getChildAt(position).setSelected(true);}//初始化文字下方的點(diǎn)private void initDot() {  LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(10, 10);  layoutParams.setMargins(4, 4, 4, 4);  for (int i = 0; i < imageViews.size(); i++) {    View view = new View(this);    view.setBackgroundResource(R.drawable.seletor_dot);    view.setLayoutParams(layoutParams);    layout_dot.addView(view);  }}//當(dāng)加載頁(yè)面的時(shí)候,默認(rèn)讓第一個(gè)文本加載出來(lái)private void initDescFirst() {  tv_desc.setText(descs[0]);  changeDots(0);}//添加圖片,準(zhǔn)備一個(gè)ImageView集合,用來(lái)交給instantiateItem添加到頁(yè)面private void initImage() {  for (int i = 0; i < imageResIds.length; i++) {    //創(chuàng)建出ImageView對(duì)象    ImageView imageView = new ImageView(getApplicationContext());    imageView.setImageResource(imageResIds[i]);    imageViews.add(imageView);  }}private class MyPagerAdapter extends PagerAdapter {  @Override  public int getCount() {    return count;  }  @Override  public boolean isViewFromObject(View view, Object object) {    //判斷這個(gè)view是不是通過(guò)instantiateItem創(chuàng)建出來(lái)的    return view == object;  }  //用來(lái)創(chuàng)建條目  @Override  public Object instantiateItem(ViewGroup container, int position) {    position = position % imageResIds.length;    //獲取條目    ImageView imageView = imageViews.get(position);    container.addView(imageView);    return imageView;  }  //用來(lái)銷毀條目,,且最多會(huì)創(chuàng)建出三個(gè)條目,多出來(lái)的條目將會(huì)被銷毀  @Override  public void destroyItem(ViewGroup container, int position, Object object) {    //銷毀創(chuàng)建的條目    container.removeView((View) object);  }}@Overrideprotected void onStart() {  super.onStart();  //當(dāng)頁(yè)面顯示的時(shí)候,更新輪播圖  handler.sendEmptyMessageDelayed(UPDATE_ITEM, 3000);}@Overrideprotected void onStop() {  super.onStop();  //當(dāng)頁(yè)面不可見(jiàn)時(shí),停止更新  handler.removeCallbacksAndMessages(null);}}

 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
中文字幕在线亚洲| 欧美性视频网站| 亚洲一区二区中文| 九色porny蝌蚪视频在线观看| 日韩不卡视频在线观看| 国产一区二区三区四区视频| 国产一区欧美一区| 一级黄色在线视频| 日日橹狠狠爱欧美超碰| 日韩一二三区| 国内a∨免费播放| wwwxx欧美| 在线观看av网站永久| 国产黄色特级片| 欧美在线视频精品| 国产免费又粗又猛又爽| 日本不卡二区高清三区| 亚洲一区二区在线观看视频| 亚洲av无码国产精品久久| 成人免费视频国产免费麻豆| 亚洲综合国产精品| 国产精品欧美综合在线| 欧美毛片免费观看| 天天做天天爱天天综合网| 亚洲经典一区| 8x8x8x视频在线观看| 中文文字幕文字幕高清| 精品国产一区二区三区在线| 国产丝袜视频一区| 日韩 欧美 综合| 国产欧美日韩中文字幕在线| 亚洲av成人无码久久精品老人| 日韩欧美精品免费在线| 美女脱光衣服与内衣内裤一区二区三区四区| 久草网在线视频| 久久夜色精品亚洲噜噜国产mv| 91免费视频污| 久久激情综合网| 两个人日本在线观看视频| 成人黄色大片在线观看| 一区精品久久| 欧美vide| 亚洲精品成人少妇| 国产在线观看中文字幕| 日本高清+成人网在线观看| 人人做人人澡人人爽欧美| 欧洲杯足球赛直播| 濑亚美莉vs黑人在线观看| 欧美激情久久久久久| 99re6在线精品视频免费播放| 特级西西444www大精品视频免费看| 日韩综合中文字幕| 国产成人精品一区二区三区在线| 久久伊人精品一区二区三区| 亚洲无码精品国产| 日韩在线一卡二卡| 欧美日韩在线视频免费播放| 1769免费视频在线观看| 无码任你躁久久久久久老妇| 97超碰国产精品| 熟妇高潮一区二区高潮| 在线看片中文字幕| 99热在这里有精品免费| 国产日产精品一区二区三区四区的观看方式| 中国成人在线视频| 午夜免费福利视频在线观看| 精品一二三四五区| 国产精品二三区| 精品国产自在久精品国产| wwwav在线播放| 国产伦精品一区二区三区四区视频_| 很黄很色的网站| 欧美v国产在线一区二区三区| 国产三级香港三韩国三级| 欧美激情高清视频| 99久久人妻无码中文字幕系列| 国产一区高清视频| 中文字幕乱码亚洲无线精品一区| www.亚洲在线| 18啪啪污污免费网站| 91在线免费观看| 国产精品视频线看| 亚洲欧洲美洲在线综合| 成人在线手机视频| 中文字幕高清视频| 成年免费在线观看| 草草地址线路①屁屁影院成人| 精品人伦一区二区三电影| 天堂网免费视频| 精品视频一区二区三区免费| 欧美一区久久久| 宅男噜噜噜66一区二区| 91视频最新| 超碰免费在线| 国产二区三区四区| 免费在线观看h片| 中文字幕一区二区三区人妻四季| 久久精品一区二区三区四区| 亚洲精品在线视频观看| 永久久久久久久| 国产精品久久久精品a级小说| 久久久美女艺术照精彩视频福利播放| 无码黑人精品一区二区| 欧美xxxx日本和非洲| 日本中文字幕伦在线观看| 男女激情无遮挡| 99国产精品视频免费观看| 欧美在线视频免费观看| 日韩女优毛片在线| 女同久久另类69精品国产| 日韩一区二区不卡| 91精品欧美福利在线观看| 稀缺呦国内精品呦| 国模精品视频| 欧美性生活大片视频| 在线免费观看av电影| 欧美午夜影院一区| 亚洲欧洲成人精品av97| www.自拍偷拍| 亚洲最大成人在线| 精品国产av无码| 日本电影中文字幕| 成人av动漫| 先锋影音在av资源看片| 思99热精品久久只有精品| 亚洲香蕉在线视频| 久久免费的精品国产v∧| 欧美亚洲另类激情另类| 蜜桃精品一区二区| 亚洲精品视频网| 一道精品视频一区二区三区图片| 蜜桃视频最新网址| 亚欧精品一区二区三区| 日韩三级在线观看| 国内成+人亚洲| 欧美日本不卡| 欧美日韩性视频一区二区三区| 国产欧美日韩在线一区二区| 97超碰国产一区二区三区| 日韩av在线免费看| 国产精品15p| 精品国产aⅴ麻豆| 僵尸再翻生在线观看免费国语| 成人资源www网在线最新版| 亚洲欧洲无码一区二区三区| 一级视频在线观看视频在线啦啦| 天堂在线观看免费视频| 亚洲在线免费看| 亚洲一区二区日本| 国产精品久久久久久久久图文区| 影音先锋亚洲视频| 精品国产一区二区三区久久影院| 在线免费看黄av| 成人免费毛片男人用品| 国产精品自拍小视频| 九色视频在线观看免费| 18视频在线观看网站| 欧美一区二区三区性视频| 精品视频在线观看日韩| 波多野结衣办公室33分钟| 精品亚洲va在线va天堂资源站| 无码免费一区二区三区| 一区二区久久久久久| 91视频8mav| 91国产美女视频| 久久av最新网址| 亚洲欧洲国产伦综合| 4kfree性满足欧美hd18| 欧美一级片在线看| 欧美色图色综合| 超碰在线caoporn| 欧美肉大捧一进一出免费视频| 不卡专区在线| 国产精品suv一区| 搞黄视频免费在线观看| 欧美三级电影网| 蜜桃视频在线免费| 久久久国产精华| 国产精品19乱码一区二区三区| 国产一区二区三区在线视频观看| 男人扒开美女尿口无遮挡图片| 欧美tickling挠脚心丨vk| 九九在线观看免费视频| 人人澡人人澡人人看欧美| 国产精品一区而去| 精品一区二区三区欧美| 精品免费日韩av| 日本精品va在线观看| 黄色一级影院| 亚洲一二三四五六区| 国产精品入口尤物| 成年女人午夜毛片免费看| 欧美少妇精品| 国产欧美综合视频| 日韩免费视频| 日本道色综合久久| 阿v视频在线| 亚洲成人综合网站| 九义人在线观看完整免费版电视剧| **精品中文字幕一区二区三区| 欧美日韩一区二区三区高清| xxxx日本免费| 日本韩国欧美超级黄在线观看| 国产一区二区在线视频| 午夜激情久久久| 搡女人真爽免费午夜网站| jizz.www| 中文字幕一二三区| 天天做天天摸天天爽国产一区| 午夜精品视频在线观看| 欧美人妻精品一区二区三区| 免费看久久久| 黄色三级电影网| 成人高清视频免费观看| 中文字幕一精品亚洲无线一区| 成人精品国产福利| 国产h在线观看| 亚洲综合激情另类专区老铁性| 亚洲精品乱码久久久久久黑人| 中文字幕第66页| 精品视频在线播放免| aaawww| 国产区亚洲区欧美区| 亚洲男人的天堂成人| 成人精品美女隐私视频| 久久久久亚洲精品国产| 国产伦精品一区二区三区四区视频| 日本在线中文电影| tube国产麻豆| 亚洲欧美激情一区二区| 国产女人被狂躁到高潮小说| 久久精品性爱视频| 日本高清视频在线| 国产精品久久久久久久app| siro系绝美精品系列| 一级特黄大欧美久久久| 国产网友自拍视频| 国产亚洲欧美视频| 国产毛片精品视频| 色呦呦在线免费观看| 1024av视频| 中国女人精69xxxxxx视频| 9191国产视频| 性刺激的欧美三级视频| 岛国在线视频网站| 精品久久久久久久久久ntr影视| 日韩美女av在线| 九九热免费视频| 色先锋资源久久综合| 夜夜摸视频网| 在线三级电影| 在线观看日韩一区二区| 草逼视频免费看| 97国产在线视频| 亚洲一区二区乱码| 性欧美黑人xxxx| 日本人体一区二区| 国产热re99久久6国产精品| 在线综合视频网站| 亚洲精品国产suv一区88| free性欧美69巨大| 蜜臀av亚洲一区中文字幕| 成人免费一区二区三区在线观看| 91精彩刺激对白露脸偷拍| 自拍视频一区二区三区| 亚洲人成人99网站| 日本人妖在线| 欧美日韩综合网| 99久久综合狠狠综合久久aⅴ| 亚洲国产成人久久| 老鸭窝91久久精品色噜噜导演| 牛牛电影国产一区二区| 九色porny自拍视频| 99热这里只有精品8| 美女把尿口扒开让男人桶在线观看| 国产区精品在线| 亚洲福利视频一区| 亚洲最大福利网站| 女同性一区二区三区人了人一| 久久99999| www.xxxx欧美| 图片区 小说区 区 亚洲五月| 在线观看爽视频| 哺乳一区二区三区中文视频| 中文字幕亚洲影院| 在线免费观看av网址| 红桃视频一区二区三区免费| 日韩精品无码一区二区三区免费| 午夜精品一区二区三区视频| 欧美日韩成人一区| av电影在线不卡| 精品久久久久一区二区国产| 亚洲欧美偷拍另类| 中文在线а√天堂官网| 影音av资源站| 91久久精品国产91性色69| 交换国产精品视频一区| 欧美色婷婷天堂网站| 久久97视频| 欧美另类极品videosbest视| 91av俱乐部| 亚洲大片一区二区三区| 欧美精品乱码久久久久久按摩| 欧美成人国产| 亚洲精品免费一区二区三区| 欧美日韩性视频一区二区三区| 国产你懂的在线观看| 伊人久久精品视频| 俺去了亚洲欧美日韩| 亚洲天堂精品在线观看| 天天色天天草天天射| 国产精品中出一区二区三区| av电影免费在线观看| 色欲欲www成人网站| 亚洲一区二区精品在线观看| 国产欧美一区二区三区不卡高清| 霍思燕三级露全乳照| 污视频网站免费看| 欧美日韩免费观看一区二区三区| 亚洲人成亚洲人成在线观看| 天天天干夜夜夜操| 日韩乱码人妻无码中文字幕久久| 日本精品一区二区三区四区的功能| 凹凸日日摸日日碰夜夜| 美女精品在线| 欧美午夜精品在线| 白白色 亚洲乱淫| 日韩精品第1页|