Wol*_*olf 2 animation slide android-activity
我正在开发一个由许多代表阶段的活动组成的应用程序.因此,有Stage1Activity,Stage2Activity,Stage3Activity等.每个活动都有一个按钮(或更多按钮),一旦点击,就会将用户带到下一个活动.我想做的是动画这些活动之间的过渡.
我在res/anim文件夹中添加了两个XML文件.push_left_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>
Run Code Online (Sandbox Code Playgroud)
而push_left_out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>
Run Code Online (Sandbox Code Playgroud)
在主要活动中,Stage1Activity我有:
public class Stage1Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stage1);
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK){
finish();
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
return true;
}
return super.onKeyDown(keyCode, event);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我进行活动时,过渡工作正常.新活动将旧视图从右向左推出视图.当用户按下设备上的后退按钮时,我想要一个反向效果,但是会播放相同的过渡动画.我玩过android:fromXDelta标签,并取得了一些非常奇怪的结果,但我只是不知道如何设置它,以便在按下设备上的后退按钮时,新的活动(实际上是旧的一个新调用的意图)从左到右推出旧的.
基本上我想让它看起来就像你在进行阶段时向右移动一样,但是当你向后按时它应该看起来像你回到了(向左).抱歉,如果这是一个愚蠢的问题,但我真的很困惑,我需要帮助:/
Wol*_*olf 11
有点傻傻地回答我自己的问题我想...但我想我清理自己的烂摊子是合适的.我做了一些更广泛的研究并玩了代码,我很自豪地说我已经解决了这个问题.以下是下面的解决方案,供其他可能需要它的人参考.
此应用程序需要四个动画.首先,在单击Stage1Activity上的按钮时,我想滑动并淡出该活动到左侧,同时在Stage2Activity中从右向左滑动.这需要两个XML文件:
push_left_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%" android:toXDelta="0" android:duration="500"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
</set>
Run Code Online (Sandbox Code Playgroud)
push_left_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%" android:duration="500"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
</set>
Run Code Online (Sandbox Code Playgroud)
这两个文件在overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);放置在onCreate右下方的命令中调用setContentView.一个推出旧活动,另一个推动新活动.现在我只需要在设备上按下Back按钮时产生相反的效果.这需要一个全新的动画(我没有马上得到的东西).
所以我再添加两个XML文件:
push_right_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%" android:duration="500"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
</set>
Run Code Online (Sandbox Code Playgroud)
push_right_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%" android:toXDelta="0" android:duration="500"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
</set>
Run Code Online (Sandbox Code Playgroud)
这些其他两个文件在overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);放置在onKeyDownBack按钮响应的方法中调用.一个将旧活动滑出,另一个滑动新活动 - 但与前一个动画相比,方向相反.不要忘记更改alpha值,因为这发生在我身上lol
无论如何,这个问题现在已经结束.抱歉,添麻烦了!或者不是,因为我至少得到了Tumbleweed XD的成就
| 归档时间: |
|
| 查看次数: |
5057 次 |
| 最近记录: |