【发布时间】:2017-05-26 22:15:13
【问题描述】:
我正在做一个概念验证,我在 TableLayout 中有一些自定义视图。单击其中一个视图时,我想将视图动画化为一个新的活动。我想要达到的效果和here看到的差不多。
根据我的研究,似乎可以使用shared element Transitions。但是,我无法让它正常工作,我想知道是不是因为我使用的是我自己的自定义视图。
具体来说,淡入淡出正在发生,但缩放和平移运动并未发生。检查下面的 GIF,看看我在哪里。在示例中,我单击左上角的圆圈,我想将其转换为新活动中的完整圆圈。按下后退按钮时也会出现此问题。
我认为这是不正确的,因为必须绘制视图,但是有没有办法进一步自定义我的视图以使其工作?我发现的所有此类转换的示例都包含 ImageViews、Buttons 和 TextViews。
以下是相关来源。我的自定义视图很大,不包含任何特殊代码,只是覆盖了 onDraw() 和 onMeasure()。
MainActivity.java
package com.rscottcarson.circleschedulertest;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Toast;
public class MainActivity extends Activity {
private View view1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view1 = findViewById(R.id.circle1);
view1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, DetailActivity.class);
// create the transition animation - the images in the layouts
// of both activities are defined with android:transitionName="profile"
ActivityOptions options = ActivityOptions
.makeSceneTransitionAnimation(MainActivity.this, view1, "profile");
// start the new activity
startActivity(intent, options.toBundle());
}
});
}
}
DetailActivity.java
package com.rscottcarson.circleschedulertest;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class DetailActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
}
}
change_image_trans.xml
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform />
</transitionSet>
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowContentTransitions">true</item>
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_trans</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementExitTransition">
@transition/change_image_trans</item>
</style>
</resources>
【问题讨论】:
标签: android android-custom-view android-transitions shared-element-transition