您好,登錄后才能下訂單哦!
本篇文章為大家展示了Android中怎么利用ViewPager實現(xiàn)無限循環(huán),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
Android ViewPager實現(xiàn)無限循環(huán)的實例
ViewPager自身并不支持左右無限循環(huán)的功能,這里就提供一種方案讓Android ViewPager實現(xiàn)左右無限循環(huán)的功能,這里記錄下:
用于顯示的mViews,比數(shù)據(jù)源mList,多了兩個節(jié)點元素(頭節(jié)點0:b和尾節(jié)點5:e用于跳轉(zhuǎn))
下圖的不帶箭頭的紅線,是mViews根據(jù)mList初始化的情況;帶箭頭的紅線是跳轉(zhuǎn)的情況。
首先還是布局文件:
<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.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignBottom="@id/viewpager" android:background="#33000000" android:orientation="vertical" android:padding="5dip" > <TextView android:id="@+id/tv_image_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="第一個引導(dǎo)頁面" android:textColor="@android:color/white" android:textSize="14sp" /> <LinearLayout android:id="@+id/ll_points" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:layout_gravity="center_horizontal" android:orientation="horizontal" > </LinearLayout> </LinearLayout> </RelativeLayout>
接下來是MainActivity:
package com.example.viewpagertest; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; public class MainActivity extends Activity implements OnPageChangeListener { private List<ImageView> imageViewList; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setView(); initView(); } public void setView() { setContentView(R.layout.activity_splash_viewpager); } public void initView() { mViewPager = (ViewPager) findViewById(R.id.viewpager); prepareData(); ViewPagerAdapter adapter = new ViewPagerAdapter(); mViewPager.setAdapter(adapter); mViewPager.setOnPageChangeListener(this); } private void prepareData() { imageViewList = new ArrayList<ImageView>(); int[] imageResIDs = getImageResIDs(); ImageView iv; for (int i = 0; i < imageResIDs.length; i++) { iv = new ImageView(this); iv.setBackgroundResource(imageResIDs[i]); imageViewList.add(iv); } } /** * 在此處本來是5張圖片,現(xiàn)在在數(shù)組首尾各加了一張圖 * @return */ private int[] getImageResIDs() { return new int[]{ R.drawable.pic_02, R.drawable.bg1, R.drawable.bg2, R.drawable.bg3, R.drawable.pic_01, R.drawable.pic_02, R.drawable.bg1, }; } class ViewPagerAdapter extends PagerAdapter { @Override public int getCount() { return imageViewList.size(); } /** * 判斷出去的view是否等于進來的view 如果為true直接復(fù)用 */ @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } /** * 銷毀預(yù)加載以外的view對象, 會把需要銷毀的對象的索引位置傳進來就是position */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(imageViewList.get(position)); } /** * 創(chuàng)建一個view */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(imageViewList.get(position)); return imageViewList.get(position); } } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { if ( imageViewList.size() > 1) { //多于1,才會循環(huán)跳轉(zhuǎn) if ( position < 1) { //首位之前,跳轉(zhuǎn)到末尾(N) position = 5; mViewPager.setCurrentItem(position,false); } else if ( position > 5) { //末位之后,跳轉(zhuǎn)到首位(1) mViewPager.setCurrentItem(1,false); //false:不顯示跳轉(zhuǎn)過程的動畫 position = 1; } } } @Override protected void onDestroy() { super.onDestroy(); } }
mViewPager.setCurrentItem(1,false); //false:不顯示跳轉(zhuǎn)過程的動畫
上述內(nèi)容就是Android中怎么利用ViewPager實現(xiàn)無限循環(huán),你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。