2015-12-29 32 views
6

Tôi có GridView và tôi muốn animation như cửa hàng Google Play. Trong đó, khi chúng ta nhấp vào bất kỳ ứng dụng nào thì nó sẽ chuyển hướng đến trang chi tiết của nó. Vào thời điểm đó, một hoạt ảnh nhỏ diễn ra. Tôi muốn loại hoạt ảnh này cho GridView và trang chi tiết của nó. Tôi cần sự giúp đỡ nếu có ai đó biết về loại chuyển tiếp hoạt động này từ lớp này sang lớp khác.Hoạt ảnh hoạt động như cửa hàng Google Play

Trả lời

6

Đây là Đầu Mã hoạt động của bạn từ nơi bạn muốn di chuyển đến màn hình chi tiết

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); 
     } 
    } 
} 

Đây là màn hình chi tiết hoạt động

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)); 
     } 
    } 

} 

tập tin 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> 

EndActivity xml file layout

<?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

Tôi nghĩ Bạn muốn giao dịch hoạt động chính xác vật chất, đọc developer doc here cũng cố gắng lib này cho Dịch animationhttps://github.com/lgvalle/Material-Animations

+0

Đây không phải là một "lib" . Đó là một lời giải thích về cách sử dụng [Android Transition Framework] của Google (https://developer.android.com/training/transitions/overview.html). Và nó tuyệt vời! –

Các vấn đề liên quan