1 // CHECKSTYLE:OFF Generated code 2 /* This file is auto-generated from OnboardingDemoFragment.java. DO NOT MODIFY. */ 3 4 /* 5 * Copyright (C) 2014 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 8 * in compliance with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software distributed under the License 13 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 14 * or implied. See the License for the specific language governing permissions and limitations under 15 * the License. 16 */ 17 package com.example.android.leanback; 18 19 import android.animation.Animator; 20 import android.animation.AnimatorListenerAdapter; 21 import android.animation.AnimatorSet; 22 import android.animation.ObjectAnimator; 23 import android.graphics.drawable.AnimationDrawable; 24 import android.view.LayoutInflater; 25 import android.view.View; 26 import android.view.ViewGroup; 27 import android.widget.ImageView; 28 29 import androidx.leanback.app.OnboardingSupportFragment; 30 31 import org.jspecify.annotations.NonNull; 32 import org.jspecify.annotations.Nullable; 33 34 import java.util.ArrayList; 35 36 public class OnboardingDemoSupportFragment extends OnboardingSupportFragment { 37 private static final long ANIMATION_DURATION = 1000; 38 39 private static final int[] CONTENT_BACKGROUNDS = { 40 R.drawable.tv_bg, 41 R.drawable.gallery_photo_6, 42 R.drawable.gallery_photo_8 43 }; 44 45 private static final int[] CONTENT_ANIMATIONS = { 46 R.drawable.tv_content, 47 android.R.drawable.stat_sys_download, 48 android.R.drawable.ic_popup_sync 49 }; 50 51 private String[] mTitles; 52 private String[] mDescriptions; 53 54 private View mBackgroundView; 55 private View mContentView; 56 private ImageView mContentBackgroundView; 57 private ImageView mContentAnimationView; 58 59 private Animator mContentAnimator; 60 61 @SuppressWarnings("deprecation") 62 @Override onAttach(android.app.Activity activity)63 public void onAttach(android.app.Activity activity) { 64 super.onAttach(activity); 65 mTitles = getResources().getStringArray(R.array.onboarding_page_titles); 66 mDescriptions = getResources().getStringArray(R.array.onboarding_page_descriptions); 67 setLogoResourceId(R.drawable.ic_launcher); 68 } 69 70 @Override getPageCount()71 protected int getPageCount() { 72 return mTitles.length; 73 } 74 75 @Override getPageTitle(int i)76 protected CharSequence getPageTitle(int i) { 77 return mTitles[i]; 78 } 79 80 @Override getPageDescription(int i)81 protected CharSequence getPageDescription(int i) { 82 return mDescriptions[i]; 83 } 84 85 @Override onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup)86 protected View onCreateBackgroundView(LayoutInflater layoutInflater, ViewGroup viewGroup) { 87 mBackgroundView = layoutInflater.inflate(R.layout.onboarding_image, viewGroup, false); 88 return mBackgroundView; 89 } 90 91 @Override onCreateContentView(@onNull LayoutInflater layoutInflater, @NonNull ViewGroup viewGroup)92 protected @Nullable View onCreateContentView(@NonNull LayoutInflater layoutInflater, 93 @NonNull ViewGroup viewGroup) { 94 mContentView = layoutInflater.inflate(R.layout.onboarding_content, viewGroup, false); 95 mContentBackgroundView = (ImageView) mContentView.findViewById(R.id.background_image); 96 mContentAnimationView = (ImageView) mContentView.findViewById(R.id.animation_image); 97 return mContentView; 98 } 99 100 @Override onCreateForegroundView(@onNull LayoutInflater layoutInflater, @NonNull ViewGroup viewGroup)101 protected @Nullable View onCreateForegroundView(@NonNull LayoutInflater layoutInflater, 102 @NonNull ViewGroup viewGroup) { 103 return null; 104 } 105 106 @Override onCreateEnterAnimation()107 protected Animator onCreateEnterAnimation() { 108 ArrayList<Animator> animators = new ArrayList<>(); 109 animators.add(createFadeInAnimator(mBackgroundView)); 110 mContentBackgroundView.setImageResource(CONTENT_BACKGROUNDS[0]); 111 mContentAnimationView.setImageResource(CONTENT_ANIMATIONS[0]); 112 mContentAnimator = createFadeInAnimator(mContentView); 113 animators.add(mContentAnimator); 114 AnimatorSet set = new AnimatorSet(); 115 set.playTogether(animators); 116 set.addListener(new AnimatorListenerAdapter() { 117 @Override 118 public void onAnimationEnd(Animator animation) { 119 ((AnimationDrawable) mContentAnimationView.getDrawable()).start(); 120 } 121 }); 122 return set; 123 } 124 125 @Override onPageChanged(final int newPage, int previousPage)126 protected void onPageChanged(final int newPage, int previousPage) { 127 if (mContentAnimator != null) { 128 mContentAnimator.cancel(); 129 } 130 ((AnimationDrawable) mContentAnimationView.getDrawable()).stop(); 131 Animator fadeOut = createFadeOutAnimator(mContentView); 132 fadeOut.addListener(new AnimatorListenerAdapter() { 133 @Override 134 public void onAnimationEnd(Animator animation) { 135 mContentBackgroundView.setImageResource(CONTENT_BACKGROUNDS[newPage]); 136 mContentAnimationView.setImageResource(CONTENT_ANIMATIONS[newPage]); 137 } 138 }); 139 Animator fadeIn = createFadeInAnimator(mContentView); 140 fadeIn.addListener(new AnimatorListenerAdapter() { 141 @Override 142 public void onAnimationEnd(Animator animation) { 143 ((AnimationDrawable) mContentAnimationView.getDrawable()).start(); 144 } 145 }); 146 AnimatorSet set = new AnimatorSet(); 147 set.playSequentially(fadeOut, fadeIn); 148 set.start(); 149 mContentAnimator = set; 150 } 151 createFadeInAnimator(View view)152 private Animator createFadeInAnimator(View view) { 153 return ObjectAnimator.ofFloat(view, View.ALPHA, 0.0f, 1.0f).setDuration(ANIMATION_DURATION); 154 } 155 createFadeOutAnimator(View view)156 private Animator createFadeOutAnimator(View view) { 157 return ObjectAnimator.ofFloat(view, View.ALPHA, 1.0f, 0.0f).setDuration(ANIMATION_DURATION); 158 } 159 160 @Override onFinishFragment()161 protected void onFinishFragment() { 162 getActivity().finish(); 163 } 164 } 165