Tween动画(四种)以及Activity间跳转动画

来源:互联网 发布:网络电影票房排行 编辑:程序博客网 时间:2024/06/18 05:23

main.xml如下:

<RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="wrap_content"    android:layout_height="wrap_content" >    <ImageView         android:id="@+id/imageView"        android:layout_width="60dip"        android:layout_height="90dip"        android:scaleType="fitXY"        android:layout_marginTop="80dip"        android:src="@drawable/haha"        android:layout_centerHorizontal="true"     />    <LinearLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:layout_below="@id/imageView"        android:layout_marginTop="35dip"    >        <Button             android:id="@+id/alphaButton"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="alpha"               />         <Button             android:id="@+id/scaleButton"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="scale"            android:layout_marginLeft="15dip"        />          <Button             android:id="@+id/rotateButton"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="rotate"            android:layout_marginLeft="15dip"        />           <Button             android:id="@+id/translateButton"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="translate"            android:layout_marginLeft="15dip"        />    </LinearLayout>    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_marginTop="270dip"        android:text="@string/hello_world"        tools:context=".MainActivity" />    <Button         android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Jump To 1"        android:layout_below="@id/textView"        android:layout_marginTop="20dip"        android:layout_alignParentLeft="true"           />         <Button         android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Jump To 2"        android:layout_below="@id/textView"        android:layout_marginTop="20dip"        android:layout_alignParentRight="true"           /></RelativeLayout>


secondActivity布局如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" >    <TextView         android:layout_width="120dip"        android:layout_height="wrap_content"        android:text="The second Activity"        android:layout_gravity="center_vertical"        android:layout_marginLeft="120dip"     /></LinearLayout>


mainActivity如下:

package com.example.testactivityjumpanimation;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity {    private Button button1;    private Button button2;    private Button alphaButton;    private Button scaleButton;    private Button rotateButton;    private Button translateButton;    private Animation animation;    private ImageView imageView;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //Activity跳转间动画1        button1=(Button) findViewById(R.id.button1);        button1.setOnClickListener(new ButtonClickListener());        //Activity跳转间动画1        button2=(Button) findViewById(R.id.button2);        button2.setOnClickListener(new ButtonClickListener());        //展示动画的ImageView        imageView=(ImageView) findViewById(R.id.imageView);        //测试四个动画的按钮        alphaButton=(Button) findViewById(R.id.alphaButton);        scaleButton=(Button) findViewById(R.id.scaleButton);        rotateButton=(Button) findViewById(R.id.rotateButton);        translateButton=(Button) findViewById(R.id.translateButton);                alphaButton.setOnClickListener(new ButtonClickListener());        scaleButton.setOnClickListener(new ButtonClickListener());        rotateButton.setOnClickListener(new ButtonClickListener());        translateButton.setOnClickListener(new ButtonClickListener());       }     private class ButtonClickListener implements OnClickListener{public void onClick(View v) {switch (v.getId()) {//Activity之间跳转的动画1case R.id.button1:Intent intent1=new Intent(MainActivity.this, SecondActicity.class);startActivity(intent1);//注意参数的解释://第一个参数 enterAnim//A resource ID of the animation resource to use for the incoming activity.//Use 0 for no animation.//第二个参数 exitAnim//A resource ID of the animation resource to use for the outgoing activity. //Use 0 for no animation.//注意该方法应该紧挨着startActivity()或者finish()后调用overridePendingTransition(R.anim.in1, R.anim.out1);break;case R.id.button2:Intent intent2=new Intent(MainActivity.this, SecondActicity.class);startActivity(intent2);overridePendingTransition(R.anim.in2, R.anim.out2);break;//透明度动画case R.id.alphaButton:animation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.alphaanimation);imageView.startAnimation(animation);break;//大小变化动画           case R.id.scaleButton:           animation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.scaleanimation);           imageView.startAnimation(animation);break;//旋转动画           case R.id.rotateButton:           animation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotateanimation);           imageView.startAnimation(animation);break;//位移动画           case R.id.translateButton:           animation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.translateanimation);           imageView.startAnimation(animation);break;default:break;}}        }}


secondActivity如下:

package com.example.testactivityjumpanimation;import android.app.Activity;import android.os.Bundle;public class SecondActicity extends Activity { @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.second);           }}


以下为动画xml文件

alphaanimation.xml如下:

<?xml version="1.0" encoding="utf-8"?><!-- Alpha的值界于0.0与1.0之间 --><!-- Alpha=0的时候不可见 --><!-- Alpha=1的时候完全可见 --><!-- repeatCount设置了动画重复的次数 --><!-- repeatCount=1,那么动画一共会执行2次 --><!-- repeatCount的意思是除了原本的执行以后还要执行几次 --><!-- android:repeatMode有两种,测试一下即明白 --><!-- android:fillAfter和android:fillBefore只能在set中设置!!!android:fillAfter="true"表示动画结束后,当前画面就为动画结束后的效果android:fillBefore="true"表示动画结束后,当前画面就为动画开始前的效果--><!-- android:startOffset也是在set中设置才有效果--><!--   android:interpolator用于控制动画执行过程中的速度 --><set     xmlns:android="http://schemas.android.com/apk/res/android"    android:fillBefore="true"    >    <alpha         android:fromAlpha="1.0"        android:toAlpha="0.1"        android:duration="10000"        android:repeatCount="1"     /></set>


scaleanimation.xml如下:

<?xml version="1.0" encoding="utf-8"?><!-- fromX(Y)Scale和toX(Y)Scale的值: --><!-- 0.0表示收缩到没有 --><!-- 1.0表示正常无收缩 --><!-- 值小于1.0表示收缩 --><!-- 值大于1.0表示放大 --><!-- 注意: --><!-- 应该同时设置X和Y的from和to,否则无效果--><!-- pivot本意是枢轴,中心点的意思 --><!-- pivotX(Y)表示动画相对于物件的X,Y坐标的开始位置 --><!-- pivotX(Y)取值范围为0%到100% --><set xmlns:android="http://schemas.android.com/apk/res/android">    <scale         android:fromXScale="0.4"        android:toXScale="2.0"        android:fromYScale="0.4"        android:toYScale="2.0"        android:pivotX="100%"        android:pivotY="50%"        android:duration="3000"      /></set>


rotateanimation.xml如下:

<?xml version="1.0" encoding="utf-8"?><!-- android:fromDegrees表示动画开始时相对于原物件的角度 --><!-- android:toDegrees表示动画结束时相对于原物件旋转的角度--><!-- 此处使用到的角度:正数表示顺时针旋转 --><!-- 此处使用到的角度:负数表示逆时针旋转 --><!-- 以下说法不准确 --><!-- from为负数,to为正数,顺时针旋转 --><!-- from为负数,to为负数,逆时针旋转 --><!-- from为正数,to为正数,顺时针旋转 --><!-- from为正数,to为负数,逆时针旋转 --><!-- 应该是to减去from=结果 --><!-- 结果大于0,顺时针旋转 --><!-- 结果小于0,逆时针旋转 --><!-- 和前面描述from和to是一样的: --><!-- 正数表示顺时针旋转 --><!-- 负数表示逆时针旋转 --><!-- 更准确应该这么理解 --><!-- 应该是from减去to=结果 --><!-- 结果大于0,逆时针旋转 --><!-- 结果小于0,正时针旋转 --><!-- 这样符合一贯的理解:顺时针为负,逆时针为正 --><!-- pivot本意是枢轴,中心点的意思 --><!-- pivotX(Y)表示动画开始的时候相对于原来物件的X,Y坐标--><!-- pivotX(Y)取值范围为0%到100% --><set xmlns:android="http://schemas.android.com/apk/res/android">   <rotate        android:fromDegrees="90"       android:toDegrees="-90"       android:pivotX="50%"       android:pivotY="50%"       android:duration="4000"    /> </set>


translateanimation.xml如下:

<?xml version="1.0" encoding="utf-8"?><!--     fromXDelta  表示动画开始的点的X离当前View X坐标上的差值  toXDelta    表示动画结束的点的X离当前View X坐标上的差值  fromYDelta  表示动画开始的点的Y离当前View Y坐标上的差值  toYDelta    表示动画开始的点的Y离当前View Y坐标上的差值 --><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate         android:fromXDelta="100"        android:toXDelta="0"        android:fromYDelta="30"        android:toYDelta="0"        android:duration="3000"         /></set>

 

in1.xml如下:

<?xml version="1.0" encoding="utf-8"?><!-- 作用于即将出现的Activity --><set xmlns:android="http://schemas.android.com/apk/res/android"    android:interpolator="@android:anim/decelerate_interpolator" >    <scale        android:duration="3000"        android:fromXScale="2.0"        android:toXScale="1.0"        android:fromYScale="2.0"        android:toYScale="1.0"        android:pivotX="50%"        android:pivotY="50%"        /></set>


out1.xml如下:

<?xml version="1.0" encoding="utf-8"?><!-- 作用于即将消失的Activity --><set xmlns:android="http://schemas.android.com/apk/res/android"    android:interpolator="@android:anim/decelerate_interpolator"    android:zAdjustment="top" >    <scale        android:duration="5000"        android:fromXScale="1.0"        android:toXScale="0.5"        android:fromYScale="1.0"        android:toYScale="0.5"        android:pivotX="50%"        android:pivotY="50%"        />    <alpha        android:duration="5000"        android:fromAlpha="1.0"        android:toAlpha="0.0" /></set>


in2.xml如下:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:fromXDelta="320"        android:toXDelta="0"        android:duration="300"    /></set>


out2.xml如下:

<?xml version="1.0" encoding="utf-8"?><!-- 设置android:fromXDelta="0"且android:toXDelta="0"作用:防止在Activity页面跳转的时候,出现黑屏.且注意:out2中的android:duration和in2中的保持一致--><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:fromXDelta="0"        android:toXDelta="0"        android:duration="300"    /></set>



 

原创粉丝点击