Android入门(34)——第十一章 使用ViewFlipper实现屏幕切换动画效果
2015-07-08 12:14
1141 查看
1. ViewFlipper是Android系统自带的一个多页面管理控件,它可以实现自界面的自动切换:
两种导入方式:静态导入:在layout文件中直接导入<ViewFlipper>,因为这种方法写死了文件,所以一般情况下不使用静态导入方法。
动态导入:addView()方法
2. ViewFlipper常用方法:
3. 案例一:关于这个案例我比较蛋疼,一是我不会加载图片进去,二是那个动作文件我不会设置,所以没有运行效果。
第一步:创建动作文件,放在res下的创建的anim文件夹下:这个例子在我的java ADT中全是错误,搞不懂。
4. (知识扩展)支持手势滑动的ViewFlipper。
修改Activity文件MainActivity:
两种导入方式:静态导入:在layout文件中直接导入<ViewFlipper>,因为这种方法写死了文件,所以一般情况下不使用静态导入方法。
动态导入:addView()方法
2. ViewFlipper常用方法:
3. 案例一:关于这个案例我比较蛋疼,一是我不会加载图片进去,二是那个动作文件我不会设置,所以没有运行效果。
第一步:创建动作文件,放在res下的创建的anim文件夹下:这个例子在我的java ADT中全是错误,搞不懂。
<?xml version="1.0" encoding="utf-8"?> <set xmls:android="http://schemas.android.com/apk/res/android"> <translate android:duration="2000" android:fromXDelta="100%p" android:toXDelta="0" /> <alpha android:fromAlpha="0.5" android:toAlpha="1" android:duration="2000" /> </set>第二步:创建活动的布局文件:里面添加了一个ViewFlipper控件。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ViewFlipper android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/flipper" > </ViewFlipper> </LinearLayout>第三步:创建活动MainActivity。
package com.example.viewflipper; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ImageView; import android.widget.ViewFlipper; public class MainActivity extends Activity { private ViewFlipper flipper; private int[] resId = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); flipper = (ViewFlipper) findViewById(R.id.flipper); // 动态导入的方式为ViewFlipper加入子View。 for(int i=0; i<resId.length; i++){ flipper.addView(getImageView(resId[i])); } // 设置动画效果: flipper.setInAnimation(this,R.anim.left_in); flipper.setOutAnimation(this, R.anim.left_out); // 设置ViewFlipper视图切换的时间间隔 flipper.setFlipInterval(3000); // 3秒 // 开始播放 flipper.startFlipping(); } private ImageView getImageView(int resId){ ImageView image = new ImageView(this); //image.setImageResource(resId); 这样不能设置图片宽高 image.setBackgroundResource(resId); // 这样是铺满屏幕 return image; } }效果图:就是添加的这几张图片一个一个的切换,呵呵。
4. (知识扩展)支持手势滑动的ViewFlipper。
修改Activity文件MainActivity:
package com.example.viewflipper; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MotionEvent; import android.widget.ImageView; import android.widget.ViewFlipper; public class MainActivity extends Activity { private ViewFlipper flipper; private int[] resId = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher}; private float startX; // x轴坐标 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); flipper = (ViewFlipper) findViewById(R.id.flipper); // 动态导入的方式为ViewFlipper加入子View。 for(int i=0; i<resId.length; i++){ flipper.addView(getImageView(resId[i])); } // 设置动画效果: // flipper.setInAnimation(this,R.anim.left_in); // 手动滑动时取消这四行 // flipper.setOutAnimation(this, R.anim.left_out); // 设置ViewFlipper视图切换的时间间隔 // flipper.setFlipInterval(3000); // 3秒 // 开始播放 // flipper.startFlipping(); } // 加入手势滑动事件的处理 @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub switch(event){ // 手指点到屏幕上 case MotionEvent.ACTION_DOWN: startX = event.getX(); break; // 手指滑动 case MotionEvent.ACTION_MOVE: // 向右滑动看前一页 if(event.getX() - startX > 100){ // 100像素 flipper.setInAnimation(this, R.anim.left_in); flipper.setOutAnimation(this, R.anim.left_out); flipper.showPrevious(); // 显示前一页 } // 向左滑动看后一页 if(startX - event.getX() > 100){ flipper.setInAnimation(this, R.anim.right_in); flipper.setOutAnimation(this, R.anim.right_out); flipper.showNext(); // 显示后一页 } break; // 手指抬起 case MotionEvent.ACTION_UP: // 没有效果 break; } return super.onTouchEvent(event); } private ImageView getImageView(int resId){ ImageView image = new ImageView(this); //image.setImageResource(resId); 这样不能设置图片宽高 image.setBackgroundResource(resId); // 这样是铺满屏幕 return image; } }木有效果啊
相关文章推荐
- Android Widget 小工具(两) 使用configure
- android完美截屏
- android webview 调用js实现图像选择并上传
- Android卸载程序之后跳转到指定的反馈页面
- Android中实现带有头部的GridView(HeaderGridView)
- 获取六边形头像(封装六边形方法)
- (转)Android 使用com.j256.ormlite
- Android启动第三方应用程序
- Android 增强版百分比布局库 为了适配而扩展
- Android图片 压缩总结
- Android 百分比布局库(percent-support-lib) 解析与扩展
- 我的Android进阶之旅------>解决Your project contains error(s),please fix them
- android 建数据库 SQLite 存储sd 卡或者内存
- android AsyncTask介绍(转)
- [Android]ArrayAdapter ,SimpleAdapter ,SimpleCursorAdapter 区别
- Android makefile overview
- Android studio中关于 No cached version of **** available for of处理办法
- 如何完全备份android在系统system分区和data分
- android Tabhost部件(二)
- Android PowerImageView实现,可以播放动画的强大ImageView