| package com.airbnb.lottie.samples; |
| |
| import android.content.Intent; |
| import android.net.Uri; |
| import android.os.Bundle; |
| import android.support.annotation.Nullable; |
| import android.support.v4.app.Fragment; |
| import android.support.v7.widget.RecyclerView; |
| import android.view.LayoutInflater; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.widget.TextView; |
| |
| import com.airbnb.lottie.LottieAnimationView; |
| |
| import butterknife.BindView; |
| import butterknife.ButterKnife; |
| |
| public class ListFragment extends Fragment { |
| |
| static ListFragment newInstance() { |
| return new ListFragment(); |
| } |
| |
| @BindView(R.id.container) ViewGroup container; |
| @BindView(R.id.recycler_view) RecyclerView recyclerView; |
| @BindView(R.id.animation_view) LottieAnimationView animationView; |
| |
| private final FileAdapter adapter = new FileAdapter(); |
| |
| @Nullable |
| @Override |
| public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { |
| View view = inflater.inflate(R.layout.fragment_list, container, false); |
| ButterKnife.bind(this, view); |
| |
| recyclerView.setAdapter(adapter); |
| |
| return view; |
| } |
| |
| @Override |
| public void onStart() { |
| super.onStart(); |
| animationView.setProgress(0f); |
| animationView.playAnimation(); |
| } |
| |
| @Override |
| public void onStop() { |
| super.onStop(); |
| animationView.cancelAnimation(); |
| } |
| |
| private void onViewerClicked() { |
| showFragment(AnimationFragment.newInstance()); |
| } |
| |
| private void onTypographyClicked() { |
| startActivity(new Intent(getContext(), FontActivity.class)); |
| } |
| |
| private void onAppIntroPagerClicked() { |
| startActivity(new Intent(getContext(), AppIntroActivity.class)); |
| } |
| |
| private void onOpenLottieFilesClicked() { |
| Intent i = new Intent(Intent.ACTION_VIEW); |
| i.setData(Uri.parse("http://www.lottiefiles.com")); |
| startActivity(i); |
| } |
| |
| private void showFragment(Fragment fragment) { |
| getFragmentManager().beginTransaction() |
| .addToBackStack(null) |
| .setCustomAnimations(R.anim.slide_in_right, R.anim.hold, R.anim.hold, R.anim.slide_out_right) |
| .remove(this) |
| .replace(R.id.content_2, fragment) |
| .commit(); |
| } |
| |
| private final class FileAdapter extends RecyclerView.Adapter<StringViewHolder> { |
| private static final String TAG_VIEWER = "viewer"; |
| private static final String TAG_TYPOGRAPHY = "typography"; |
| private static final String TAG_APP_INTRO = "app_intro"; |
| private static final String TAG_OPEN_LOTTIE_FILES = "open_lottie_files"; |
| |
| @Override |
| public StringViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { |
| return new StringViewHolder(parent); |
| } |
| |
| @Override |
| public void onBindViewHolder(StringViewHolder holder, int position) { |
| switch (position) { |
| case 0: |
| holder.bind("Animation Viewer", TAG_VIEWER); |
| break; |
| case 1: |
| holder.bind("Animated Typography", TAG_TYPOGRAPHY); |
| break; |
| case 2: |
| holder.bind("Animated App Tutorial", TAG_APP_INTRO); |
| break; |
| case 3: |
| holder.bind("Open lottiefiles.com", TAG_OPEN_LOTTIE_FILES); |
| break; |
| } |
| } |
| |
| @Override |
| public int getItemCount() { |
| return 4; |
| } |
| } |
| |
| final class StringViewHolder extends RecyclerView.ViewHolder { |
| |
| @BindView(R.id.title) TextView titleView; |
| |
| StringViewHolder(ViewGroup parent) { |
| super(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_holder_file, parent, false)); |
| ButterKnife.bind(this, itemView); |
| } |
| |
| void bind(String title, String tag) { |
| titleView.setText(title); |
| itemView.setTag(tag); |
| |
| itemView.setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View v) { |
| if (FileAdapter.TAG_VIEWER.equals(v.getTag())) { |
| onViewerClicked(); |
| } else if (FileAdapter.TAG_TYPOGRAPHY.equals(v.getTag())) { |
| onTypographyClicked(); |
| } else if (FileAdapter.TAG_APP_INTRO.equals(v.getTag())) { |
| onAppIntroPagerClicked(); |
| } else if (FileAdapter.TAG_OPEN_LOTTIE_FILES.equals(v.getTag())) { |
| onOpenLottieFilesClicked(); |
| } |
| } |
| }); |
| } |
| } |
| } |