使用ViewFlipper实现屏幕切换动画效果。
ViewFlipper和ViewPager一样,都是Android自带的一个多页面管理控件,不同的是ViewPager是手动切换页面,而ViewFlipper可以实现子界面的自动切换。只需设置切换时间和切换的动画效果,ViewFlipper里面的视图就会自动循环播放。
------------------------
为ViewFlipper添加View
(1)静态导入:在layout布局文件中直接导入,不需要写额外的Java代码,缺点:直接写死,非常不灵活,所以不推荐使用。
(2)动态导入:addView()方法:
flipper=(ViewFlipper)findViewById(R.i.flipper);
flipper.addView(getImageView(R.drawable.pic1));
flipper.addView(getImageView(R.drawable.pic2));
---------------------------------
ViewFlipper常用的方法:1)、SetInAnimation:设置View进入屏幕时候使用的动画2)、setOutAnimation:设置View退出屏幕时候使用的动画3)、showNext:调用该函数来显示ViewFlipper里面的下一个View4)、showPrevious:调用该函数来显示ViewFlipper里面的上一个View5)、setFilpInterval:设置View之间切换的时间间隔6)、startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行7)、stopFlipping:停止View切换
实现动画效果的步骤
1. 创建文件夹anim,放置实现动画效果的xml文件。在drawable中放置图片资源。
2. 在 main.xml中放置<ViewFlipper>
3. 在MainActivity中创建 int数组,放置图片id。
4. 初始化ViewFlipper,动态导入子View:for (int i=0;i<resId.length;i++){flipper.addView(getImageView(resId[i]));}
这里自定义了方法
private ImageView getImageView(int resId){ImageView image = new ImageView(this);//image.setImageResource(resId);//不采取此方法的原因:ImageView的宽高完全取决于图片的宽高,不符合“全屏展示”的要求image.setBackgroundResource(resId);//background可以铺满整个屏幕return image;}
5. 设置动画效果
//设置切换的动画效果flipper.setInAnimation(this,R.anim.left_in);//Animation:动画。这里说是页面进入的动画(InAnimation)采用从左进入。flipper.setOutAnimation(this,R.anim.left_out);flipper.setFlipInterval(3000);//切换的时间间隔,单位毫秒flipper.startFlipping();//开启动画
 1 //手机滑动-实现自动播放
 2 public class MainActivity extends Activity {
 3     private ViewFlipper flipper;
 4     //资源图片
 5     private int[] resId = { R.drawable.a, R.drawable.b, R.drawable.c,
 6             R.drawable.d };
 7     private float startX;//手势滑动时,手指落下的起始坐标
 8
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.main);
13         flipper = (ViewFlipper) findViewById(R.id.fliper);
14         // 动态导入的方式为ViewFlipper加载子view
15         for (int i = 0; i < resId.length; i++) {
16             flipper.addView(getImageView(resId[i]));
17         }
18
19
20         // 方式一:为ViewFlippe添加动画效果实现自动切换图片
21
22         // flipper.setInAnimation(this, R.anim.abc_slide_in_bottom);
23         // flipper.setOutAnimation(this, R.anim.abc_slide_out_bottom);
24         //
25         // flipper.setFlipInterval(3000);// 3秒切换 为ViewFlippe视图切换的时间间隔
26         // flipper.startFlipping();// 开始播放
27
28     }
29
30        //方式二:支持手势滑动的ViewFlipper
31     //监控手势滑动事件的处理
32     @Override
33     public boolean onTouchEvent(MotionEvent event) {
34         // TODO Auto-generated method stub
35         switch (event.getAction()) {
36         // 手指落下
37         case MotionEvent.ACTION_DOWN: {
38             startX = event.getX();//获得横向的起始坐标
39             break;
40         }
41
42         // 手指滑动
43         case MotionEvent.ACTION_MOVE: {
44             // 设置差值大于100,是为了过滤掉微小的滑动
45             if (event.getX() - startX > 50) {
46                 // 向右滑动 看前一页
47                 flipper.setInAnimation(this, R.drawable.left_in);
48                 flipper.setOutAnimation(this, R.drawable.left_out);
49
50                 flipper.showPrevious();//显示前一页
51
52             }
53             if (startX - event.getX() > 50) {
54                 // 向左滑动 看后一页
55                 flipper.setInAnimation(this, R.drawable.right_in);
56                 flipper.setOutAnimation(this, R.drawable.right_out);
57
58                 flipper.showNext();// 显示后一页
59             }
60             break;
61         }
62         // 手指离开
63         case MotionEvent.ACTION_UP: {
64
65             break;
66         }
67
68         }
69         return super.onTouchEvent(event);
70     }
71
72     public ImageView getImageView(int resId) {
73
74         ImageView image = new ImageView(this);
75         // image.setImageResource(resId); 图片原来的宽高
76         image.setBackgroundResource(resId);// 铺满全屏的
77         return image;
78
79     }
80
81 }

 

转载于:https://www.cnblogs.com/my334420/p/6714753.html

Android攻城狮ViewFlipper相关推荐

  1. 写给即将/正在找工作的Android攻城狮

    写给即将/正在找工作的Android攻城狮 版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 这段时间从北上广深杭不断传来一两个月找不到工作的消息,我一 ...

  2. Android攻城狮ListView

    适配器: 数据适配器:把复杂的数据填充在指定的视图界面上ArrayAdapter 数组适配器 用于绑定格式单一的数据 数据源:可以是集合或数组 SimpleAdapter 简单适配器:用于绑定格式复杂 ...

  3. Android攻城狮Gallery和ImageSwitcher制作图片浏览器

    使用Gallery 和 ImageSwitcher 制作图片浏览器 Gallery介绍 我们有时候在手机上或者PC上看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的图片滚动效果,还可以根据 ...

  4. Android攻城狮GestureDetector和GestureOverlayView

    手势识别 可以通过以下两种方式实现: 1. 使用GestureDetector 2. 使用GestureOverlayView(属于线程的控件)手势交互过程(原理): 1. 触屏一刹那,触发 Moti ...

  5. Android攻城狮fragment

    1 //1,fragment静态加载:MainActivity MainActivty1_2 Myfragment1 2 //2,fragment动态加载 :MainActivity Myfragme ...

  6. Android攻城狮ScrollView

    ScrollView 滚动视图 滚动视图是指当前拥有很多内容,屏幕显示不完整时,需要通过滚动来显示完整的视图. ----------------------------- ScrollBar分两种: ...

  7. Android攻城狮数据存储之SharedPreferences

    Android的四种数据存储方式: 1. SharedPreferences 2. SQLite 3. Content Provider 4. File --------------------- S ...

  8. Android攻城狮认识ContextMenu

    什么是ContextMenu? 例如Windows系统的右键菜单,在Android中长按某个文件夹,会跳出菜单,这个菜单就是ContextMenu. ContextMenu与OptionMenu的区别 ...

  9. Android攻城狮OptionsMenu

    Android的菜单一共有三种: OptionsMenu 选择菜单 ContextMenu 上下文菜单 SubMenu 子菜单创建选项菜单: 在 Activity 里面重写 onCreateOptio ...

最新文章

  1. Ubuntu 16.04下部署Graylog日志服务器
  2. 农林行业的系统应用 php专业,农林|类专业
  3. android任务栈的作用,Android 启动模式以及任务栈
  4. superset出现A valid API access token is required to use Mapbox data
  5. 边缘计算框架_【北大成果】一种集成多组网协议多边缘计算框架的边缘计算处理平台...
  6. mysql 不能用dbcontext_EntityFramework中的DbContext使用疑点说明
  7. php的cms是什么意思,phpcms是什么
  8. 记录一次网盘资源不给提取码的经历!另类编程思维,Python破之!
  9. 全新 AI 语音芯片、双麦 AIoT 模组,科大讯飞硬核技术助力智能家电创新
  10. CocoaLumberjack
  11. discoverer初始化环境
  12. 数字电视机顶盒的基本知识介绍
  13. Echarts带渐变色的折线图
  14. 公告栏模板php代码,如何实现手机端公告栏显示
  15. 2023年重庆邮电大学计算机科学与技术(802)初试经验贴
  16. 《惢客创业日记》2019.04.25(周四)如何解决骚扰电话?
  17. Smart3D系列教程6之 《案例实战演练3——倾斜数据正射影像及DSM的生产》
  18. intellij idea 工具栏的隐藏和显示
  19. 适合新手的MySQL的基本操作第三期——存储过程篇
  20. 58同城和赶集网要合并了!

热门文章

  1. 三极管控制继电器接法
  2. 【火炉炼AI】机器学习053-数据降维绝招-PCA和核PCA
  3. 智能空气净化器解决方案,飞睿科技无线WiFi芯片模块技术应用
  4. WebDriver下载地址
  5. 零点漂移、零点补偿问题
  6. 标梵互动智建中健健身整合营销方案
  7. zabbix拓扑图添加标签信息(流量)
  8. Java多线程复习整理(二)
  9. linux版vmware无法导入ovf,vmware 虚拟机导入OVF出现路径错误
  10. php循环套循环_PHP中的事件循环简介