出栈入栈动画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 ...
随机推荐
- ORACLE的sign函数和DECODE函数
比较大小函数 sign 函数语法:sign(n) 函数说明:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 示例:一.select sign( 100 ),sign(- 100 ),sig ...
- We need the sql script to query the table Ditronics.Kiosk.Journal to find journal with mismatch denom information versus amount.
CREATE TABLE #MoneyTable ( Id , ) PRIMARY KEY , MoneyName ) , Cents INT ) INSERT INTO #MoneyTable ( ...
- 021QTP之焦点(多思考)
一.什么是焦点: 焦点说白了就是你打开某一个程序时默认的focuse 比如我们那QTP自带的windows下的示例程序来说,启动它后焦点自动落在了agent name文本框上 二.利用Tab键检查焦点 ...
- ubuntu12.04 安装 chrome
1.下载deb包 2. sudo apt-get remove google-chrome-stable sudo dpkg -i google-chrome-stable_current_amd64 ...
- 电脑突然死机,系统日志记录事件ID=6008
刚才正在写代码,在一次保存之后,正要刷新看下效果,电脑突然关机,没有任何提示或延迟.我的笔记本电池是一直插上的,也连接着电源. 重新开机之后,找到系统日志查看.只有这一条错误记录:非正常关机,事件60 ...
- 问题-在TreeView使用时,发现选中的树节点会闪烁或消失
问题:在工程中选中一个树节点,鼠标焦点在树上,做某种操作时发现选中的点会消失?原因:如果只是BeginUpdate后,没有调用EndUpdate,树会全空.应该是BeginUpdate方法会刷新树,但 ...
- DTD - Elements
In a DTD, elements are declared with an ELEMENT declaration. Declaring Elements In a DTD, XML elemen ...
- 锋利的jquery第二版学习笔记
jquery系统学习笔记 一.初识:jquery的优势:1.轻量级(压缩后不到30KB)2.强大的选择器(支持css1.css2选择器的全部 css3的大部分 以及一些独创的 加入插件的话还可支持XP ...
- rxjs5.X系列 —— Combination/Multicasting系列 api 笔记
欢迎指导与讨论 :) 前言 本文是笔者翻译 RxJS 5.X 官网各类operation操作系列的的第三篇 -- Combination组合与Multicasting广播.如有错漏,希望大家指出提醒O ...
- mycat表拆分操作教程
1,迁移数据 举例说明,比如一个博客数据库数据表如下: 这里水平拆分,垂直拆分,只是做个简单的实验,真正的线上业务要根据情况,数据进行拆分. ? 1 2 3 4 5 6 7 8 9 10 11 12 ...