Android常用功能Android相关

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)

三个参数:

  1. Activity activity:activity对象,这个不用多说了
  2. View sharedElement:共享元素的那个控件
  3. String sharedElementName:共享元素控件的那个transitionName属性的值。前面xml里面的注释讲过要相同,有三个位置用到这个:跳转activity的xml里面,跳转的目标activity的xml里面,再就是这里,跳转的代码这里需要设置。

就这么简单。

上一篇 下一篇

猜你喜欢

热点阅读