Android转场动画——共享元素
2018-05-03 本文已影响10人
海晨忆
个人博客:haichenyi.com。感谢关注
这个东西其实很简单,我这里只是做一个简单的记录。
XML代码如下:
<!--第一个Activity的xml布局,需要共享的元素,加上transitionName属性。至于名字,你随便定义,要保持相同-->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation="vertical"
android:gravity="bottom"
tools:context="com.haichenyi.activitytransitionanimation.MainActivity">
<ImageView
android:id="@+id/img"
android:layout_width="300dp"
android:layout_height="200dp"
android:transitionName="wang"
android:src="@mipmap/bg"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转"/>
</LinearLayout>
<!--第二个activity的xml布局-->
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="300dp"
android:src="@mipmap/bg"
android:transitionName="wang"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="back"/>
</android.support.constraint.ConstraintLayout>
java代码如下:
/**
* Author: 海晨忆.
* Date: 2018/3/29
* Desc:
*/
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//共享元素转场动画,只支持android 5.0,所以加一个判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
startActivity(new Intent(MainActivity.this, Step1Activity.class),
ActivityOptions.makeSceneTransitionAnimation(MainActivity.this,
findViewById(R.id.img), "wang").toBundle());
} else {
startActivity(new Intent(MainActivity.this, Step1Activity.class));
}
}
});
}
}
上面代码,就是一个Button点击跳转。这个共享元素的核型代码,就是一个方法:
ActivityOptions.makeSceneTransitionAnimation(Activity activity,
View sharedElement, String sharedElementName)
三个参数:
- Activity activity:activity对象,这个不用多说了
- View sharedElement:共享元素的那个控件
- String sharedElementName:共享元素控件的那个transitionName属性的值。前面xml里面的注释讲过要相同,有三个位置用到这个:跳转activity的xml里面,跳转的目标activity的xml里面,再就是这里,跳转的代码这里需要设置。
就这么简单。