300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Android ViewPager真正的实现无限循环滚动

Android ViewPager真正的实现无限循环滚动

时间:2020-09-16 05:13:32

相关推荐

Android ViewPager真正的实现无限循环滚动

在存放View的集合中的第一个位置放入真正的最后一个View,而在最后一个放入第一个。具体请参照下图以及代码!

packagecom.xinye.ui;importjava.util.ArrayList; importjava.util.HashMap;importnet.tsz.afinal.FinalBitmap; importnet.tsz.afinal.FinalHttp; importnet.tsz.afinal.http.AjaxCallBack;importorg.json.JSONArray; importorg.json.JSONException; importorg.json.JSONObject;importandroid.graphics.Color; importandroid.support.v4.view.PagerAdapter; importandroid.support.v4.view.ViewPager; importandroid.support.v4.view.ViewPager.OnPageChangeListener; importandroid.util.Log; importandroid.view.LayoutInflater; importandroid.view.View; importandroid.view.ViewGroup; importandroid.widget.ImageView; importandroid.widget.ImageView.ScaleType; importandroid.widget.TextView; importandroid.widget.Toast;importcom.xinye.R; importcom.xinye.domain.Bargain; importcom.xinye.domain.Screen; importcom.xinye.domain.ViewFrame; importcom.xinye.util.ApplicationUtils; importcom.xinye.util.ConstantsUtils; importcom.xinye.util.FileUtils; importcom.xinye.util.ImagePathUtils; importcom.xinye.util.LogUtils; importcom.xinye.util.StringUtils; importcom.xinye.view.SlidingView;/** * Fragment * * * */ publicclassBannerFragmentextendsBaseFragmentimplementsOnPageChangeListener {// 当前Fragment的RootView privateView mRootView =null; // 当前Fragment中的ViewPager privateViewPager mViewPager =null; // 展示当前页面标识的TextView privateTextView mTextView =null; // 布局填充器对象 privateLayoutInflater mLayoutInflater =null; // 保存Bargain信息的ArrayList privateArrayList<Bargain> mBargainList =newArrayList<Bargain>(); // 保存所有的ViewPager的View privateArrayList<ImageView> mViewList =newArrayList<ImageView>(); // Bitmap载入工具类 privateFinalBitmap mFinalBitmap; // 切换到左边的ImageView privateImageView mToLeftImageView =null; // 切换到右侧的ImageView privateImageView mToRightImageView =null; // 图片URL列表 privatestaticArrayList<String> mImageUrlList =newArrayList<String>(); @Override protectedvoidinitContent() {mFinalBitmap = FinalBitmap.create(mActivity, FileUtils.getCacheDirectory(mActivity)); mTopbarTextView.setText(R.string.popup_banner); mPopupBannerTextView.setTextColor(Color.argb(0xff, 0xa1, 0x01, 0x01)); mTopbarLeftImageView.setImageResource(R.drawable.topbar_banner);mLayoutInflater = mActivity.getLayoutInflater();mRootView = mLayoutInflater.inflate(R.layout.fragment_banner,null); mbaseLinearLayout.addView(mRootView);mViewPager = (ViewPager) mRootView.findViewById(R.id.bannerFragmentViewPager); mTextView = (TextView) mRootView.findViewById(R.id.countBannerFragmentTextView);mToLeftImageView = (ImageView) mRootView.findViewById(R.id.toLeftBannerFragmentImageView); mToLeftImageView.setOnClickListener(BannerFragment.this);mToRightImageView = (ImageView) mRootView.findViewById(R.id.toRightBannerFragmentImageView); mToRightImageView.setOnClickListener(BannerFragment.this);try{if(mImageUrlList !=null&& mImageUrlList.size() > 0){initViewPager(); }else{initData(); } }catch(Exception e) {e.printStackTrace(); } }// 初始化数据 privatevoidinitData()throwsException {HashMap<String, Object> data =newHashMap<String, Object>(); data.put("loginUserId", UserLoginActivity.userID); data.put("checkStr", UserLoginActivity.token); data.put("isMember", UserLoginActivity.isMember); String url = poseUrl(ConstantsUtils.BANNER_LIST_URL, data); LogUtils.printLog(Log.INFO, LogUtils.LOG_TAG, "BannerFragment initData url =" + url); newFinalHttp().get(url,newAjaxCallBack<String>() {@Override publicvoidonSuccess(String t) {LogUtils.printLog(Log.INFO, LogUtils.LOG_TAG, "banner list JSON:" + t); parseJSON(t); super.onSuccess(t); }@Override publicvoidonFailure(Throwable t, String strMsg) {if(t !=null){mImageUrlList = FileUtils.readListFromFile(mActivity, FileUtils.LIST_BANNER_FILE_NAME); if(mImageUrlList !=null){initViewPager(); } } super.onFailure(t, strMsg); } });}// 解析JSON privatevoidparseJSON(String t) {if(t ==null) {return; } try{JSONObject tObj =newJSONObject(t); intstatus = tObj.getInt("status"); // String message = tObj.getString("message"); if(status == 0) {String dataString = tObj.getString("data"); if(dataString !=null&& !dataString.equalsIgnoreCase("null")) {JSONObject dataObj =newJSONObject(dataString); String partnerBargainFormListString = dataObj.getString("partnerBargainFormList"); if(partnerBargainFormListString !=null&& !partnerBargainFormListString.equalsIgnoreCase("null")) {JSONArray array =newJSONArray(partnerBargainFormListString); Screen screen = ApplicationUtils.getScreen(mActivity); if(array !=null) {intlen = array.length(); for(inti = 0; i < len; i++) {JSONObject obj = array.getJSONObject(i); String bargainString = obj.getString("partnerBargain"); Bargain bargain =newBargain(); if(bargainString !=null&& !bargainString.equalsIgnoreCase("null")) {JSONObject bargainObj =newJSONObject(bargainString); bargain.partnerCategoryId = bargainObj.getLong("partnerCategoryId"); bargain.partnerId = bargainObj.getLong("partnerId"); bargain.pictureId = bargainObj.getLong("pictureId"); bargain.title = bargainObj.getString("title"); bargain.displayOrder = bargainObj.getLong("displayOrder"); bargain.dailySpecialsId = bargainObj.getLong("dailySpecialsId"); bargain.bargainId = bargainObj.getLong("bargainId"); } String pic = obj.getString("pic"); pic = ImagePathUtils.getBannerRealPath(pic,screen); bargain.pic = pic; mBargainList.add(bargain); mImageUrlList.add(bargain.pic); } FileUtils.writeListToFile(mActivity, FileUtils.LIST_BANNER_FILE_NAME, mImageUrlList); initViewPager(); } }else{return; } }else{return; } } }catch(JSONException e) {e.printStackTrace(); } }// 初始化ViewPager privatevoidinitViewPager() {if(!(mImageUrlList !=null&& mImageUrlList.size() > 0)){return; } intlength = mImageUrlList.size() + 2; for(inti = 0; i < length; i++) {ImageView mViewPagerImageView =newImageView(mActivity); ViewGroup.LayoutParams viewPagerImageViewParams = newViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); mViewPagerImageView.setLayoutParams(viewPagerImageViewParams); mViewPagerImageView.setScaleType(ScaleType.FIT_XY); mViewPagerImageView.setOnClickListener(BannerFragment.this); mViewList.add(mViewPagerImageView); } if(mViewList !=null&& mViewList.size() > 0) {mViewPager.setAdapter(newViewpagerAdapter()); } mViewPager.setOnPageChangeListener(BannerFragment.this);if(mImageUrlList.size() == 0) {mTextView.setText(String.format("0 / %s", mImageUrlList.size())); }else{mTextView.setText(String.format("1 / %s", mImageUrlList.size())); } mViewPager.setCurrentItem(1); if(mActivity.getSlidingMenu() !=null&& mActivity.getSlidingMenu().getSlidingView() !=null) {SlidingView sv = mActivity.getSlidingMenu().getSlidingView(); sv.setOnInterceptListener(newSlidingView.OnInterceptListener() {@Override publicViewFrame getInterceptViewFrame() {ViewFrame frame =newViewFrame(0, 50, mViewPager.getWidth(), mViewPager.getHeight()); returnframe; } }); } } @Override protectedvoidinit() {} /** * PagerAdapter * @author * */ classViewpagerAdapterextendsPagerAdapter {@Override publicvoiddestroyItem(View container,intposition, Objectobject) {ImageView view = mViewList.get(position % mViewList.size()); ((ViewPager) container).removeView(view); view.setImageBitmap(null); }@Override publicObject instantiateItem(View container,intposition) {((ViewPager) container).addView(mViewList.get(position)); returnmViewList.get(position); }@Override publicintgetCount() {returnmViewList.size(); }@Override publicbooleanisViewFromObject(View view, Objectobject) {returnview ==object; } }@Override publicvoidonPageScrollStateChanged(intstate) {}@Override publicvoidonPageScrolled(intposition,floatpositionOffset,intpositionOffsetPixels) {}@Override publicvoidonPageSelected(intposition) {if(position == 0){mFinalBitmap.display(mViewList.get(position), mImageUrlList.get(mImageUrlList.size() - 1)); }elseif(position == mViewList.size() - 1){mFinalBitmap.display(mViewList.get(position), mImageUrlList.get(0)); }else{mFinalBitmap.display(mViewList.get(position), mImageUrlList.get(position - 1)); } intpageIndex = position; if(position == 0){pageIndex = mImageUrlList.size(); }elseif(position == mImageUrlList.size() + 1){pageIndex = 1; } if(position != pageIndex){mViewPager.setCurrentItem(pageIndex,false); return; } intcount = mViewList.size() - 2; if(mViewList !=null&& count > 0){intindex = (position); String text = index + "/" + count; mTextView.setText(text); }else{String text = 0 + "/" + 0; mTextView.setText(text); } }@Override publicvoidonClick(View v) {switch(v.getId()) {// 切换到左边的ImageView caseR.id.toLeftBannerFragmentImageView: {if(mViewPager !=null&& mViewPager.getCurrentItem() > 0) {mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1,true); }else{Toast.makeText(mActivity, R.string.banner_is_first, Toast.LENGTH_SHORT).show(); } } break; // 切换到右边的ImageView caseR.id.toRightBannerFragmentImageView: {if(mViewPager !=null&& mViewList !=null&& mViewPager.getCurrentItem() < Integer.MAX_VALUE - 1) {mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1,true); }else{Toast.makeText(mActivity, R.string.banner_is_last, Toast.LENGTH_SHORT).show(); } } break; } super.onClick(v); }@Override publicvoidonPause() {if(mFinalBitmap !=null) {mFinalBitmap.onPause(); } super.onPause(); }@Override publicvoidonResume() {if(mFinalBitmap !=null) {mFinalBitmap.onResume(); } super.onResume(); }@Override publicvoidonDestroy() {if(mFinalBitmap !=null) {mFinalBitmap.onDestroy(); } super.onDestroy(); } }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。