91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android使用viewpager實現自動無限輪播圖

發布時間:2020-10-03 11:57:04 來源:腳本之家 閱讀:168 作者:_淡然_花落_ 欄目:移動開發

1、具體步驟

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

       效果圖:

Android使用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 動態 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 動態add的點,常規白點: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動態添加進去圖片和游標點。

 /** 
   * 初始化數據 
   */ 
  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); //這個是無線輪詢的關鍵 
    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 實現游標,就是滑動圖片,下面的紅點也跟著變化。

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實現自動輪詢。開啟一個線程即可。

/** 
   * 自動輪詢 
   */ 
  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,把功能封裝在內部即可。

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝兴县| 高密市| 彭泽县| 盐池县| 朝阳市| 梅河口市| 长子县| 罗城| 正蓝旗| 正定县| 南川市| 历史| 松阳县| 神池县| 城口县| 平安县| 繁昌县| 黄冈市| 华宁县| 丰原市| 唐山市| 荃湾区| 霍山县| 涟水县| 廉江市| 桐城市| 南丰县| 平阳县| 广灵县| 汝城县| 通许县| 阳曲县| 贵德县| 怀集县| 当涂县| 馆陶县| 清新县| 科尔| 招远市| 四川省| 陵水|