android应用上常用的轮播图(viewpager实现)
来源:互联网 发布:国内腊肉市场销售数据 编辑:程序博客网 时间:2024/06/04 18:30
点击打开链接资源文件下载
android进阶的一小步
费话不多说直接进入正题
每次项目用轮播图都要去网上找代码,特此自己写了一份来放着用。看得上的可以拿来,菜鸟级别,不喜勿喷
文章结尾上代码
由于项目需要binnar底部要显示文字
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="wrap_content"/> <RelativeLayout android:layout_width="match_parent" android:layout_gravity="bottom" android:background="#e1e1e1" android:layout_height="wrap_content"> <TextView android:id="@+id/binnarTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" /> </RelativeLayout></FrameLayout>
viewpager的关键就在于
BinnarAdapter
里面的instantiateItem
方法@Override public Object instantiateItem(ViewGroup container, int position) { position %= imageViewList.size(); View viewGroup = imageViewList.get(position); if (viewGroup.getParent() == null) { container.addView(viewGroup); } return imageViewList.get(position); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { position %= imageViewList.size(); container.recomputeViewAttributes(imageViewList.get(position)); }
imageViewList是传进来的轮播图的网络地址这下手动滑动就没问题了。加载图片的方式用了一个回调在外面进行加载。public void setBinnarUrls(List<ImageBean> imgUrls, ImageBinnarListner imageBinnarListner) { this.imgUrls = imgUrls; if (imageViewList == null) { return; } ImageBean imageBean = imgUrls.get(0); binnarTitle.setText(imageBean.getTitle()); imageViewList.clear(); for (ImageBean imgUrl : imgUrls) { ImageView imageView = new ImageView(context); if (imageBinnarListner != null) { imageBinnarListner.LoadImage(imageView, imgUrl.getImgUrl()); } imageViewList.add(imageView); } binnarAdapter.notifyDataSetChanged(); }
如果要想加viewpager自动滑动再用一个定时任务执行handler来完成
private void startAutoScroll() { executor = Executors.newSingleThreadScheduledExecutor(); executor.scheduleAtFixedRate(new Runnable() { @Override public void run() {// synchronized (this) { if (isPress) {//按下状态停止自动滚动 return; } curIndex = viewPager.getCurrentItem(); curIndex += 1; curIndex = curIndex >= imageViewList.size() ? 0 : curIndex; binnarHandler.obtainMessage().sendToTarget(); }// } }, INITIAL_DELAY, PERIOD, TimeUnit.SECONDS); }
用到这步感觉viewpager自动切换 的时候动画根本 看不到。然后就有很多用放弃viewpager用ViewFlipper,暂时还没有去研究这个动画切换调用些自定义binnar也就一个方法
imageBinnar.setBinnarUrls(urlList, new ImageBinnar.ImageBinnarListner() { @Override public void LoadImage(ImageView imageView, String imageUrl) { Picasso.with(MainActivity.this) .load(imageUrl) .error(R.mipmap.ic_launcher) .into(imageView); } });
1 0
- android应用上常用的轮播图(viewpager实现)
- android常用控件ViewPager(一) ViewPager基本应用
- android之ViewPager的使用实现应用的导航功能
- Android Viewpager实现 轮播图
- Android ViewPager 的简单应用
- Android中级:轮播图(二):ViewPager实现indicator的滚动
- android基础-----ViewPager实现简单的轮播图
- Android ViewPager实现应用欢迎界面
- Android ViewPager实现应用…
- Android ViewPager实现应用启动界面
- Android-Viewpager+fragment的实现
- 关于Android ViewPager的实现
- android的ViewPager+FragmentPagerAdapter实现
- android常用的控件ViewPager的使用
- ViewPager实现应用的欢迎界面
- Android平台上开发网络应用的一些常用接口。
- Android 自定义ViewPager 实现轮播图
- Android常用控件之ViewPager的使用
- 虚函数
- 浅谈JavaScript的浮点数值
- 蓝桥杯历届试题——九宫重排(bfs)
- Android 手机开机执行过程
- Container no booting with old config in ubuntu 14.04
- android应用上常用的轮播图(viewpager实现)
- QT属性表之修改属性值与输出日志的结合
- Android-->Behavior上手入门
- 细聊冗余表数据一致性
- vue 2.0
- IDEA内存溢出解决办法
- List泛型的使用
- 获取全局的上下文
- js类型转换与引用类型详解(Boolean_Number_String)