Ich habe zwei Aktivitäten. Der erste ist ein Begrüßungsbildschirm, in der Mitte befindet sich ein Logo. Die zweite Aktivität hat das Logo oben (das Logo ist kleiner als das Haupt). Nach einiger Zeit wird die erste Aktivität geschlossen, und das Logo wird durch den Übergang von gemeinsam genutzten Elementaktivitäten animiert. In der ersten Aktivität onStop beende ich es (weil es ein Splash ist, und ich brauche es nicht mehr). Das Problem ist, dass, wenn ich in der zweiten Aktivität zurück drücke, das Logo für einige Zeit (2-3 Sekunden) auf dem Bildschirm steht, selbst wenn die Aktivität bereits ausgeblendet ist. sieht wie folgt aus: emulator screenshotAktivitätsübergang für freigegebene Elemente. View bleibt auf dem Bildschirm, während die Aktivität zerstört wird
Erste Aktivität:
public class MainActivity extends BaseActivity {
@BindView(R.id.logo)
public ImageView imageView;
private boolean mShouldFinish;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startSecondActivity();
}
}, 3000);
}
@Override
protected void onStop() {
super.onStop();
if(mShouldFinish) {
finish();
}
}
private void startSecondActivity() {
Intent intent = new Intent(this, SecondActivity.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, imageView, "logo");
startActivity(intent, options.toBundle());
} else {
startActivity(intent);
}
mShouldFinish = true;
}
}
SecondActivity:
public class SecondActivity extends BaseActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}
FirstActivity Layout:
<FrameLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.github.guliash.androidexplorer.MainActivity">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/ic_android_black_48dp"
android:layout_gravity="center"
android:transitionName="logo"
android:id="@+id/logo"
android:scaleType="fitCenter"/>
</FrameLayout>
SecondActivity Layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_android_black_48dp"
android:transitionName="logo"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
Was mache ich falsch?
Voll Code kann hier github repo
Das half. Aber warum sollte ich dort beenden? – Guliash
Standardmäßig versucht das gemeinsam genutzte Element, zu seinem ursprünglichen Platz zurückzukehren (Übergang beenden). Weil Sie seine ursprüngliche Aktivität beenden, hat es keinen Platz zu gehen. Der Aufrufende beendet diesen Übergang. –
Ich verstehe. Könntest du ein Tutorial vorschlagen, in dem ich über solche Dinge lesen kann? Ich habe zwei Tage gegoogelt und keine Informationen darüber gefunden. – Guliash