文章标题
2015-07-16 09:01
302 查看
View动画切换
activity切换直接通过overridePendingTransition()方法,直接输入动画资源就可以实现。view之间的切换需要设置setInAnimation和setOutAnimation,需要编码实现
package com.zskx; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ViewFlipper; public class AnimationActivity extends Activity { ViewFlipper viewFlipper; Animation anim_in_left2right ; //从左到右进入动画 Animation anim_out_left2right ; //从左到右出去动画 Animation anim_in_right2left ; //从右到左进入动画 Animation anim_out_right2left ; //从右到左出去动画 int windowWidth; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_activity); viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper); windowWidth = getWindowManager().getDefaultDisplay().getWidth(); //屏幕宽度 setAnimation(); //加载动画资源 } private void setAnimation() { anim_in_left2right = AnimationUtils.loadAnimation(this, R.anim.in_left2right); anim_out_left2right = AnimationUtils.loadAnimation(this, R.anim.out_left2right); anim_in_right2left = AnimationUtils.loadAnimation(this, R.anim.in_right2left); anim_out_right2left = AnimationUtils.loadAnimation(this, R.anim.out_right2left); } /** * 启动第二个activity * @param v */ public void startSecond(View v){ Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); AnimationActivity.this.overridePendingTransition(R.anim.activity_in, R.anim.activity_out);//切换activity的动画,直接输入动画R资源 } float lastX; float curX; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = event.getX(); break; case MotionEvent.ACTION_UP: curX = event.getX(); if(curX - lastX > windowWidth * 0.75){ //拉动超过屏幕3/4, 从左到右切换page。 viewFlipper.setInAnimation(anim_in_left2right); //设置动画必须在showNext()之前 viewFlipper.setOutAnimation(anim_out_left2right); viewFlipper.showNext(); // 切换到下一页 }else if(lastX - curX > windowWidth * 0.75){ //拉动超过屏幕3/4,从右到左切换page viewFlipper.setInAnimation(anim_in_right2left); //设置动画必须在showPrevious()之前 viewFlipper.setOutAnimation(anim_out_right2left); viewFlipper.showPrevious(); // 切换到上一页 } break; case MotionEvent.ACTION_MOVE: break; } return super.onTouchEvent(event); } }
in: <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="3000" /> </set> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="100%p" <!--窗口宽度--> android:toXDelta="0" android:duration="3000" /> </set> out <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="3000" /> </set> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="3000" /> </set>
相关文章推荐
- 单工、半双工和全双工的定义和区别
- Android 输入管理服务-输入事件向具体应用的分发
- 手机安全卫士07
- hdu 1059 Dividing(完全背包)
- LNOI2013最小距离之和题解
- c++前置声明
- setwindowstext
- scrollView顶部空白
- hdu 1059 Dividing(完全背包)
- 一个程序员的顿悟
- 微信企业号开发:获取数据权限错误如何处理
- 折半查找
- Error when loading the SDK:解决方案
- 曼哈顿距离最小生成树与莫队算法
- LeetCode OJ 之 Product of Array Except Self (除了自身的数组的乘积)
- 基数排序
- hdu 1171 Big Event in HDU
- GetWindowText
- hdu 1171 Big Event in HDU
- Javascript函数的参数