国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

Android使用viewpager實現(xiàn)自動無限輪播圖

2019-12-12 00:48:35
字體:
供稿:網(wǎng)友

1、具體步驟

     說下大概實現(xiàn)步驟,一般我們有兩種,一種是viewpager+作為游標的點 。另外一種是重寫viewpager。

       效果圖:

1.1 布局,直接viewpager+一個viewgroup就好。

<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"   tools:context="com.maxence.viewpager.MainActivity" >   <RelativeLayout     android:layout_width="match_parent"     android:layout_height="220dp" >     <android.support.v4.view.ViewPager       android:id="@+id/vp_pager"       android:layout_width="match_parent"       android:layout_height="match_parent" />       <!-- 作為viewgroup 動態(tài) add 游標 -->       <LinearLayout         android:id="@+id/ll_container"         android:layout_width="match_parent"         android:layout_height="30dp"         android:gravity="center"         android:orientation="horizontal"         android:layout_alignParentBottom="true"         ></LinearLayout>   </RelativeLayout> </RelativeLayout> 

 1.2 動態(tài)add的點,常規(guī)白點:point_normal.xml。

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"     android:shape="oval">   <stroke     android:width="1dip"     android:color="#ffffff"/>   <solid android:color="#ffffff" /> </shape> 

   選中為紅點: point_select.xml

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

1.3動態(tài)添加進去圖片和游標點。

 /**    * 初始化數(shù)據(jù)    */   private void initData() {     mContext = this;     int[] i = new int[] { R.drawable.bg_lunbo1, R.drawable.bg_lunbo2, R.drawable.bg_lunbo3, R.drawable.bg_lunbo4 };     al = new ArrayList<ImageView>();     for (int x = 0; x < i.length; x++) {       ImageView iv = new ImageView(mContext);       iv.setBackgroundResource(i[x]);       al.add(iv);       View v=new View(mContext);       v.setBackgroundResource(R.drawable.point_normal);       //有多少張圖就放置幾個點       LayoutParams layoutParams = new LinearLayout.LayoutParams(15, 15);              layoutParams.leftMargin = 30;        ll_container.addView(v,layoutParams);     }     vp_pager.setAdapter(new Myadapter());     vp_pager.setOnPageChangeListener(this);     vp_pager.setCurrentItem(al.size()*1000); //這個是無線輪詢的關(guān)鍵     ll_container.getChildAt(0).setBackgroundResource(R.drawable.point_select);     prePosition=0;   } 

1.4 viewpgaer綁定PagerAdapter,這樣就能滑動照片并且無限滑了。

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 Object instantiateItem(ViewGroup container, int position) {         int position1=position % al.size();            ImageView imageView = al.get(position1);         container.addView(imageView);         return imageView;     }     @Override     public void destroyItem(ViewGroup container, int position, Object object) {       container.removeView((View)object);     }   } 

1.5 實現(xiàn)游標,就是滑動圖片,下面的紅點也跟著變化。

vp_pager.setOnPageChangeListener(this); @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) {    int newPosition = position % al.size();     ll_container.getChildAt(newPosition).setBackgroundResource(R.drawable.point_select);    ll_container.getChildAt(prePosition).setBackgroundResource(R.drawable.point_normal);    prePosition=newPosition; } 

1.6實現(xiàn)自動輪詢。開啟一個線程即可。

/**    * 自動輪詢    */   private void pollint() {    pThread = new PollThread();    pThread.start();   } class PollThread extends Thread{     @Override     public void run() {       while (poll){                          try {           Thread.sleep(2000);         } catch (InterruptedException e) {           e.printStackTrace();         } 

runOnUiThread(new Runnable() {@Overridepublic void run() {vp_pager.setCurrentItem(vp_pager.getCurrentItem()+1);}});}}}這樣就搞定了,僅僅提供一個思路。自己可以擴展,例如重寫viewpager,把功能封裝在內(nèi)部即可。

總結(jié)

以上所述是小編給大家介紹的Android使用viewpager實現(xiàn)自動無限輪播圖,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘德县| 德令哈市| 太湖县| 封丘县| 高要市| 乐清市| 博客| 三台县| 黄平县| 张家口市| 洪湖市| 韶关市| 天全县| 八宿县| 油尖旺区| 镇赉县| 宁陕县| 色达县| 富锦市| 会东县| 西乌珠穆沁旗| 裕民县| 咸宁市| 财经| 仪陇县| 海林市| 禹州市| 巴青县| 延边| 同仁县| 沛县| 门头沟区| 灵寿县| 黄龙县| 桐梓县| 额济纳旗| 海南省| 玛沁县| 拉萨市| 山西省| 西城区|