用viewpager实现图片轮播
应用中常常遇到图片轮播的需求,这时候就需要用到viewpager这个组件。viewpager是android support v4 中提供的一个组件。viewpager使用需要以下几步骤:
1.在布局文件中添加viewpager组件
1 <android.support.v4.view.ViewPager 2 android:id="@+id/vp_adv" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent"> 5 </android.support.v4.view.ViewPager>
ViewPager路径要写完整,否则会出现问题;
2.创建PagerAdapter,PagerAdapter是viewPager的内容提供者,这里我们的图片就是由PagerAdapter提供给viewpager展示的。同样PagerAdapter也在support v4包中。具体如下所示:
1 public class AdvertisingAdapter extends PagerAdapter { 2 3 private List<View> mList; 4 5 public AdvertisingAdapter() { 6 mList = new ArrayList<View>(); 7 } 8 9 public void setData(List<View> list) { 10 if (list != null) { 11 mList.clear(); 12 mList.addAll(list); 13 notifyDataSetChanged(); 14 } 15 } 16 17 @Override 18 public int getCount() { 19 return mList.size(); 20 } 21 22 @Override 23 public boolean isViewFromObject(View view, Object object) { 24 return object == view; 25 } 26 27 @Override 28 public void destroyItem(ViewGroup container, int position, Object object) { 29 container.removeView(mList.get(position)); 30 } 31 32 @Override 33 public Object instantiateItem(ViewGroup container, int position) { 34 container.addView(mList.get(position), 0); 35 return mList.get(position); 36 } 37 }
3.初始化ViewPager,PagerAdapter
1 protected void setupView() { 2 mPagerAdapter = new AdvertisingAdapter(); 3 mViewPager = (ViewPager) findViewById(R.id.vp_adv); 4 mViewPager .setAdapter(mPagerAdapter ); 5 mAdvertising.addOnPageChangeListener(this); 6 }
待PagerAdapter填充图片数据后,ViewPager便可以将图片展示出来。
4.添加“.”。基本所有应用使用到ViewPager都会使用“.”标识当前坐标,即展示到哪一页。如下代码添加点号:
添加布局文件
1 <LinearLayout 2 android:id="@+id/viewGroup" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:layout_alignParentBottom="true" 6 android:layout_alignParentRight="true" 7 android:layout_marginBottom="20dp" 8 android:layout_marginRight="20dp" 9 android:orientation="horizontal"></LinearLayout>
在布局里面动态添加“点”的view
1 imageViews = new ImageView[advPics.size()]; 2 ImageView imageView; 3 for (int i = 0; i < advPics.size(); i++) { 4 imageView = new ImageView(this); 5 imageView.setLayoutParams(new LinearLayout.LayoutParams(50, 50)); 6 imageView.setPadding(15, 15, 15, 15); 7 imageViews[i] = imageView; 8 if (i == 0) { 9 imageViews[i].setImageResource(R.drawable.dot_focus); 10 } else { 11 imageViews[i].setImageResource(R.drawable.dot_blur); 12 } 13 llDot.addView(imageViews[i]); 14 }
拖动ViewPager时,坐标点动态改变
1 @Override 2 public void onPageSelected(int position) { 3 LogUtils.d("enter onPageSelected method"); 4 5 for (int i = 0; i < advPics.size(); i++) { 6 imageViews[position].setImageResource(R.drawable.dot_focus); 7 if (position != i) { 8 imageViews[i].setImageResource(R.drawable.dot_blur); 9 } 10 } 11 }
5.自动轮播。大多数时候,我们展示图片时需要其自动轮播的。
启动线程,控制轮播时间,及发出轮播请求给UI线程
1 private void initAutoThread() { 2 Runnable runnable = new Runnable() { 3 @Override 4 public void run() { 5 while (true) { 6 if (!isPlayPaused.get()) { 7 sendUiMessage(MSG_UI_CHANGE_ADV_PIC, what.get(), 0, null); 8 what.incrementAndGet(); 9 if (what.get() > advPics.size() - 1) { 10 what.getAndAdd(-advPics.size()); 11 } 12 } 13 if (needExit.get()) { 14 break; 15 } 16 try { 17 Thread.sleep(8000); 18 } catch (InterruptedException e) { 19 e.printStackTrace(); 20 } 21 } 22 } 23 }; 24 Thread thread = new Thread(runnable); 25 thread.setName("Carousel"); 26 thread.start(); 27 }
UI 线程收到请求后,对显示的图片进行更改
1 mViewPager.setCurrentItem(msg.arg1);
转载于:https://www.cnblogs.com/pillowzhou/p/4983740.html
用viewpager实现图片轮播相关推荐
- 安卓开发——基于ViewPager的图片轮播
概述: 要用ViewPager实现图片轮播,主要是两步: 1:用PagerAdapter使图片可以滑动切换 2:用Handler来实现图片自动轮播 页面布局部分的代码: <?xml versio ...
- Android使用ViewPager实现图片轮播和手势滑动
ViewPager常用来实现图片的轮播,比如淘宝首页,会把一些促销的商品的图片和描述信息来回的播放,这就是典型的使用ViewPager实现的. ViewPager属于布局管理器,允许用户通过页面翻转查 ...
- Android使用viewpager实现图片轮播效果
自定义View实现图片轮播,实现了图片自动轮播,手动滑动,轮播标题,以及点击事件. 里面有很多注释 一.文件布局 二.代码 ImageBannerViewGroup类 /*** Created by ...
- java图片轮播_java制作广告图片自动轮播控件
首页图片的轮播 /** * 广告图片自动轮播控件 * */ public class ImageCycleView extends LinearLayout { /** * 上下文 */ privat ...
- Android 使用ViewPager 做的半吊子的图片轮播
Android 使用ViewPager 做的半吊子的图片轮播 效果图 虽然不咋样,但是最起码的功能是实现了,下面我们来一步步的实现它. 界面 下面我们来分析一下界面的构成 整体的布局: 因为我们要做出 ...
- ViewPager简单使用(四)实现图片轮播
在很多软件中,我们都会看到图片轮播的效果.如图: 首先在布局文件中添加viewpager控件 activity_main.xml <?xml version="1.0" en ...
- viewpager实现花式图片轮播
效果图 首先,让我们了解下什么是viewpager: 这个大致意思是:这个布局管理器允许用户左右翻转并传递页面的数据,你想要的视图可以通过pagerAdapter来实现. 布局文件: <Fram ...
- android首页图片轮播效果,Android_Android自动播放Banner图片轮播效果,先看一下效果图支持本地图 - phpStudy...
Android自动播放Banner图片轮播效果 先看一下效果图 支持本地图片以及网络图片or本地网络混合. 使用方式: android:id="@+id/banner" andro ...
- 安卓首页图片轮播效果(淘宝、京东首页广告效果)
2019独角兽企业重金招聘Python工程师标准>>> 直奔主题: 1.主要原理就是利用定时任务器定时切换ViewPager的页面. 2.里面用了一个读取网络图片的插件,做客户端使用 ...
- 图片轮播器,relativelayout,外加textview小结
十多个textview,外加三个relativelayout,心烦的是图片轮播器,就环境老玄了,写了三个图片轮播器才成功,直接来代码吧,gogogo. Activity_main.xml <?x ...
最新文章
- 一文盘点MWC 2019所有5G设备和研发进展
- 《JAVA与模式》之命令模式
- python mysql索引 优化神器explain 慢查询
- 使用Chrome DevTools的Timeline和Profiles提高Web应用程序的性能
- 删除联想OEM分区的方法 推荐!
- Go 语言简介(下)— 特性
- 二月草的博客开通啦……
- Java 读写txt文件 中文乱码问题
- Shared File System Master Slave 全配置以及测试
- 全网首发:怎样制作CDKEY(3)-加密
- Ambari安装和汉化(转)
- Android多国语言缩写(全)
- Android webview数据获取 webview抓取
- Kubernetes 中的 requests 和 limits详解
- Node对象的一些方法
- 幼儿体能五项技能测试软件,卓艺湖畔幼儿园教师五项体能培训--器械游戏分享...
- 少儿编程航天主题,scratch与航天航空主题:八大行星排排序
- package.json字段详解
- 图片合成视频 linux,ffmpeg安装在Linux下,并将图片合成视频
- QT 串口通信,操作程控电源 Agilent 66312A