通过ViewPager控件实现多张图片动态切换
来源:互联网 发布:powershell linux 编辑:程序博客网 时间:2024/05/18 02:22
本博客实现的功能
通过ViewPager动态显示多张图片,手指滑动可以切换到其他图片。
效果图:
这次用Android Studio 实现,首先在布局文件中声明iewPager
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="200dip" > </android.support.v4.view.ViewPager>
然后在布局文件中定义iewPager的描述信息和将要呈现的灰白点的Linearlayout布局
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignBottom="@id/viewpager" android:background="#77000000" android:gravity="center_horizontal" android:orientation="vertical" android:padding="5dip" > <TextView android:id="@+id/tv_image_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是默认的图片描述信息" android:textColor="#FFFFFF" android:textSize="16sp" /> <!--此布局用来显示灰白点--> <LinearLayout android:id="@+id/ll_point_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:orientation="horizontal" > </LinearLayout> </LinearLayout>
因为考虑到要描述数据,所以要初始化数据:
private void initData() { /** * 初始化字符数组的数据 */ imageDescriptions = new String[] { "巩俐不低俗,我就不低俗", "扑树又回来啦!再唱经典老歌引万人大合唱", "揭秘北京电影如何升级", "乐视网TV版大派送", "热血屌丝的反杀" }; /** * 初始化图片数组 */ int[]images={ R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e }; imageViewList=new ArrayList<ImageView>() ; //循环向linearLayout添加图片 ImageView iv; View v; LinearLayout.LayoutParams params; for(int i=0;i<images.length;i++){ iv=new ImageView(getApplicationContext()); iv.setBackgroundResource(images[i]); imageViewList.add(iv);//将图片添加到集合中 //每循环一次向linearlayout添加一个点的view对象 v=new View(this); v.setBackgroundResource(R.drawable.point_bg); params=new LinearLayout.LayoutParams(15,15); if(i!=0){//如果当前不是第一个点 params.leftMargin=5; } v.setLayoutParams(params); v.setEnabled(false); llPointGroup.addView(v); } }
然后定义pagerAdapter的适配器,用于存放初始图片的数据
class MyAdapter extends PagerAdapter{ @Override public int getCount() { return Integer.MAX_VALUE; } /** * 判断是否使用缓存,如果为true则为使用缓存 * @param view * @param object * @return */ @Override public boolean isViewFromObject(View view, Object object) { return view==object;//equals return true; } /** * 初始化一个条目 * @param container * @param position 当前需要加载条目的索引 * @return */ @Override public Object instantiateItem(ViewGroup container, int position) { ImageView iv=imageViewList.get(position%imageViewList.size()); mViewPager.addView(iv);//将当前ImageView添加到ViewPager中 return iv; } /** * 把当前view从ViewPager中移除掉 * @param container * @param position * @param object */ @Override public void destroyItem(ViewGroup container, int position, Object object) { mViewPager.removeView(imageViewList.get(position%imageViewList.size())); } }
最后需要初始化view进行显示
public void intiView(){ mViewPager= (ViewPager) findViewById(R.id.viewpager); tvImageDescription= (TextView) findViewById(R.id.tv_image_description); llPointGroup= (LinearLayout) findViewById(R.id.ll_point_group); initData();//进行初始化数据进行调用的方法 tvImageDescription.setText(imageDescriptions[previousPosition]);//Set up default descriptions attached to image llPointGroup.getChildAt(previousPosition).setEnabled(true); //给ViewPager设置适配器数据 MyAdapter adapter=new MyAdapter(); mViewPager.setAdapter(adapter); //设置ViewPager状态的监听事件 mViewPager.setOnPageChangeListener(this); int m = (Integer.MAX_VALUE / 2) % imageViewList.size(); int currentPosition = Integer.MAX_VALUE / 2 - m; mViewPager.setCurrentItem(currentPosition); }
当然,当前activity还需要继承 ViewPager.OnPageChangeListener
根据状态的改变然后改变相应的描述信息。这样这个简单又实用的功能就成型了。
0 0
- 通过ViewPager控件实现多张图片动态切换
- android 多张图片渐变切换控件
- js实现多张图片切换效果
- Android通过ViewPager实现左右滑动切换图片
- iPhone 通过多张图片实现动画
- 多张图片的左右切换特效,实现循环切换
- iOS动画-来回切换多张图片产生动态效果
- ViewPager图片切换简单实现
- UIImageView多张图片切换
- UIImageView多张图片切换
- Js实现多张图片无规律的轮流切换
- Js实现多张图片有规律的随机切换
- 通过点击按钮实现ViewPager的切换
- Android 利用多张图片实现动态图
- Android ViewPager实现图片 小圆点切换
- 自定义ViewPager实现图片自动切换
- ViewPager实现不同切换图片效果
- android-ViewPager实现图片自动切换
- 1.0 windows10系统安装步骤(1)
- 【技能】 run -time error"429"
- jsp 颜色选择器调用
- php使用http_build_query,parse_url,parse_str创建与解析url
- 解析xml文件
- 通过ViewPager控件实现多张图片动态切换
- 应云而生 联想服务器支撑企业走向“互联网+”时代
- JS array相关方法
- SSH网上商城
- 使用百度地图API
- php缓存技术详细介绍及php缓存的实现代码
- OpenCV 学习(Hough 变换提取直线)
- 输入输出重定向,迭代器绑定cin
- LeetCode(2)--Add Two Numbers