Android ViewFlipper简单用法解析
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
ViewFlipper和ViewPager挺像的,都是一个view容器。内部可以添加多个view,只是viewpager可以通过左右滑动来切换view,而viewFlipper则没有这个功能,所以需要在它上面监听手势。比较方便的是它不用使用适配器就能添加view,所以比较方便。
首先在布局文件中定义这个控件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff"> <ViewFlipper android:id="@+id/ViewFlipper01" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
2.在代码中找到并且添加view
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); detector = new GestureDetector(this); flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01); flipper.addView(addTextView("page 1"));//添加view到flipper中,这里添加5个textView flipper.addView(addTextView("page 2")); flipper.addView(addTextView("page 3")); flipper.addView(addTextView("page 4")); flipper.addView(addTextView("page 5")); } /** * @param text * @return 一个textView对象 */ private View addTextView(String text) { TextView tv = new TextView(this); tv.setText(text); tv.setTextSize(40); tv.setTextColor(0xff000000); tv.setGravity(Gravity.CENTER); return tv; }
3.通过touch监听手势来切换view
@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > 120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); this.flipper.showNext();//切换到下一个view return true; } else if (e1.getX() - e2.getX() < -120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out)); this.flipper.showPrevious(); return true; } return false; }
下面是Activity的完整代码:
package com.xu81.testflip; import android.app.Activity; import android.app.ActivityManager.RecentTaskInfo; import android.os.Bundle; import android.view.GestureDetector; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.GestureDetector.OnGestureListener; import android.view.animation.AnimationUtils; import android.widget.TextView; import android.widget.ViewFlipper; public class TestFlip extends Activity implements OnGestureListener { private ViewFlipper flipper; private GestureDetector detector; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); detector = new GestureDetector(this); flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01); flipper.addView(addTextView("page 1"));//添加view到flipper中,这里添加5个textView flipper.addView(addTextView("page 2")); flipper.addView(addTextView("page 3")); flipper.addView(addTextView("page 4")); flipper.addView(addTextView("page 5")); } /** * @param text * @return 一个textView对象 */ private View addTextView(String text) { TextView tv = new TextView(this); tv.setText(text); tv.setTextSize(40); tv.setTextColor(0xff000000); tv.setGravity(Gravity.CENTER); return tv; } @Override public boolean onTouchEvent(MotionEvent event) { return this.detector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > 120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); this.flipper.showNext();//切换到下一个view return true; } else if (e1.getX() - e2.getX() < -120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out)); this.flipper.showPrevious(); return true; } return false; } @Override public void onLongPress(MotionEvent e) { // TODO 自动生成的方法存根 } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO 自动生成的方法存根 return false; } @Override public void onShowPress(MotionEvent e) { // TODO 自动生成的方法存根 } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO 自动生成的方法存根 return false; } }
动画文件:
push_left_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
push_left_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
push_right_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
push_right_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
源码下载:http://xiazai.jb51.net/201609/yuanma/AndroidViewFlip(jb51.net).rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。
- 解析Android中实现滑动翻页之ViewFlipper的使用详解
- Android中ViewFlipper的使用及设置动画效果实例详解
- Android TextSwitcher文本切换器和ViewFlipper使用详解
- Android ViewFlipper用法实例分析
- Android ViewFlipper翻转视图使用详解
- Android使用ViewFlipper实现图片切换功能
- Android 使用ViewPager实现图片左右循环滑动自动播放
- Android自动播放Banner图片轮播效果
- Android实现自动播放图片功能
- Android使用自定义属性实现图片自动播放滚动的功能
- Android开发之ViewFlipper自动播放图片功能实现方法示例
相关文章
Android Studio Gradle插件版本与Gradle版本之间的对应关系
今天小编就为大家分享一篇关于Android Studio Gradle插件版本与Gradle版本之间的对应关系,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12Android编程滑动效果之Gallery+GridView实现图片预览功能(附demo源码下载)
这篇文章主要介绍了Android编程滑动效果之Gallery+GridView实现图片预览功能,结合实例形式分析了Android通过GridView和Gallery两个控件模仿Gallery图像集图片预览功能,并附带demo源码供读者下载参考,需要的朋友可以参考下2016-02-02Android Studio 3.1.3升级至3.6.1后旧项目的兼容操作方法
这篇文章主要介绍了Android Studio 3.1.3升级至3.6.1后旧项目的兼容操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-03-03
最新评论