android 转场动画 4.4,Android 转场动画开发

先看转场动画的效果:

85ba7cf384b2

转场动画效果

上图中包含两个Activity(可以从title中看出来),在ActivityA中点击图片时跳转到ActivityB,同时图片上执行了一个放大+位移的动画。

这种动画是Android 5.0上增加的转场动画。下面我们看一下如何开发这种动画效果。

在ActivityA的layout中添加ImageView,并增加transitionName属性。transitionName属性的值可以是任意字符串。

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:id="@+id/avatar_image"

android:layout_width="80dp"

android:layout_height="80dp"

android:layout_marginLeft="20dp"

android:layout_marginTop="20dp"

android:src="@drawable/avatar_img"

android:transitionName="@string/trans_name" />

在MainActivity中应用该layout,并添加跳转逻辑:

// 类文件:MainActivity.java

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

setTitle("Activity A");

final ImageView avatarImage = findViewById(R.id.avatar_image);

avatarImage.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(MainActivity.this, BrowseImageActivity.class);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(

MainActivity.this, avatarImage, getString(R.string.trans_name));

startActivity(intent, options.toBundle());

} else {

startActivity(intent);

}

}

});

}

在跳转之前,创建了一个ActivityOptions对象,并作为参数传入到了startActivity方法中。注意创建ActivityOptions的参数中包含了转场动画中的View以及transitionName内的值。

创建ActivityB,以及其layout文件。注意ImageView中的transitionName要和之前的View保持一致。

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/avatar_big_image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/avatar_img"

android:transitionName="@string/trans_name" />

// 类文件BrowseImageActivity.java

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.image_browser);

setTitle("Activity B");

}

做完这些,转场动画相关的代码就结束了。其实关键的代码就两点:

转场前后,各有一个View,其transitionName属性是一致的。

转场时,创建一个ActivityOptions对象并传入到startActivity方法中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值