2015-12-29 6 views
6

Ho GridView e voglio animation come Google Play Store. In questo, quando clicchiamo su qualsiasi app, questo reindirizza alla sua pagina di dettaglio. A quel tempo accade una piccola animazione. Voglio questo tipo di animazione per il mio GridView e la sua pagina di dettaglio. Ho bisogno di aiuto se qualcuno è a conoscenza di questo tipo di transizione di attività da una classe all'altra.Animazione di attività come Google Play Store

risposta

6

Questo è il tuo primo codice attività da cui si desidera spostare a schermata dei dettagli

import android.content.Intent; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.v4.app.ActivityOptionsCompat; 
import android.support.v4.util.Pair; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 

public class StartActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_start); 
    } 

    public void onClick(View view) { 
     View imageView = findViewById(R.id.imageView); 
     View textView = findViewById(R.id.textView); 
     View button = findViewById(R.id.button); 

     Intent intent = new Intent(this, EndActivity.class); 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      textView.setTransitionName(getString(R.string.activity_text_trans)); 
      button.setTransitionName(getString(R.string.activity_mixed_trans)); 

      Pair<View, String> pair1 = Pair.create(imageView, imageView.getTransitionName()); 
      Pair<View, String> pair2 = Pair.create(textView, textView.getTransitionName()); 
      Pair<View, String> pair3 = Pair.create(button, button.getTransitionName()); 
      ActivityOptionsCompat options = ActivityOptionsCompat. 
        makeSceneTransitionAnimation(this, pair1, pair2, pair3); 
      startActivity(intent, options.toBundle()); 
     } 
     else { 
      startActivity(intent); 
     } 
    } 
} 

Questa è la schermata dei dettagli dell'attività

import android.os.Build; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 

public class EndActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_end); 

     View smallImageView = findViewById(R.id.textView); 
     View editText = findViewById(R.id.editText); 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      smallImageView.setTransitionName(getString(R.string.activity_text_trans)); 
      editText.setTransitionName(getString(R.string.activity_mixed_trans)); 
     } 
    } 

} 

file di FirstActivity layouut

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="16dp"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:layout_centerHorizontal="true" 
     android:src="@drawable/aa_logo_green" 
     android:transitionName="@string/activity_image_trans"/> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/imageView" 
     android:text="Simple TextView" 
     android:textSize="20sp"/> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/textView" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:text="Click Me" 
     style="@style/Widget.AppCompat.Button.Borderless" 
     android:onClick="onClick"/> 

</RelativeLayout> 

file di layout EndActivity XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="16dp"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="220dp" 
     android:layout_height="220dp" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentBottom="true" 
     android:src="@drawable/aa_logo_green" 
     android:transitionName="@string/activity_image_trans"/> 

    <EditText 
     android:id="@+id/editText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentLeft="true" 
     android:hint="An EditText" 
     android:textSize="24sp"/> 

    <ImageView 
     android:id="@+id/textView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@id/imageView" 
     android:layout_alignBottom="@id/imageView" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentLeft="true" 
     android:src="@drawable/aa_logo_blue"/> 

</RelativeLayout> 
1

Penso che si desidera transazione attività esattamente materiale, leggere questo developer doc here anche provare questo lib per l'animazione Traduzionehttps://github.com/lgvalle/Material-Animations

+0

Questo non è un "lib" . È una spiegazione su come utilizzare [Android Transition Framework] di google (https://developer.android.com/training/transitions/overview.html). Ed è fantastico! –