今天接触到了android5.0得新特性,共性元素。
先来个很简单的例子:
嗯,个人感觉还可以。。
有两个界面:
MainActivity 和 TwoActivity
1.MainActivity布局代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.a69107.transition.MainActivity">
<View
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/main_view"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:transitionName="shareTransition"
android:background="@android:color/holo_red_light"
/>
</RelativeLayout>
2.MainActivity界面代码
public class MainActivity extends AppCompatActivity {
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view=findViewById(R.id.main_view);
findViewById(R.id.activity_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,TwoActivity.class);
//第三个参数决定了ActivityTwo 布局中的android:transitionName的值,它们要保持一致
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, view, "shareTransition").toBundle());
}
});
}
}
3.TwoActivity布局代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/two"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.a69107.transition.MainActivity">
<View
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/view"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:background="@android:color/holo_blue_light"
/>
<View
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/view1"
android:layout_centerHorizontal="true"
android:layout_alignBaseline="@id/view"
android:layout_marginTop="80dp"
android:background="@android:color/holo_green_light"
/>
<View
android:layout_width="160dp"
android:layout_height="160dp"
android:transitionName="shareTransition"
android:id="@+id/view2"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="80dp"
android:background="@android:color/holo_orange_light"
/>
</RelativeLayout>
4.TwoActivity界面代码
public class TwoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 允许使用transitions
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Fade slide = new Fade();
slide.setDuration(500);
getWindow().setEnterTransition(slide);
setContentView(R.layout.activity_two);
findViewById(R.id.two).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fade slide = new Fade();
slide.setDuration(500);
getWindow().setExitTransition(slide);
finishAfterTransition();
}
});
}
}
需要注意的是TwoActivity设置动画时,需要在setContentView()之前进行处理。
就这样了