├── .gitignore ├── .idea ├── .name ├── codeStyleSettings.xml ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── spikeking │ │ └── github │ │ └── com │ │ └── testsharedelements │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── spikeking │ │ │ └── github │ │ │ └── com │ │ │ └── testsharedelements │ │ │ ├── DetailFragment.java │ │ │ ├── DetailTransition.java │ │ │ ├── GridFragment.java │ │ │ ├── MainActivity.java │ │ │ ├── MyGridAdapter.java │ │ │ ├── MyGridViewHolder.java │ │ │ └── MyViewOnClickListener.java │ └── res │ │ ├── drawable │ │ ├── jessica.png │ │ ├── sunny.png │ │ ├── taeyeon.png │ │ ├── tiffany.png │ │ ├── yoona.png │ │ └── yuri.png │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── content_main.xml │ │ ├── fragment_detail.xml │ │ ├── fragment_grid.xml │ │ └── grid_item.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── spikeking │ └── github │ └── com │ └── testsharedelements │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | TestSharedElements -------------------------------------------------------------------------------- /.idea/codeStyleSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 227 | 229 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Android 39 | 40 | 41 | Android Lint 42 | 43 | 44 | Java 45 | 46 | 47 | Java language level migration aidsJava 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 69 | 70 | 71 | 72 | 73 | Android API 21 Platform 74 | 75 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TestFragmetnSharedElement 2 | 使用 SharedElement 动画切换 Fragment 页面 3 | 4 | > 欢迎Follow我的[GitHub](https://github.com/SpikeKing) 5 | 6 | 博客: http://www.wangchenlong.org/ 7 | 8 | 本文: http://www.wangchenlong.org/2016/03/22/1603/232-fragment-shared-element/ 9 | 10 | [参考文章](http://www.wangchenlong.org/2016/03/22/1603/232-fragment-shared-element/) 11 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.1" 6 | 7 | defaultConfig { 8 | applicationId "spikeking.github.com.testsharedelements" 9 | minSdkVersion 17 10 | targetSdkVersion 23 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | testCompile 'junit:junit:4.12' 25 | compile 'com.android.support:appcompat-v7:23.1.0' 26 | compile 'com.android.support:design:23.1.0' 27 | compile 'com.jakewharton:butterknife:7.0.1' 28 | compile 'com.android.support:recyclerview-v7:23.1.0' 29 | } 30 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/wangchenlong/Installations/android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/spikeking/github/com/testsharedelements/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/java/spikeking/github/com/testsharedelements/DetailFragment.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.IntRange; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.ImageView; 11 | import android.widget.TextView; 12 | 13 | import java.util.ArrayList; 14 | 15 | import butterknife.Bind; 16 | import butterknife.ButterKnife; 17 | 18 | /** 19 | * 详情页面 20 | *

21 | * Created by wangchenlong on 15/11/5. 22 | */ 23 | public class DetailFragment extends Fragment { 24 | 25 | private static final String ARG_NUMBER = "arg_number"; 26 | private ArrayList mDetailDatas; 27 | 28 | @Bind(R.id.detail_image) 29 | ImageView mImage; 30 | 31 | @Bind(R.id.detail_head) 32 | TextView mHead; 33 | 34 | @Bind(R.id.detail_body) 35 | TextView mBody; 36 | 37 | /** 38 | * 根据选择的number, 选择展示的数据 39 | * 40 | * @param number 数字 41 | * @return 详情页面 42 | */ 43 | public static DetailFragment newInstance(@IntRange(from = 0, to = 5) int number) { 44 | Bundle bundle = new Bundle(); 45 | bundle.putInt(ARG_NUMBER, number); 46 | 47 | DetailFragment detailFragment = new DetailFragment(); 48 | detailFragment.setArguments(bundle); 49 | 50 | return detailFragment; 51 | } 52 | 53 | @Nullable 54 | @Override 55 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 56 | View view = inflater.inflate(R.layout.fragment_detail, container, false); 57 | ButterKnife.bind(this, view); 58 | return view; 59 | } 60 | 61 | @Override 62 | public void onViewCreated(View view, Bundle savedInstanceState) { 63 | super.onViewCreated(view, savedInstanceState); 64 | 65 | initData(); 66 | 67 | int number = getArguments().getInt(ARG_NUMBER); 68 | mImage.setImageResource(mDetailDatas.get(number).getImage()); 69 | mHead.setText(mDetailDatas.get(number).getHead()); 70 | mBody.setText(mDetailDatas.get(number).getBody()); 71 | 72 | mImage.setOnClickListener(new View.OnClickListener() { 73 | @Override 74 | public void onClick(View v) { 75 | getActivity().getSupportFragmentManager().popBackStack(); 76 | } 77 | }); 78 | } 79 | 80 | 81 | 82 | // 初始化数据 83 | private void initData() { 84 | mDetailDatas = new ArrayList<>(); 85 | mDetailDatas.add(new DetailData(R.drawable.taeyeon, R.string.taeyeon, R.string.taeyeon_detail)); 86 | mDetailDatas.add(new DetailData(R.drawable.jessica, R.string.jessica, R.string.jessica_detail)); 87 | mDetailDatas.add(new DetailData(R.drawable.sunny, R.string.sunny, R.string.sunny_detail)); 88 | mDetailDatas.add(new DetailData(R.drawable.tiffany, R.string.tiffany, R.string.tiffany_detail)); 89 | mDetailDatas.add(new DetailData(R.drawable.yuri, R.string.yuri, R.string.yuri_detail)); 90 | mDetailDatas.add(new DetailData(R.drawable.yoona, R.string.yoona, R.string.yoona_detail)); 91 | } 92 | 93 | @Override 94 | public void onDestroyView() { 95 | super.onDestroyView(); 96 | ButterKnife.unbind(this); 97 | } 98 | 99 | // 定义类 100 | private class DetailData { 101 | private int mImage; 102 | private int mHead; 103 | private int mBody; 104 | 105 | public DetailData(int image, int head, int body) { 106 | mImage = image; 107 | mHead = head; 108 | mBody = body; 109 | } 110 | 111 | public int getImage() { 112 | return mImage; 113 | } 114 | 115 | public int getHead() { 116 | return mHead; 117 | } 118 | 119 | public int getBody() { 120 | return mBody; 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /app/src/main/java/spikeking/github/com/testsharedelements/DetailTransition.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | import android.annotation.TargetApi; 4 | import android.content.Context; 5 | import android.os.Build; 6 | import android.transition.ChangeBounds; 7 | import android.transition.ChangeImageTransform; 8 | import android.transition.ChangeTransform; 9 | import android.transition.TransitionSet; 10 | import android.util.AttributeSet; 11 | 12 | /** 13 | * 转换动画 14 | * Created by wangchenlong on 15/11/5. 15 | */ 16 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 17 | public class DetailTransition extends TransitionSet { 18 | public DetailTransition() { 19 | init(); 20 | } 21 | 22 | // 允许资源文件使用 23 | public DetailTransition(Context context, AttributeSet attrs) { 24 | super(context, attrs); 25 | init(); 26 | } 27 | 28 | private void init() { 29 | setOrdering(ORDERING_TOGETHER); 30 | addTransition(new ChangeBounds()). 31 | addTransition(new ChangeTransform()). 32 | addTransition(new ChangeImageTransform()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/spikeking/github/com/testsharedelements/GridFragment.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | import android.os.Build; 4 | import android.os.Bundle; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.support.v4.util.Pair; 8 | import android.support.v7.widget.GridLayoutManager; 9 | import android.support.v7.widget.RecyclerView; 10 | import android.transition.Fade; 11 | import android.view.LayoutInflater; 12 | import android.view.View; 13 | import android.view.ViewGroup; 14 | 15 | import java.util.ArrayList; 16 | 17 | import butterknife.Bind; 18 | import butterknife.ButterKnife; 19 | 20 | /** 21 | * 网格的RecyclerView 22 | *

23 | * Created by wangchenlong on 15/11/5. 24 | */ 25 | public class GridFragment extends Fragment { 26 | 27 | private ArrayList> mData; 28 | 29 | @Bind(R.id.grid_rv_recycler) 30 | RecyclerView mRvRecycler; 31 | 32 | @Nullable 33 | @Override 34 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 35 | Bundle savedInstanceState) { 36 | View view = inflater.inflate(R.layout.fragment_grid, container, false); 37 | ButterKnife.bind(this, view); 38 | return view; 39 | } 40 | 41 | @Override 42 | public void onViewCreated(View view, Bundle savedInstanceState) { 43 | super.onViewCreated(view, savedInstanceState); 44 | 45 | initData(); 46 | 47 | mRvRecycler.setAdapter(new MyGridAdapter(mData, mListener)); 48 | mRvRecycler.setLayoutManager(new GridLayoutManager(getContext(), 2)); // 一行两个 49 | } 50 | 51 | /** 52 | * 点击事件, 转换元素的动画, 53 | * 关键addSharedElement(holder.getImageView(), getResources().getString(R.string.image_transition)) 54 | * 绑定ViewHolder的图片和DetailFragment的跳转. 55 | */ 56 | private MyViewOnClickListener mListener = new MyViewOnClickListener() { 57 | @Override 58 | public void onClickedView(MyGridViewHolder holder, int position) { 59 | DetailFragment detailFragment = DetailFragment.newInstance(position); 60 | 61 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 62 | detailFragment.setSharedElementEnterTransition(new DetailTransition()); 63 | setExitTransition(new Fade()); 64 | detailFragment.setEnterTransition(new Fade()); 65 | detailFragment.setSharedElementReturnTransition(new DetailTransition()); 66 | } 67 | 68 | getActivity().getSupportFragmentManager().beginTransaction() 69 | .addSharedElement(holder.getImageView(), getResources().getString(R.string.image_transition)) 70 | .replace(R.id.main_cl_container, detailFragment) 71 | .addToBackStack(null) 72 | .commit(); 73 | } 74 | }; 75 | 76 | // 初始化数据 77 | private void initData() { 78 | mData = new ArrayList<>(); 79 | 80 | mData.add(Pair.create(R.string.taeyeon, R.drawable.taeyeon)); 81 | mData.add(Pair.create(R.string.jessica, R.drawable.jessica)); 82 | mData.add(Pair.create(R.string.sunny, R.drawable.sunny)); 83 | mData.add(Pair.create(R.string.tiffany, R.drawable.tiffany)); 84 | mData.add(Pair.create(R.string.yuri, R.drawable.yuri)); 85 | mData.add(Pair.create(R.string.yoona, R.drawable.yoona)); 86 | } 87 | 88 | @Override 89 | public void onDestroyView() { 90 | super.onDestroyView(); 91 | ButterKnife.unbind(this); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /app/src/main/java/spikeking/github/com/testsharedelements/MainActivity.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | 6 | public class MainActivity extends AppCompatActivity { 7 | 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | setContentView(R.layout.activity_main); 12 | 13 | // 替换Fragment 14 | if (savedInstanceState == null) { 15 | getSupportFragmentManager().beginTransaction() 16 | .add(R.id.main_cl_container, new GridFragment()) 17 | .commit(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/spikeking/github/com/testsharedelements/MyGridAdapter.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | import android.support.v4.util.Pair; 4 | import android.support.v4.view.ViewCompat; 5 | import android.support.v7.widget.RecyclerView; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | 10 | import java.util.ArrayList; 11 | 12 | /** 13 | * Fragment的网格适配器 14 | *

15 | * Created by wangchenlong on 15/11/5. 16 | */ 17 | public class MyGridAdapter extends RecyclerView.Adapter { 18 | 19 | private ArrayList> mData; // 名字和图片 20 | private MyViewOnClickListener mListener; // 点击事件 21 | 22 | public MyGridAdapter(ArrayList> data, 23 | MyViewOnClickListener listener) { 24 | mData = data; 25 | mListener = listener; 26 | } 27 | 28 | @Override 29 | public MyGridViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 30 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_item, parent, false); 31 | return new MyGridViewHolder(view); 32 | } 33 | 34 | @Override 35 | public void onBindViewHolder(final MyGridViewHolder holder, final int position) { 36 | holder.getTextView().setText(mData.get(position).first); 37 | holder.getImageView().setImageResource(mData.get(position).second); 38 | 39 | // 把每个图片视图设置不同的Transition名称, 防止在一个视图内有多个相同的名称, 在变换的时候造成混乱 40 | // Fragment支持多个View进行变换, 使用适配器时, 需要加以区分 41 | ViewCompat.setTransitionName(holder.getImageView(), String.valueOf(position) + "_image"); 42 | 43 | holder.getImageView().setOnClickListener(new View.OnClickListener() { 44 | @Override 45 | public void onClick(View v) { 46 | mListener.onClickedView(holder, position); 47 | } 48 | }); 49 | } 50 | 51 | @Override 52 | public int getItemCount() { 53 | return mData.size(); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /app/src/main/java/spikeking/github/com/testsharedelements/MyGridViewHolder.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.ImageView; 6 | import android.widget.TextView; 7 | 8 | /** 9 | * 提供了Grid的ImageView 10 | *

11 | * Created by wangchenlong on 15/11/5. 12 | */ 13 | public class MyGridViewHolder extends RecyclerView.ViewHolder { 14 | 15 | private ImageView mImageView; 16 | private TextView mTextView; 17 | 18 | public MyGridViewHolder(View itemView) { 19 | super(itemView); 20 | mImageView = (ImageView) itemView.findViewById(R.id.grid_image); 21 | mTextView = (TextView) itemView.findViewById(R.id.grid_text); 22 | } 23 | 24 | public ImageView getImageView() { 25 | return mImageView; 26 | } 27 | 28 | public TextView getTextView() { 29 | return mTextView; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/spikeking/github/com/testsharedelements/MyViewOnClickListener.java: -------------------------------------------------------------------------------- 1 | package spikeking.github.com.testsharedelements; 2 | 3 | /** 4 | * 点击事件接口 5 | *

6 | * Created by wangchenlong on 15/11/5. 7 | */ 8 | public interface MyViewOnClickListener { 9 | void onClickedView(MyGridViewHolder holder, int position); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/jessica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/drawable/jessica.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/sunny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/drawable/sunny.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/taeyeon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/drawable/taeyeon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/tiffany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/drawable/tiffany.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/yoona.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/drawable/yoona.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/yuri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/drawable/yuri.png -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | 25 | 26 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_grid.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/grid_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 |

5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpikeKing/TestFragmetnSharedElement/3d6ab4848754f9f4148f0301ec435c79a274a2a3/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | > 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF1493 4 | #FF1493 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | TestSharedElements 3 | Settings 4 | 5 | image 6 | 7 | Jessica 8 | Sunny 9 | Taeyeon 10 | Tiffany 11 | Yoona 12 | Yuri 13 | 14 | 金泰妍(Taeyeon),1989年3月9日出生于韩国全罗北道全州市,韩国女歌手、主持人,女子演唱团体少女时代成员之一。2004年在第八届SM青少年选拔大赛歌王中夺得第一名,进入韩国SM娱乐有限公司开始练习生生涯。2007年8月以演唱团体少女时代成员身份正式出道。2008年为韩国KBS电视台电视剧《快刀洪吉童》演唱主题曲《如果》;同年12月凭借歌曲《听得见吗》获得第23届韩国金唱片大奖人气奖。2012年与黄美英、徐珠贤组成了少女时代的小分队组合“TaeTiSeo”。 15 | 郑秀妍(Jessica Jung),1989年4月18日出生于美国加利福尼亚州旧金山,韩国女歌手、演员、设计师。2000年,郑秀妍回国探亲时被韩国SM娱乐公司挖掘,成为其旗下练习生,在练习生期间又因为美貌拥有了个人FanClub。2007年8月,以演唱团体少女时代成员身份正式出道,是组合里训练时间最长的成员。2009年,首次在音乐剧《金发尤物》中担任主角“艾莉·伍兹”。 16 | 李顺圭(Sunny)本名李纯揆,1989年5月15日出生于美国加利福利亚州洛杉矶市,韩国女歌手、主持人,女子演唱团体少女时代成员之一。李顺圭原本在其父亲的经纪公司训练了9年,准备以"TINTOP"出道时遇上经纪公司倒闭,未能出道。2007年,她在亚由美的推荐下参加韩国SM娱乐有限公司的选秀,成为旗下练习生;同年8月以演唱团体少女时代正式出道。2009年参与综艺节目《青春不败》。 17 | 黄美英(Tiffany),1989年8月1日出生于美国加利福尼亚州旧金山市,韩国女歌手、主持人,女子演唱团体少女时代成员之一。2004年,黄美英在洛杉矶参加“S.M. casting System”选秀后进入韩国SM娱乐有限公司成为旗下练习生。2007年8月以演唱团体少女时代正式出道,担任主唱以及副领舞的职务。2009年凭借歌曲《By Myself》入围“第11届Mnet亚洲音乐大奖”最佳OST奖提名。 18 | 权俞利(Yuri),1989年12月5日出生于韩国高阳市,韩国女歌手、演员、主持人,女子演唱团体少女时代成员之一。2001年在首尔参加首届韩国SM娱乐有限公司青少年选拔赛获“最佳舞蹈本赏”后成为旗下练习生。2007年8月以演唱团体少女时代成员身份正式出道。2009年担任音乐节目“MBC音乐中心”的主持人,多次主持年末庆典与演唱会。2012年首次以演员身份主演电视剧《时尚王》,获得韩国SBS演技大奖新星奖与第49届百想艺术大赏电视类最佳人气女演员赏。 19 | 林允儿(Yoona),1990年5月30日出生于韩国首尔,韩国女歌手、演员、主持人,女子演唱团体少女时代成员之一。2002年,林允儿被韩国SM娱乐有限公司发掘,正式进入SM公司成为旗下练习生。2007年8月5日以演唱团体少女时代正式出道。2008年在电视连续剧《你是我的命运》担任女主角,凭借该剧获得第45届百想艺术大赏最佳新人女演员奖。2009年参演电视剧《乞丐变王子》;同年凭借电视剧《你是我的命运》获得百想艺术大奖最佳新人女演员奖。 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |