通常在做项目的时候我们会写一些动画,比如activity切换的动画,这个时候常见的办法就是在res目录下新建个anim文件,里面写一些xml动画文件。我们在写这些文件时通常会考虑需求,比如activity是怎样切换的,是从左往右还是从上往下,初次写的时候我们经常搞不清android手机屏屏幕坐标是怎么定义的,原点在哪里,X、Y轴又是怎么定义的,如图
竖屏时,左上角就是原点,坐标为(0, 0),以原点往右坐标为正,往下坐标为正值。因此横屏时,你可以看成水平方向就是X轴,上下方向就是Y轴,这跟我们学数学时的坐标轴一样,由此我们可以写出各种切屏动画
文件名:left_in.xml 从左往右推进
<?xml version="1.0"encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="-100%"
android:toXDelta="0%" />
</set>
文件名:right_out.xml 从右往左退出
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="1000"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0%"
android:toXDelta="100%" />
</set>
其中参数android:duration=”1000”表示整个动画的执行时间为1秒
android:fromXDelta=”-100%”
android:toXDelta=”0%”
沿着X方向的移动,从屏幕的-100%到屏幕的0%
java代码调用在res文件下新建anim文件夹,再新建资源文件选择set
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#468921"
tools:context="com.example.test.animtest.MainActivity">
<TextView
android:id="@+id/textview"
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
java代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView= (TextView) findViewById(R.id.textview);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondClass.class);
startActivity(intent);
// 第一个参数为新的页面进入时的动画,第二个参数为当前页面退出时的动画
overridePendingTransition(R.anim.left_in,R.anim.right_out);
}
});
}