Android基础-启动和退出动画

Android中活动的动画问题

当从一个活动进入到另外的一个活动的时候。有很多的进入方式。这些进入的方式使得活动变的更加“优雅”

1、Google在SDK中集成的Activity切换动画效果

通过这个方法可以去处理:
overridePendingTransition(enterAnim,exitAnim)

  • 第一个参数指的是ActivityA进入ActivityB时,B的动画效果。
  • 第二个参数指的是ActivityA进入ActivityB时,离开A的动画效果。
    注意:
    • 这个方法需要在startActivty和finish方法调用之后立即执行。
    • 若A进入B,或者 B离开A 的时候不需要动画,可以传人值0。

2、自定义Activity切换时效果(文件夹:anim)

首先在res目录下新建anim文件夹,然后新建zoomin.xml文件,具体代码如下所示:

// zoomin
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXScale="2.0"
        android:fromYScale="2.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="1.0"
        android:toYScale="1.0"
        >
    </scale>
</set>

对scale属性的解释:

  • android:duration:指的是动画的时间(毫秒为单位)
  • android:fromXScale:指的是X尺寸比例
  • android:fromYScale:指的是Y尺寸比例
  • android:pivotX:缩放起点X轴坐标,取值(50,50%,50%p)
  • android:pivotY:同X
  • android:toXScale:最终X尺寸比例
  • android:toYScale:最终Y尺寸比例

在res目录下新建anim文件夹,然后新建zoomout.xml文件,具体代码如下所示:

// An highlighted block
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="@android:integer/config_mediumAnimTime"
        android:toXScale="1.0"
        android:toYScale="1.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:fromXScale=".5"
        android:fromYScale=".5">
    </scale>
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:toAlpha="0"
        android:fromAlpha="1.0">
    </alpha>
</set>

对alpha属性的解释:
android:duration:指的是时间
android:toAlpha:动画开始的透明度
android:fromAlpha:动画结束的透明度

注意:取值范围为:(0.0~1.0)

最后使用overridePendingTransition(in,out)在活动中去调用。

// An highlighted block
public class MainActivity extends AppCompatActivity {
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=findViewById(R.id.text_View);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
                overridePendingTransition(R.anim.zoomin,R.anim.zoomout);
            }
        });
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值