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

首頁 > 學院 > 開發設計 > 正文

安卓開發——基于ViewPager的圖片輪播

2019-11-09 16:21:43
字體:
來源:轉載
供稿:網友

概述: 要用ViewPager實現圖片輪播,主要是兩步: 1:用PagerAdapter使圖片可以滑動切換 2:用Handler來實現圖片自動輪播

頁面布局部分的代碼:

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawerlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="wrap_content" android:layout_height="150dp" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="match_parent" /> <AbsoluteLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/viewgroup" android:layout_width="match_parent" android:layout_height="30dp" android:layout_alignParentRight="true" android:orientation="horizontal" android:gravity="right|bottom" android:layout_y="120d控制邏輯部分的java代碼:

public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener { PRivate MyHandler handler = new MyHandler(new WeakReference<>(this)); private ViewPager viewPaper; private ImageView[] tips = null; private ImageView[] imgs = null; private ViewGroup group; private int[] ids = new int[]{R.drawable.sc_1,R.drawable.sc_2,R.drawable.sc_3};//載入圖片 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); group = (ViewGroup)findViewById(R.id.viewgroup); viewPaper = (ViewPager)findViewById(R.id.viewPager); //將標識點裝載入ViewGroup中 tips = new ImageView[ids.length]; for(int i=0;i<ids.length;i++){ ImageView imageview = new ImageView(this); imageview.setLayoutParams(new LinearLayout.LayoutParams(7,7));//設置標識點的大小 tips[i] = imageview; if(i==0){//加載圖片 tips[i].setBackgroundResource(R.drawable.page_indicator_focused); }else{ tips[i].setBackgroundResource(R.drawable.page_indicator_focused); } //設置標識點的位置參數 LinearLayout.LayoutParams layoutparams = new LinearLayout.LayoutParams(new ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); layoutparams.leftMargin = 3; layoutparams.rightMargin = 3; group.addView(imageview,layoutparams); } group.bringToFront(); //將輪播圖片加載到數組中 imgs = new ImageView[ids.length]; for(int i=0;i<ids.length;i++){ ImageView imageview = new ImageView(this); imgs[i] = imageview; imageview.setBackgroundResource(ids[i]); } //設置Adapter viewPaper.setAdapter(new MyAdapter()); //設置監聽。主要是設置標識點背景 viewPaper.setOnPageChangeListener(this); viewPaper.setCurrentItem((imgs.length)*100); //啟動輪播 handler.sendEmptyMessageDelayed(MyHandler.MSG_UPDATE_IMG, MyHandler.MSG_DELAY); } public class MyAdapter extends PagerAdapter{ @Override public int getCount(){ return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1){ return arg0 == arg1; } @Override public void destroyItem(View container,int position,Object object){// ((ViewPager)container).removeView(imgs[position % imgs.length]); } //載入圖片進去 @Override public Object instantiateItem(View container, int position){ position %= imgs.length; ImageView view = imgs[position % imgs.length]; ViewParent vp = view.getParent(); if(vp != null){ ViewGroup parent = (ViewGroup)vp; parent.removeView(view); } try { ((ViewPager) container).addView(imgs[position],0); }catch(Exception e){ } return imgs[position % imgs.length]; } } @Override public void onPageScrollStateChanged(int arg0) { switch(arg0){ case ViewPager.SCROLL_STATE_DRAGGING://正在滑動 handler.sendEmptyMessage(MyHandler.MSG_STOP_IMG); break; case ViewPager.SCROLL_STATE_IDLE://已經完成切換 handler.sendEmptyMessageDelayed(MyHandler.MSG_UPDATE_IMG,MyHandler.MSG_DELAY); break; default: break; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int arg0) { setImageBackground(arg0 % imgs.length); handler.sendMessage(Message.obtain(handler,MyHandler.MSG_PAGE_OLD,arg0,0));//記錄切換到的頁碼 } /** * 設置選中的tip的背景 * @param selectItems */ private void setImageBackground(int selectItems){ for(int i=0; i<tips.length; i++){ if(i == selectItems){ tips[i].setBackgroundResource(R.drawable.page_indicator_focused); }else{ tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } } } public class MyHandler extends Handler{ /* 請求輪播 */ protected static final int MSG_UPDATE_IMG = 1; /* 請求暫停輪播 */ protected static final int MSG_STOP_IMG = 2; /* 請求開始輪播 */ protected static final int MSG_START_IMG = 3; /* 記錄要開始輪播的頁號 */ protected static final int MSG_PAGE_OLD = 4; /* 輪播時間間隔 */ protected static final long MSG_DELAY = 1000; //使用弱引用 private WeakReference<MainActivity> weakReference; private int currentItem = 0; protected MyHandler(WeakReference<MainActivity> wk){ this.weakReference = wk; } public void handleMessage(Message msg) { super.handleMessage(msg); MainActivity activity = weakReference.get(); if(activity == null){ return; } //檢查并移除隊列中未發送的消息 if (activity.handler.hasMessages(MSG_UPDATE_IMG) && currentItem > 1){ activity.handler.removeMessages(MSG_UPDATE_IMG); } switch(msg.what){ case MSG_UPDATE_IMG: currentItem ++; //設置一個顯示圖片的下標,實現切換效果 activity.viewPaper.setCurrentItem(currentItem); //準備下次切換 activity.handler.sendEmptyMessageDelayed(MSG_UPDATE_IMG,MSG_DELAY); break; case MSG_STOP_IMG: //不發送消息就暫停了 break; case MSG_START_IMG: activity.handler.sendEmptyMessageDelayed(MSG_UPDATE_IMG,MSG_DELAY); break; case MSG_PAGE_OLD: //記錄頁號 currentItem = msg.arg1; break; default: break; } } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美裸身视频免费观看| 欧美成人免费视频| 国产精品久久久久福利| 在线观看精品国产视频| 欧美在线中文字幕| 国产精品专区一| 一区二区在线视频播放| 亚洲a级在线播放观看| 国产日韩在线观看av| 欧美电影免费观看高清完整| 日本亚洲欧洲色α| 亚洲最大成人免费视频| 日本三级久久久| 日本午夜精品理论片a级appf发布| 欧美激情一区二区三级高清视频| 最近2019中文字幕大全第二页| 91精品国产自产在线观看永久| 国产精品96久久久久久又黄又硬| 日本不卡免费高清视频| 国产亚洲欧美日韩精品| 亚洲国产精品嫩草影院久久| 中文字幕成人精品久久不卡| 久久精品成人欧美大片古装| 97视频国产在线| 久久夜色精品亚洲噜噜国产mv| 精品少妇v888av| 欧美国产亚洲视频| 欧美成人精品影院| 亚洲偷欧美偷国内偷| 国产成人亚洲综合91精品| 久热精品在线视频| 欧美人与性动交a欧美精品| 成人乱人伦精品视频在线观看| 97精品国产97久久久久久免费| 欧美大肥婆大肥bbbbb| 国内外成人免费激情在线视频网站| 国产午夜精品一区二区三区| 日韩av毛片网| 国产婷婷成人久久av免费高清| 精品久久久久久中文字幕一区奶水| 亚洲成人a级网| 成人激情av在线| 欧美一区亚洲一区| 欧美激情久久久| 91精品国产高清久久久久久91| 92裸体在线视频网站| 亚洲欧洲日产国码av系列天堂| 57pao成人永久免费视频| 国产日产欧美a一级在线| 国产精品久久久久久久久久小说| 久久综合久久88| 亚洲一区二区中文| 原创国产精品91| 九九热精品在线| 91免费版网站入口| 26uuu另类亚洲欧美日本老年| 日本19禁啪啪免费观看www| 91九色在线视频| 2019中文字幕在线观看| 亚洲精品电影在线| 深夜福利一区二区| 国产精品电影一区| 狠狠躁夜夜躁人人躁婷婷91| 亚洲福利小视频| 亚洲精品videossex少妇| 66m—66摸成人免费视频| 国产精品久在线观看| 亚洲天堂2020| 国产精品爽爽ⅴa在线观看| 精品久久在线播放| 久久久亚洲天堂| 国产成人综合亚洲| 97在线视频免费看| 国产精品久久久久久一区二区| 欧美大码xxxx| 国产精品18久久久久久麻辣| 韩剧1988免费观看全集| 色www亚洲国产张柏芝| 欧美大片va欧美在线播放| 欧美激情一区二区三区在线视频观看| 午夜精品一区二区三区在线| 成人黄色在线免费| 亚洲精品欧美极品| 久久精品这里热有精品| 91精品综合久久久久久五月天| 亚洲欧洲在线观看| 成人国产精品日本在线| 国产精品白丝av嫩草影院| 日韩中文第一页| 91高清在线免费观看| 91精品免费视频| 亚洲欧洲黄色网| 亚洲第一中文字幕在线观看| 77777少妇光屁股久久一区| 亚洲精品资源在线| 国产精品激情av在线播放| 精品久久久久久中文字幕大豆网| 欧美激情视频网| 日韩三级影视基地| 中文字幕欧美视频在线| 欧美精品一二区| 91久久久国产精品| 日韩亚洲一区二区| 97国产成人精品视频| 91精品国产综合久久久久久蜜臀| 国产日本欧美一区二区三区| 91国内揄拍国内精品对白| 成人午夜在线视频一区| 国产91精品黑色丝袜高跟鞋| 日韩av在线免费看| 777国产偷窥盗摄精品视频| 欧美日本高清一区| 精品国产网站地址| 日韩成人av一区| 国产97色在线|日韩| 国产主播在线一区| 国产人妖伪娘一区91| 青草热久免费精品视频| 精品国产区一区二区三区在线观看| 中文字幕精品国产| 日韩精品极品在线观看| 国产一区二区三区在线看| 欧美日韩美女视频| 黑人巨大精品欧美一区免费视频| 欧美激情乱人伦| 91精品国产综合久久香蕉的用户体验| 亚洲欧美一区二区精品久久久| 国产成人91久久精品| 国产精品综合久久久| 韩国三级日本三级少妇99| 国产午夜精品理论片a级探花| 91超碰caoporn97人人| 日韩av有码在线| 欧美高清videos高潮hd| 欧美视频免费在线| 国产香蕉97碰碰久久人人| 亚洲成人精品在线| 亚洲免费精彩视频| 最新国产成人av网站网址麻豆| 欧美xxxx做受欧美.88| 欧美性猛交xxxx乱大交3| 美日韩精品免费视频| 久久资源免费视频| 人人爽久久涩噜噜噜网站| 国产精品美女久久久久久免费| 久久亚洲私人国产精品va| 亚洲一区二区三区乱码aⅴ| 亚洲国产日韩一区| 欧美精品videossex性护士| 日韩av不卡电影| 在线视频精品一| 成人免费网站在线| 国产一区二区香蕉| 国产视频久久久久| 成人做爰www免费看视频网站| 欧美日韩另类在线| 伊人激情综合网| 久久99热精品| 欧美乱妇高清无乱码| 国产欧美日韩丝袜精品一区| 国产精品极品在线| 日本精品一区二区三区在线播放视频| 欧美激情第一页xxx| 成人在线激情视频|