ViewPager轮播图
来源:互联网 发布:服务器与域名的关系 编辑:程序博客网 时间:2024/06/05 20:20
布局文件:
<RelativeLayout android:id="@+id/rl_gallery" android:layout_width="match_parent" android:layout_height="200dp"> <android.support.v4.view.ViewPager android:id="@+id/myViewPager" android:layout_width="match_parent" android:layout_height="200dp"></android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/ll_points" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:layout_marginBottom="10dp" /></RelativeLayout>
页面文件:
public class HomePage extends BaseFragment implements HomePageContract.IHomePageView, ViewPager.OnPageChangeListener { @BindView(R.id.ll_points) LinearLayout llHomePoint; @BindView(R.id.rl_gallery) RelativeLayout rlGallery; private int imgNum = 0; Context mContext; //轮播图用到的图片 public static List<ImageView> lists = new ArrayList<ImageView>(); HomePagePresenter presenter; List<BannerItem> bannerItems; private int index = 0; private int currentItem = 0; @BindView(R.id.myViewPager) ViewPager myViewPager; ViewPagerAdapter viewPagerAdapter; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home_page, container, false); ButterKnife.bind(this, view); mContext = HomePage.this.getActivity(); presenter = new HomePagePresenter(); presenter.attachView(this); initAllData(); return view; } public void initAllData(){ //获取首页banner HomeBannerListData data = new HomeBannerListData(3); BjDataBody body = BJServerBodyUtils.getBjDataBody(data,false);// DialogHelper.showRoundProcessDialog(this.getActivity(), mContext.getString(R.string.data_loading), false); presenter.getBannerList(HttpConstant.HOME_PAGE,body); } public void initGallery() { lists.clear(); viewPagerAdapter = new ViewPagerAdapter(bannerItems,mContext,llHomePoint); myViewPager.setAdapter(viewPagerAdapter); myViewPager.setOnPageChangeListener(this); myViewPager.setCurrentItem(0); initPoints(); //每隔3秒自动播放 Timer timer = new Timer(); timer.schedule(task,5000,5000);// handler.sendEmptyMessageDelayed(3,3000); } /** * 定时器,实现自动播放 */ private TimerTask task = new TimerTask() { @Override public void run() { Message message = new Message(); message.what = 3; index = myViewPager.getCurrentItem(); index++; handler.sendMessage(message); } }; private Handler handler = new Handler(){ public void handleMessage(Message msg){ super.handleMessage(msg); switch (msg.what){ case 3: myViewPager.setCurrentItem(index); break; default: break; } } }; //轮播图的圆点 void initPoints() { llHomePoint.removeAllViews(); for(int i=0;i<imgNum;i++){ ImageView img = new ImageView(mContext); LinearLayout.LayoutParams margin = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //设置每个小圆点距离左边的间距 margin.setMargins(20,0,0,0); img.setLayoutParams(new ViewGroup.LayoutParams(22,22)); if(i==0){ img.setImageResource(R.drawable.icon_home_point_sel); }else{ img.setImageResource(R.drawable.icon_home_point_nor); } llHomePoint.addView(img,margin); } } @Override public void showBannerList(BannerData data) { if(data != null){ bannerItems = data.getAdvertlist(); if(bannerItems != null && bannerItems.size() != 0){ bannerItems.addAll(bannerItems); imgNum = bannerItems.size(); initGallery(); } } } @Override public void onFailure(Throwable e) { } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { Logger.d("position="+position);// currentItem = position; if(position>imgNum-1){ position = position%imgNum; currentItem = position; } for(int i=0;i<imgNum;i++){ if(i == position){// llHomePoint.getChildAt(i).setBackgroundResource(R.drawable.icon_home_point_sel); Logger.d("sel"+position); ((ImageView)llHomePoint.getChildAt(i)).setImageResource(R.drawable.icon_home_point_sel); }else{// (llHomePoint.getChildAt(i)).setBackgroundResource(R.drawable.icon_home_point_nor); Logger.d("normal"+position); ((ImageView)llHomePoint.getChildAt(i)).setImageResource(R.drawable.icon_home_point_nor); } } } @Override public void onPageScrollStateChanged(int state) { }}
ViewPagerAdapter.java文件:
public class ViewPagerAdapter extends PagerAdapter{ private List<BannerItem> bannerItems; private Context mContext; private LinearLayout ll_point; List<ImageView> imgs = new ArrayList<ImageView>(); public ViewPagerAdapter(List<BannerItem> bannerItems, Context mContext, LinearLayout ll_point) { this.bannerItems = bannerItems; this.mContext = mContext; this.ll_point = ll_point; for(int i=0;i<bannerItems.size();i++){ ImageView img = new ImageView(mContext); BannerItem item = bannerItems.get(i); ImageLoader.getInstance().displayImage(item.getBanner(),img); img.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT)); img.setScaleType(ImageView.ScaleType.FIT_XY); imgs.add(img); } } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } public void destroyItem(ViewGroup container,int position,Object object){// container.removeView(imgs.get(position%imgs.size()));// if(position >= bannerItems.size()){// position = position%bannerItems.size();// }// container.removeView(imgs.get(position)); } public Object instantiateItem(ViewGroup container,int position){// ImageView view = imgs.get(position%imgs.size()); if(position >= bannerItems.size()){ position = position%bannerItems.size(); } ImageView view = imgs.get(position); //如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。 ViewParent vp = view.getParent(); if(vp != null){ ViewGroup viewGroup = (ViewGroup) vp; viewGroup.removeView(view); } container.addView(view); return view;//imgs.get(position%imgs.size()); }}
0 0
- Viewpager轮播图
- ViewPager轮播图
- ViewPager轮播图
- ViewPager轮播图
- ViewPager轮播图
- ViewPager轮播图
- ViewPager轮播图
- Android ViewPager 轮播图
- viewpager实现轮播图效果
- 轮播图ViewPager基本写法
- ViewPager实现无限轮播图
- Android轮播图-----viewPager
- viewpager轮播图的adapter
- viewpager实现轮播图效果
- viewpager的轮播图
- ViewPager实现轮播图效果
- ViewPager 导航页-轮播图
- 利用ViewPager实现轮播图
- 数据库操作语句大全
- CMD命令详解——其他
- POJ-3687-Labeling Balls
- 自定义按钮进度条
- JdbcTemplate query
- ViewPager轮播图
- Unity 集成OpenCV 【一】
- ti8148 dvrrdk开发小结
- SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
- hdfs 块信息
- 围绕中心匀速,加速,减速转动的动画
- dbus
- C++学习之旅——结构体和联合体的区别,以及数据对齐方式影响内存大小
- 秒杀系统架构优化思路