博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewFlipper(多图层控件)及手势识别,代码创建动画效果
阅读量:6568 次
发布时间:2019-06-24

本文共 4949 字,大约阅读时间需要 16 分钟。

layout

1 
2
6 7
12 13
19 20
26
27 28
32 33 34

Activity

1 package cn.itcast.image;  2   3 import java.io.File;  4   5 import android.app.Activity;  6 import android.app.ProgressDialog;  7 import android.net.Uri;  8 import android.os.Bundle;  9 import android.os.Environment; 10 import android.os.Handler; 11 import android.os.Message; 12 import android.view.GestureDetector; 13 import android.view.MotionEvent; 14 import android.view.View; 15 import android.view.animation.Animation; 16 import android.view.animation.AnimationUtils; 17 import android.widget.ImageView; 18 import android.widget.TextView; 19 import android.widget.ViewFlipper; 20  21 public class DemoActivity extends Activity { 22     private ViewFlipper vf; 23     private GestureDetector mGestureDetector; 24     private ProgressDialog pd; 25     private Handler handler = new Handler(){ 26         public void handleMessage(android.os.Message msg) { 27             ImageView iv  =  (ImageView) msg.obj; 28             vf.addView(iv); 29         }; 30     }; 31     @Override 32     public void onCreate(Bundle savedInstanceState) { 33         super.onCreate(savedInstanceState); 34         setContentView(R.layout.main); 35         vf = (ViewFlipper) findViewById(R.id.vf); 36         pd = new ProgressDialog(this); 37         pd.setMessage("正在加载图片信息"); 38         // 创建手势识别器. 39         mGestureDetector = new GestureDetector( 40                 new GestureDetector.SimpleOnGestureListener() { 41  42                     // 手指在屏幕上滑动的时候 调用的方法. 43                     // e1 手指第一次接触到屏幕的时候 对应的事件 44                     // e2 手指离开屏幕的时候 对应的事件 45                     // velocityx 水平方向的移动速度 46                     @Override 47                     public boolean onFling(MotionEvent e1, MotionEvent e2, 48                             float velocityX, float velocityY) { 49                         if (Math.abs(e1.getY() - e2.getY()) > 100) { 50                             System.out.println("垂直方向移动过大"); 51                             return true; 52                         } 53  54                         if (Math.abs(velocityX) < 100) { 55                             System.out.println("滑动的太慢了..."); 56                             return true; 57                         } 58                         if (e2.getX() - e1.getX() > 100) { 59                             Animation inAnimation = AnimationUtils.loadAnimation(DemoActivity.this, R.anim.alpha_in); 60                             Animation outAnimation = AnimationUtils.loadAnimation(DemoActivity.this, R.anim.alpha_out); 61                             vf.setInAnimation(inAnimation); 62                             vf.setOutAnimation(outAnimation); 63                             vf.showPrevious(); 64                             return true; 65                         } 66                         if (e1.getX() - e2.getX() > 100) { 67                             Animation inAnimation = AnimationUtils.loadAnimation(DemoActivity.this, R.anim.tran_in); 68                             Animation outAnimation = AnimationUtils.loadAnimation(DemoActivity.this, R.anim.tran_out); 69                             vf.setInAnimation(inAnimation); 70                             vf.setOutAnimation(outAnimation); 71                             vf.showNext(); 72                             return true; 73                         } 74                         return super.onFling(e1, e2, velocityX, velocityY); 75                     } 76  77                 }); 78         pd.show(); 79         new Thread() { 80             public void run() { 81                 File file = Environment.getExternalStorageDirectory(); 82  83                 File[] files = file.listFiles(); 84                 for (File f : files) { 85                     if (f.isFile() && f.getName().endsWith("jpg")) { 86                         ImageView iv = new ImageView(DemoActivity.this); 87                         iv.setImageURI(Uri.fromFile(f)); 88                         Message msg = Message.obtain(); 89                         msg.obj = iv; 90                         handler.sendMessage(msg); 91                     } 92                 } 93                 pd.dismiss(); 94             }; 95         }.start(); 96  97     } 98  99     @Override100     public boolean onTouchEvent(MotionEvent event) {101 102         mGestureDetector.onTouchEvent(event);// 使用手势识别器 识别当前的手势103 104         return super.onTouchEvent(event);105     }106 107     public void next(View view) {108         vf.showNext();109     }110 111     public void pre(View view) {112         vf.showPrevious();113     }114 }
动画效果的.xml文件

alpha_in.xml

1 
2
6 7

alpha_out.xml

1 
2
6 7

tran_in.xml

1 
2
9

tran_out.xml

1 
2
9

 

 

 

 

 

 

转载于:https://www.cnblogs.com/developer-wang/archive/2013/01/19/2868002.html

你可能感兴趣的文章
2.7、Android Studio使用翻译编辑器本地化UI
查看>>
雷林鹏分享:PHP 魔术常量
查看>>
[BZOJ2216][Poi2011]Lightning Conductor[决策单调性优化]
查看>>
安装laravel框架
查看>>
java 循环时间调用 程序(转)
查看>>
逻辑电路 - 与非门Nand Gate
查看>>
linux下vi命令修改文件及保存的使用方法
查看>>
SpringCloud成长之路 一 注册与发现(Eureka)
查看>>
if else流程判断
查看>>
堆排序详解
查看>>
第一章基本语法
查看>>
mysql数据库从删库到跑路之mysql完整性约束
查看>>
简单的Writer和Reader
查看>>
zabbix学习(四)IT_Service管理
查看>>
linux 下的lamp的简单安装
查看>>
Typescript 其实就想排个序和枚举取数
查看>>
virt-manager管理kvm
查看>>
python测试rabbitmq的消息收发
查看>>
熊猫直播Rancho发布系统构建之路
查看>>
DbUtils
查看>>