出栈入栈动画demo
项目做了一个切换界面动画的功能,用到了出栈入栈的,写了一个demo
package com.myron.stackview; import java.util.Stack; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout; public class StackViewActivity extends Activity {
private Stack<View> mViewStack = new Stack<View>();
private View mCurrentView;
private LinearLayout parent2;
// 动画
private TranslateAnimation mAnimLeftOut;
private TranslateAnimation mAnimRightIn;
private TranslateAnimation mAnimRightOut;
private TranslateAnimation mAnimLeftIn; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); initAnim();
//第一个界面
LinearLayout parent = new LinearLayout(this);
parent.setOrientation(LinearLayout.VERTICAL);
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(R.drawable.icon);
parent.addView(imageView, -2, -2);
Button btnPush = new Button(this);
btnPush.setId(1);
btnPush.setText("push");
parent.addView(btnPush, -2, -2);
pushView2Stack(parent);
btnPush.setOnClickListener(listener); //第二个界面
parent2 = new LinearLayout(this);
parent2.setOrientation(LinearLayout.VERTICAL);
ImageView imageView2 = new ImageView(this);
imageView2.setBackgroundResource(R.drawable.icon);
parent2.addView(imageView2, -2, -2);
Button btnPop = new Button(this);
btnPop.setId(2);
btnPop.setText("pop");
parent2.addView(btnPop, -2, -2);
btnPop.setOnClickListener(listener);
} private OnClickListener listener = new OnClickListener() { @Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case 1:
pushView2Stack(parent2);
break;
case 2:
popViewFromStack();
break; default:
break;
}
}
}; /**
* 进栈
* @param newView
*/
public void pushView2Stack(View newView) {
if (mViewStack.size() > 0) {
View peek = mViewStack.peek();
peek.clearFocus();
peek.startAnimation(mAnimLeftOut);
}
mViewStack.push(newView);
mCurrentView = newView;
setContentView(newView);
newView.requestFocus();
if (mViewStack.size() > 1) {
// 启动动画
newView.startAnimation(mAnimRightIn);
}
} public View popViewFromStack() {
if (mViewStack.size() > 1) {
// 弹出旧ui
View pop = mViewStack.pop();
pop.clearFocus();
// 动画
pop.startAnimation(mAnimRightOut); // 新ui
mCurrentView = mViewStack.peek();
setContentView(mCurrentView);
mCurrentView.requestFocus();
mCurrentView.startAnimation(mAnimLeftIn);
return mCurrentView;
} else {
finish();
return null;
}
} private void initAnim() {
// 左出
mAnimLeftOut = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, -1, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0);
mAnimLeftOut.setDuration(400);
mAnimLeftOut.setFillAfter(true);
mAnimLeftOut.setInterpolator(new LinearInterpolator()); // 右进
mAnimRightIn = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 1,
Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0);
mAnimRightIn.setDuration(400);
mAnimRightIn.setFillAfter(true);
mAnimRightIn.setInterpolator(new LinearInterpolator()); // 右出
mAnimRightOut = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 1, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0);
mAnimRightOut.setDuration(400);
mAnimRightOut.setFillAfter(true);
mAnimRightOut.setInterpolator(new LinearInterpolator()); // 左进
mAnimLeftIn = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -1,
Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0);
mAnimLeftIn.setDuration(400);
mAnimLeftIn.setFillAfter(true);
mAnimLeftIn.setInterpolator(new LinearInterpolator());
}
}
出栈入栈动画demo的更多相关文章
- BZOJ1146[CTSC2008]网络管理——出栈入栈序+树状数组套主席树
题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...
- BZOJ3772精神污染——可持久化线段树+出栈入栈序
题目描述 兵库县位于日本列岛的中央位置,北临日本海,南面濑户内海直通太平洋,中央部位是森林和山地,与拥有关西机场的大阪府比邻而居,是关西地区面积最大的县,是集经济和文化于一体的一大地区,是日本西部门户 ...
- BZOJ_3786_星系探索_splay维护出栈入栈序
BZOJ_3786_星系探索_splay维护出栈入栈序 Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为 ...
- BZOJ_2434_[Noi2011]阿狸的打字机_AC自动机+出栈入栈序+树状数组
BZOJ_2434_[Noi2011]阿狸的打字机_AC自动机+出栈入栈序+树状数组 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印 ...
- BZOJ_2819_Nim_树状数组维护出栈入栈序
BZOJ_2819_Nim_树状数组维护出栈入栈序 Description 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任 ...
- C++中栈的出栈,入栈规则:A,B,C,D,E
考题: 栈底至栈顶一次存放元素 ABCD 在第五个元素E入栈之前 栈中元素可以出栈,则出栈序列可能是_____a d___________. a. ABCED b. DBCEA c. CD ...
- [置顶] 栈/入栈/出栈顺序(c语言)-linux
说明: 1.栈底为高地址,栈顶为低地址. 2.入栈顺序:从右到左. 解释1:栈在内存中的结构 [注:0x00 到 0x04之间间隔4个地址] 入栈:指针先指向0x10,从高地址向低地址方向填数值,最终 ...
- 剑指 Offer 31. 栈的压入、弹出序列 + 入栈顺序和出栈顺序的匹配问题
剑指 Offer 31. 栈的压入.弹出序列 Offer_31 题目详情: 解析: 这里需要使用一个栈来模仿入栈操作. package com.walegarrett.offer; /** * @Au ...
- 5, java数据结构和算法: 栈 , 入栈, 出栈, 正序遍历,,逆序遍历
直接上代码: class ArrayStack{ //用数组模拟栈 int maxSize; int[] stack; int top = -1;//表示栈顶 public ArrayStack(in ...
随机推荐
- java中的快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...
- 研究一家公司 z
第一部分:确定一家公司的“质地”(描绘一家公司的总体印象) 1.1 天花板 天花板是指企业或行业的产品(或服务)趋于饱和.达到或接近供大于求的状态.在进行投资之前 ...
- lightoj 1020 (博弈)
思路:很简单的博弈,找出每个人先拿的必胜态进行状态转移即可. #include<cstdio> #include<string> #include<cstring> ...
- 树莓PI交叉编译BOOST库(asio网络例子)
环境搭建参考上一篇文章[http://www.cnblogs.com/yuliyang/p/4023758.html] 客户端(use boost.asio on raspberry pi )clie ...
- 线性存储结构-Stack
Stack继承于Vector,是一个模拟堆栈结构的集合类.当然也属于顺序存储结构.这里注意Android在com.android.layoutlib.bridge.impl包中也有一个Stack的实现 ...
- 嵌入式开发应该掌握的一些Linux命令
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...
- C/C++动态分配与释放内存的区别详细解析
以下是对C与C++中动态分配与释放内存的区别进行了详细的分析介绍,需要的朋友可以过来参考下 1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配 ...
- Bzoj-2005 能量采集 gcd,递推
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2005 题意:题目转换后的模型就是求Σ(gcd(x,y)), 1<=x<=n, ...
- Hadoop MapReduce概念学习系列之JobTracker、ResourceManager、Task Tracker、NodeManager(二十一)
Tracker是跟踪者,跟踪器.JobTracker是项目经理.在hadoop2*的0.23版本之后,改叫RM了.ResourceManager.TaskTracker是小组长.它手下,还有具体搬砖的 ...
- 优步(UBER)发布2016年春节出境游出行报告
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...