Android中ViewFlipper的使用详解
来源:互联网 发布:阿里云logo矢量图 编辑:程序博客网 时间:2024/05/20 19:19
说到android的左右滑动效果我们可以说是在每个应用上面都可以看到这样的效果,不管是微博,还是QQ等。
实现左右滑动的方式很多,有ViewPager(不过这个和需要android-support-v4.jar的支持),自定义实现Viewgroup,gallery等都可以达到这种效果。这里主要是做下ViewFliper来实现左右滑动的效果。
ViewFlipper可以实现滑动ImageView、自定义View、动态添加View等,只要ViewPager能实现的功能它也能实现。好了,废话不说了,直接说怎么实现ViewFlipper吧,这里我还加了一个功能,就是当触摸到ViewFlipper是,就让它停止3秒,然后3秒后再自动切换。
使用ViewFlipper的时候我习惯用动态添加View来做,因为这样可以对View的添加和删除都非常方便,而不必去管xml布局文件。下面就来看看怎么做的吧。
一、基本实现
下面先看一下实现的效果:(实现四张图片的自动切换)
1、在XML中的布局:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <ViewFlipper
- android:id="@+id/flipper"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_marginTop="10dp"
- android:flipInterval="2000" >
- <ImageView
- android:layout_width="fill_parent"
- android:layout_height="300dip"
- android:scaleType="fitXY"
- android:src="@drawable/img_1"/>
- <ImageView
- android:layout_width="fill_parent"
- android:layout_height="300dip"
- android:scaleType="fitXY"
- android:src="@drawable/img_2"/>
- <ImageView
- android:layout_width="fill_parent"
- android:layout_height="300dip"
- android:scaleType="fitXY"
- android:src="@drawable/img_3"/>
- <ImageView
- android:layout_width="fill_parent"
- android:layout_height="300dip"
- android:scaleType="fitXY"
- android:src="@drawable/img_4"/>
- </ViewFlipper>
- </RelativeLayout>
2、JAVA代码:
- public class MainActivity extends Activity {
- ViewFlipper flipper;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- flipper = (ViewFlipper) findViewById(R.id.flipper);
- flipper.startFlipping();//开始切换,注意,如果设置了时间间隔,想让它自动切换,一定要记得加它
- }
- }
可见,ViewFlipper使用起来非常简单,直接在xml中布好以后,直接就能用了。
但我们这里有个问题在于,我们这里的ImageView是写死的,如果要改显示的视图我们就必须该xml布局文件了,这样很不利代码的后期维护了。所以我们在使用中一般是要动态加入ImageView或自定义View的,这就是下面的内容喽。
二、动态添加图片,并加入手势滑动
我们一般要动态加载View,就要用到ViewFlipper::addView方法了。而如果要用手势滑动效果,就需要用ViewFlipper::showNext();//显示下一个视图, ViewFlipper::showPrevious();//显示上一个视图 的方法了。
先贴xml布局文件吧:
在布局中我们只添加了一个ViewFlipper控件,将来要动态添加ViewFlipper的子控件的时候,就通过ViewFlipper对象来addView()添加View对象了,这里要添加的View对象怎么来呢?当然就是通过代码来写了,比如要添加ImageView,就通过ImageView mImageView = new ImageView(this);来创建一个对象,然后设置它的一些图片什么的,如果要添加一个自定义View,就可以在layout文件夹下先创建这个自定义的View布局,然后通过LayoutInflater填充器来填充,从而得到一个View对象,就add进去就可以啦。
------------------思考:
如果我们在开发中遇到这种情况怎么办呢?我们要用代码动态添加一个自定义布局View对象,那怎么做呢,答案就是首先创建这个布局的根布局对象,比如用LinearLayout布局,就new 一个LinearLayout对象,然后通过再add其它子控件对象进去,这样纯代码就可以写布局啦!!!
言归正传,再贴java代码吧:
好了,代码上的注释已经很明显了,还有那个动画Animation,这里就不再说了,自己去查下。
再贴张图吧,自己画的。
最后,再总结一下ViewFlipper的使用步骤吧:
1、首先在xml布局中创建ViewFlipper控件
2、在java文件中实例化ViewFlipper控件
3、动态为ViewFlipper添加View子控件,并设置响应的动画效果或者自动切换时间,并开启自动切换
4、设置ViewFlipper的onTouchListener()触摸事件,(如果要实现只触摸ViewFlipper时对手势滑动事件有效就设置ViewFlipper的onTouchListener,并返回触摸事件给手势识别器处理。如果对整个屏幕触摸有效,就不必设置这个了,直接重写activity中的onTouchEvent()方法,在这个方法中拦截触摸事件交给手势识别器处理)
5、创建手势识别器GestureDetector并监听,重写它的onFling()方法。
流程就是这样的!!!
源码上传至http://download.csdn.net/detail/u010687392/8458475
- Android中ViewFlipper的使用详解
- Android中ViewFlipper的使用详解
- Android中ViewFlipper的使用详解
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- Android中ViewFlipper详解
- Android中ViewFlipper详解
- Android中ViewFlipper详解
- Android中ViewFlipper详解
- Android中ViewFlipper详解
- Android中ViewFlipper详解
- Android中ViewFlipper详解
- Android中ViewFlipper的简单使用
- android中ViewFlipper的使用升级
- android ViewFlipper的使用
- 机器学习与R之支持向量机svm(上)
- storm+kafka+jdbc整合实例
- js中prompt()的用法
- DAY01_Q2
- hdu5733内切球
- Android中ViewFlipper的使用详解
- react listview最上方空白
- 安装phpredis扩展
- OC数据持久化
- jQuery.nivo.slider.js 幻灯片图片切换
- 设计模式之观察者模式
- 安卓学习笔记---RecyclerView的五大开源项目-解决办法
- RecyclerView添加Header的正确方式
- Can you find it?(二分)