android.app.FragmentTransaction#setCustomAnimations ( )源码实例Demo

下面列出了android.app.FragmentTransaction#setCustomAnimations ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: FireFiles   文件: DirectoryFragment.java
private static void show(FragmentManager fm, int type, RootInfo root, DocumentInfo doc, String query, int anim) {
	final Bundle args = new Bundle();
	args.putInt(EXTRA_TYPE, type);
	args.putParcelable(EXTRA_ROOT, root);
	args.putParcelable(EXTRA_DOC, doc);
	args.putString(EXTRA_QUERY, query);

	final FragmentTransaction ft = fm.beginTransaction();
	switch (anim) {
	case ANIM_SIDE:
		args.putBoolean(EXTRA_IGNORE_STATE, true);
		break;
	case ANIM_DOWN:
		ft.setCustomAnimations(R.animator.dir_down, R.animator.dir_frozen);
		break;
	case ANIM_UP:
		ft.setCustomAnimations(R.animator.dir_frozen, R.animator.dir_up);
		break;
	}

	final DirectoryFragment fragment = new DirectoryFragment();
	fragment.setArguments(args);

	ft.replace(R.id.container_directory, fragment);
	ft.commitAllowingStateLoss();
}
 
源代码2 项目: FireFiles   文件: DirectoryFragment.java
private static void show(FragmentManager fm, int type, RootInfo root, DocumentInfo doc, String query, int anim) {
	final Bundle args = new Bundle();
	args.putInt(EXTRA_TYPE, type);
	args.putParcelable(EXTRA_ROOT, root);
	args.putParcelable(EXTRA_DOC, doc);
	args.putString(EXTRA_QUERY, query);

	final FragmentTransaction ft = fm.beginTransaction();
	switch (anim) {
	case ANIM_SIDE:
		args.putBoolean(EXTRA_IGNORE_STATE, true);
		break;
	case ANIM_DOWN:
		ft.setCustomAnimations(R.animator.dir_down, R.animator.dir_frozen);
		break;
	case ANIM_UP:
		ft.setCustomAnimations(R.animator.dir_frozen, R.animator.dir_up);
		break;
	}

	final DirectoryFragment fragment = new DirectoryFragment();
	fragment.setArguments(args);

	ft.replace(R.id.container_directory, fragment);
	ft.commitAllowingStateLoss();
}
 
源代码3 项目: FireFiles   文件: DirectoryFragment.java
private static void show(FragmentManager fm, int type, RootInfo root, DocumentInfo doc, String query, int anim) {
	final Bundle args = new Bundle();
	args.putInt(EXTRA_TYPE, type);
	args.putParcelable(EXTRA_ROOT, root);
	args.putParcelable(EXTRA_DOC, doc);
	args.putString(EXTRA_QUERY, query);

	final FragmentTransaction ft = fm.beginTransaction();
	switch (anim) {
	case ANIM_SIDE:
		args.putBoolean(EXTRA_IGNORE_STATE, true);
		break;
	case ANIM_DOWN:
		ft.setCustomAnimations(R.animator.dir_down, R.animator.dir_frozen);
		break;
	case ANIM_UP:
		ft.setCustomAnimations(R.animator.dir_frozen, R.animator.dir_up);
		break;
	}

	final DirectoryFragment fragment = new DirectoryFragment();
	fragment.setArguments(args);

	ft.replace(R.id.container_directory, fragment);
	ft.commitAllowingStateLoss();
}
 
源代码4 项目: TurboLauncher   文件: Launcher.java
public void onClickTransitionEffectButton(View v, final boolean pageOrDrawer) {
	Bundle bundle = new Bundle();
	bundle.putBoolean(
			TransitionEffectsFragment.PAGE_OR_DRAWER_SCROLL_SELECT,
			pageOrDrawer);
	FragmentManager fragmentManager = getFragmentManager();
	FragmentTransaction fragmentTransaction = fragmentManager
			.beginTransaction();

	mTransitionEffectsFragment = new TransitionEffectsFragment();
	mTransitionEffectsFragment.setArguments(bundle);
	fragmentTransaction.setCustomAnimations(0, 0);
	fragmentTransaction.replace(R.id.launcher, mTransitionEffectsFragment,
			TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT);
	fragmentTransaction.commit();
}
 
源代码5 项目: BlackLight   文件: MainActivity.java
private void switchTo(int id) {
	FragmentTransaction ft = mManager.beginTransaction();
	ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out, android.R.animator.fade_in, android.R.animator.fade_out);
	
	for (int i = 0; i < mFragments.length; i++) {
		Fragment f = mFragments[i];
		
		if (f != null) {
			if (i != id) {
				ft.hide(f);
			} else {
				ft.show(f);
			}
		}
	}
	
	ft.commit();
}
 
源代码6 项目: QuickLyric   文件: MainActivity.java
private LyricsViewFragment init(FragmentManager fragmentManager, boolean startEmpty) {
    LyricsViewFragment lyricsViewFragment = (LyricsViewFragment) fragmentManager.findFragmentByTag(LYRICS_FRAGMENT_TAG);
    if (lyricsViewFragment == null || lyricsViewFragment.isDetached())
        lyricsViewFragment = new LyricsViewFragment();
    lyricsViewFragment.startEmpty(startEmpty);
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.setCustomAnimations(R.animator.slide_in_end, R.animator.slide_out_start, R.animator.slide_in_start, R.animator.slide_out_end);
    if (!lyricsViewFragment.isAdded()) {
        fragmentTransaction.add(id.main_fragment_container, lyricsViewFragment, LYRICS_FRAGMENT_TAG);
    }

    Fragment[] activeFragments = getActiveFragments();
    displayedFragment = getDisplayedFragment(activeFragments);

    for (Fragment fragment : activeFragments)
        if (fragment != null) {
            if (fragment != displayedFragment && !fragment.isHidden()) {
                fragmentTransaction.hide(fragment);
                fragment.onHiddenChanged(true);
            } else if (fragment == displayedFragment)
                fragmentTransaction.show(fragment);
        }
    fragmentTransaction.commit();
    return lyricsViewFragment;
}
 
void addFragmentToStack() {
    mStackLevel++;

    // Instantiate a new fragment.
    Fragment newFragment = CountingFragment.newInstance(mStackLevel);

    // Add the fragment to the activity, pushing this transaction
    // on to the back stack.
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.setCustomAnimations(R.animator.fragment_slide_left_enter,
            R.animator.fragment_slide_left_exit,
            R.animator.fragment_slide_right_enter,
            R.animator.fragment_slide_right_exit);
    ft.replace(R.id.simple_fragment, newFragment);
    ft.addToBackStack(null);
    ft.commit();
}
 
源代码8 项目: HumanBody   文件: HumanBodyActivity.java
/**
 * 设置人体正反面
 * @author leibing
 * @createTime 2016/10/07
 * @lastModify 2016/10/07
 * @param
 * @return
 */
private void setBodyFrontBack() {
    switch (curSexFace){
        case MAN_FRONT:
            // 当为男性正面,则设置为男性反面
            curSexFace = MAN_BACK;
            break;
        case MAN_BACK:
            // 当为男性反面,则设置为男性正面
            curSexFace = MAN_FRONT;
            break;
        case WOMEN_FRONT:
            // 当为女性正面,则设置为女性反面
            curSexFace = WOMEN_BACK;
            break;
        case WOMEN_BACK:
            // 当为女性反面,则设置为女性正面
            curSexFace = WOMEN_FRONT;
            break;
    }

    if (curSexFace == MAN_FRONT || curSexFace == WOMEN_FRONT){
        // 当前面为男性正面或女性正面均设置为正面
        reverseTv.setText("正面");
    }else if (curSexFace == MAN_BACK || curSexFace == WOMEN_BACK){
        // 当前面为男性反面或女性反面均设置为反面
        reverseTv.setText("反面");
    }

    // 执行动画更新fragment内容
    FragmentTransaction fm = getFragmentManager().beginTransaction();
    fm.setCustomAnimations(R.anim.animator_two_enter, R.anim.animator_one_exit);
    fragmentHumanBody = HumanBodyFragment.newInstance(curSexFace);
    fm.replace(R.id.ly_fragment_area, fragmentHumanBody, "FragmentHumanBody");
    fm.commit();
}
 
源代码9 项目: uPods-android   文件: BasicActivity.java
@Override
public void showFragment(int id, Fragment fragment, String tag, IFragmentsManager.FragmentOpenType openType, IFragmentsManager.FragmentAnimationType animationType) {
    android.app.FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    if (animationType == IFragmentsManager.FragmentAnimationType.BOTTOM_TOP) {
        ft.setCustomAnimations(R.animator.animation_fragment_bototm_top, R.animator.animation_fragment_top_bototm,
                R.animator.animation_fragment_bototm_top, R.animator.animation_fragment_top_bototm);
    }
    if (openType == IFragmentsManager.FragmentOpenType.OVERLAY) {
        ft.add(id, fragment, tag);
        if (this instanceof IOverlayable) {
            ((IOverlayable) this).toggleOverlay();
        }
    } else {
        ft.replace(id, fragment, tag);
    }
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

    if (fragment instanceof IControlStackHistory) {//Decide ether fragment should be added to stack history
        if (((IControlStackHistory) fragment).shouldBeAddedToStack()) {
            ft.addToBackStack(tag);
        }
    } else {
        ft.addToBackStack(tag);
    }

    ft.commitAllowingStateLoss();
}
 
源代码10 项目: HumanBody   文件: HumanBodyActivity.java
/**
 * 设置人体正反面
 * @author leibing
 * @createTime 2016/10/07
 * @lastModify 2016/10/07
 * @param
 * @return
 */
private void setBodyFrontBack() {
    switch (curSexFace){
        case MAN_FRONT:
            // 当为男性正面,则设置为男性反面
            curSexFace = MAN_BACK;
            break;
        case MAN_BACK:
            // 当为男性反面,则设置为男性正面
            curSexFace = MAN_FRONT;
            break;
        case WOMEN_FRONT:
            // 当为女性正面,则设置为女性反面
            curSexFace = WOMEN_BACK;
            break;
        case WOMEN_BACK:
            // 当为女性反面,则设置为女性正面
            curSexFace = WOMEN_FRONT;
            break;
    }

    if (curSexFace == MAN_FRONT || curSexFace == WOMEN_FRONT){
        // 当前面为男性正面或女性正面均设置为正面
        reverseTv.setText("正面");
    }else if (curSexFace == MAN_BACK || curSexFace == WOMEN_BACK){
        // 当前面为男性反面或女性反面均设置为反面
        reverseTv.setText("反面");
    }

    // 执行动画更新fragment内容
    FragmentTransaction fm = getFragmentManager().beginTransaction();
    fm.setCustomAnimations(R.anim.animator_two_enter, R.anim.animator_one_exit);
    fragmentHumanBody = HumanBodyFragment.newInstance(curSexFace);
    fm.replace(R.id.ly_fragment_area, fragmentHumanBody, "FragmentHumanBody");
    fm.commit();
}
 
源代码11 项目: Pix-Art-Messenger   文件: ConversationsActivity.java
private void openConversation(Conversation conversation, Bundle extras) {
    ConversationFragment conversationFragment = (ConversationFragment) getFragmentManager().findFragmentById(R.id.secondary_fragment);
    final boolean mainNeedsRefresh;
    if (conversationFragment == null) {
        mainNeedsRefresh = false;
        Fragment mainFragment = getFragmentManager().findFragmentById(R.id.main_fragment);
        if (mainFragment instanceof ConversationFragment) {
            conversationFragment = (ConversationFragment) mainFragment;
        } else {
            conversationFragment = new ConversationFragment();
            FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
            fragmentTransaction.setCustomAnimations(
                    R.animator.fade_right_in, R.animator.fade_right_out,
                    R.animator.fade_right_in, R.animator.fade_right_out
            );
            fragmentTransaction.replace(R.id.main_fragment, conversationFragment);
            fragmentTransaction.addToBackStack(null);
            try {
                fragmentTransaction.commit();
            } catch (IllegalStateException e) {
                Log.w(Config.LOGTAG, "sate loss while opening conversation", e);
                //allowing state loss is probably fine since view intents et all are already stored and a click can probably be 'ignored'
                return;
            }
        }
    } else {
        mainNeedsRefresh = true;
    }
    conversationFragment.reInit(conversation, extras == null ? new Bundle() : extras);
    if (mainNeedsRefresh) {
        refreshFragment(R.id.main_fragment);
    } else {
        invalidateActionBarTitle();
    }
    IntroHelper.showIntro(this, conversation.getMode() == Conversational.MODE_MULTI);
}
 
源代码12 项目: NotificationPeekPort   文件: BlackListActivity.java
/**
 * Replace black list fragment with suggestion list fragment, get ready to show suggestions.
 */
private void showSuggestionFragment() {
    if (mSuggestionFragment == null || mSuggestionShowing) {
        return;
    }

    mSuggestionShowing = true;

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.setCustomAnimations(R.animator.fragment_in, R.animator.fragment_out,
            R.animator.fragment_in, R.animator.fragment_out);

    ft.replace(R.id.fragment_container, mSuggestionFragment)
            .addToBackStack(null).commit();
}
 
源代码13 项目: QuickLyric   文件: MainActivity.java
public void updateLyricsFragment(int outAnim, int inAnim, boolean transition, boolean lock, Lyrics lyrics) {
    LyricsViewFragment lyricsViewFragment = (LyricsViewFragment) getFragmentManager().findFragmentByTag(LYRICS_FRAGMENT_TAG);
    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
    fragmentTransaction.setCustomAnimations(inAnim, outAnim, inAnim, outAnim);
    Fragment activeFragment = getDisplayedFragment(getActiveFragments());
    if (lyricsViewFragment != null && lyricsViewFragment.getView() != null) {
        SharedPreferences preferences = getSharedPreferences("current_music", Context.MODE_PRIVATE);
        String artist = preferences.getString("artist", null);
        String track = preferences.getString("track", null);
        if (lyrics.isLRC() && !(lyrics.getOriginalArtist().equals(artist) && lyrics.getOriginalTitle().equals(track))) {
            LrcView parser = new LrcView(this, null);
            parser.setOriginalLyrics(lyrics);
            parser.setSourceLrc(lyrics.getText());
            lyrics = parser.getStaticLyrics();
        }
        lyricsViewFragment.manualUpdateLock = lock;
        lyricsViewFragment.update(lyrics, lyricsViewFragment.getView(), true);
        if (transition) {
            fragmentTransaction.hide(activeFragment).show(lyricsViewFragment);
            prepareAnimations(activeFragment);
            prepareAnimations(lyricsViewFragment);
        }
        showRefreshFab(true);
        lyricsViewFragment.expandToolbar();
    } else {
        Bundle lyricsBundle = new Bundle();
        try {
            lyricsBundle.putByteArray("lyrics", lyrics.toBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
        lyricsViewFragment = new LyricsViewFragment();
        lyricsViewFragment.setArguments(lyricsBundle);
        if (!(activeFragment instanceof LyricsViewFragment) && activeFragment != null)
            fragmentTransaction.hide(activeFragment).add(id.main_fragment_container, lyricsViewFragment, LYRICS_FRAGMENT_TAG);
        else
            fragmentTransaction.replace(id.main_fragment_container, lyricsViewFragment, LYRICS_FRAGMENT_TAG);
    }
    fragmentTransaction.commitAllowingStateLoss();
}
 
源代码14 项目: UTubeTV   文件: Utils.java
public static void showFragment(Activity activity, Fragment fragment, int resID, int animationType, boolean addToBackStack) {
  // check params and bail if necessary
  if (fragment == null || activity == null) {
    DUtils.log("bad params: " + DUtils.currentMethod());
    return;
  }

  FragmentManager fragmentManager = activity.getFragmentManager();
  FragmentTransaction ft = fragmentManager.beginTransaction();

  switch (animationType) {
    case 0:
      break;
    //      case 1:
    //        ft.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_left, R.animator.slide_in_right, R.animator.slide_out_right);
    //        break;
    //      case 2:
    //        ft.setCustomAnimations(R.animator.slide_in_down, R.animator.slide_out_down, R.animator.slide_in_up, R.animator.slide_out_up);
    //        break;
    //      case 3:
    //        ft.setCustomAnimations(R.animator.fraggy_enter, R.animator.fraggy_exit, R.animator.fraggy_pop_enter, R.animator.fraggy_pop_exit);
    //        break;
    default:
      ft.setCustomAnimations(R.animator.fade_enter, R.animator.fade_exit, R.animator.fade_enter, R.animator.fade_exit);
      break;
  }

  ft.replace(resID, fragment);

  if (addToBackStack)
    ft.addToBackStack(null);

  ft.commit();
}
 
源代码15 项目: codeexamples-android   文件: MainActivity.java
public void onTabSelected(Tab tab, FragmentTransaction ft) {
	// Check if the fragment is already initialized
	if (mFragment == null) {
		// If not, instantiate and add it to the activity
		mFragment = Fragment.instantiate(mActivity, mClass.getName());
		ft.add(android.R.id.content, mFragment, mTag);
	} else {
		// If it exists, simply attach it in order to show it
		ft.setCustomAnimations(android.R.animator.fade_in,
				R.animator.animationtest);
		ft.attach(mFragment);
	}
}
 
源代码16 项目: codeexamples-android   文件: MainActivity.java
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
	if (mFragment != null) {
		ft.setCustomAnimations(android.R.animator.fade_in,
				R.animator.test);
		ft.detach(mFragment);
	}
}
 
源代码17 项目: Girls   文件: MainActivity.java
private void switchToFragment(int i) {
    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
    fragmentTransaction.setCustomAnimations(android.R.animator.fade_in,
            android.R.animator.fade_out);

    if (mCurrentFragmentIndex == i) {
        fragmentTransaction.add(R.id.fragmentContainer, getFragment(i));
        fragmentTransaction.commitAllowingStateLoss();
        mCurrentFragmentIndex = i;
        if (i == BOTTOM_ITEM_TITLE_MEIZI_INDEX) {
            mGirlFragmentAdded = true;
        }
        return;
    }

    fragmentTransaction.hide(getFragment(mCurrentFragmentIndex));

    switch (i) {
        case BOTTOM_ITEM_TITLE_MEIZI_INDEX:
            if (mGirlFragmentAdded) {
                fragmentTransaction.show(getFragment(i));
            } else {
                fragmentTransaction.add(R.id.fragmentContainer, getFragment(i));
                mGirlFragmentAdded = true;
            }
            break;
        case BOTTOM_ITEM_TITLE_ANDROID_INDEX:
            if (mAndroidFragmentAdded) {
                fragmentTransaction.show(getFragment(i));
            } else {
                fragmentTransaction.add(R.id.fragmentContainer, getFragment(i));
                mAndroidFragmentAdded = true;
            }
            break;
        case BOTTOM_ITEM_TITLE_IOS_INDEX:
            if (mIOSFragmentAdded) {
                fragmentTransaction.show(getFragment(i));
            } else {
                fragmentTransaction.add(R.id.fragmentContainer, getFragment(i));
                mIOSFragmentAdded = true;
            }
            break;
        case BOTTOM_ITEM_TITLE_VIDEO_INDEX:
            if (mVideoFragmentAdded) {
                fragmentTransaction.show(getFragment(i));
            } else {
                fragmentTransaction.add(R.id.fragmentContainer, getFragment(i));
                mVideoFragmentAdded = true;
            }
            break;
        case BOTTOM_ITEM_TITLE_WEB_INDEX:
            if (mWebFragmentAdded) {
                fragmentTransaction.show(getFragment(i));
            } else {
                fragmentTransaction.add(R.id.fragmentContainer, getFragment(i));
                mWebFragmentAdded = true;
            }
            break;
        default:
            break;
    }


    fragmentTransaction.commitAllowingStateLoss();
    mCurrentFragmentIndex = i;
}
 
源代码18 项目: QuickLyric   文件: MainActivity.java
public void updateLyricsFragment(int outAnim, String... params) { // Should only be called from SearchFragment or IdDecoder
    String artist = params[0];
    String song = params[1];
    String url = null;
    if (params.length > 2)
        url = params[2];
    LyricsViewFragment lyricsViewFragment = (LyricsViewFragment)
            getFragmentManager().findFragmentByTag(LYRICS_FRAGMENT_TAG);
    if (lyricsViewFragment != null) {
        if (!lyricsViewFragment.isActiveFragment) {
            selectItem(0);
        }
        lyricsViewFragment.fetchLyrics(true, null, 0L, params);
    } else {
        Lyrics lyrics = new Lyrics(Lyrics.SEARCH_ITEM);
        lyrics.setArtist(artist);
        lyrics.setTitle(song);
        lyrics.setURL(url);
        Bundle lyricsBundle = new Bundle();
        try {
            if (artist != null && song != null)
                lyricsBundle.putByteArray("lyrics", lyrics.toBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
        lyricsViewFragment = new LyricsViewFragment();
        lyricsViewFragment.setArguments(lyricsBundle);

        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.setCustomAnimations(R.animator.slide_in_start, outAnim, R.animator.slide_in_start, outAnim);
        Fragment activeFragment = getDisplayedFragment(getActiveFragments());
        if (activeFragment != null) {
            prepareAnimations(activeFragment);
            fragmentTransaction.hide(activeFragment);
        }
        fragmentTransaction.add(id.main_fragment_container, lyricsViewFragment, LYRICS_FRAGMENT_TAG);
        lyricsViewFragment.isActiveFragment = true;
        fragmentTransaction.commit();
    }
    if (drawer instanceof DrawerLayout && !mDrawerToggle.isDrawerIndicatorEnabled()) {
        mDrawerToggle.setDrawerIndicatorEnabled(true);
        ((DrawerLayout) drawer).setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    }
}
 
源代码19 项目: QuickLyric   文件: MainActivity.java
private void selectItem(int position) {
    FragmentManager fragmentManager = getFragmentManager();
    Fragment newFragment;
    String tag;
    switch (position) {
        default:
            // Lyrics
            tag = LYRICS_FRAGMENT_TAG;
            newFragment = fragmentManager.findFragmentByTag(tag);
            if (newFragment == null || !(newFragment instanceof LyricsViewFragment))
                newFragment = new LyricsViewFragment();
            ((LyricsViewFragment) newFragment).showTransitionAnim = true;
            break;
        case 1:
            // Recent Tracks
            tag = RECENT_TRACKS_FRAGMENT_TAG;
            newFragment = fragmentManager.findFragmentByTag(tag);
            if (newFragment == null || !(newFragment instanceof RecentTracksFragment))
                newFragment = new RecentTracksFragment();
            ((RecentTracksFragment) newFragment).showTransitionAnim = true;
            break;
        case 2:
            // Saved Lyrics
            tag = LOCAL_LYRICS_FRAGMENT_TAG;
            newFragment = fragmentManager.findFragmentByTag(tag);
            if (newFragment == null || !(newFragment instanceof LocalLyricsFragment))
                newFragment = new LocalLyricsFragment();
            ((LocalLyricsFragment) newFragment).showTransitionAnim = true;
            break;
        case 3:
            // Separator
            return;
        case 4:
            // Settings
            if (drawer instanceof DrawerLayout)
                ((DrawerLayout) drawer).closeDrawer(drawerView);
            drawer.postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent settingsIntent = new Intent(MainActivity.this, SettingsActivity.class);
                    startActivityForResult(settingsIntent, 77);
                }
            }, 250);
            return;
        case 5:
            // Feedback
            return;
        case 6:
            // About Dialog
            if (drawer instanceof DrawerLayout)
                ((DrawerLayout) drawer).closeDrawer(drawerView);
            drawer.postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent aboutIntent = new Intent(MainActivity.this, AboutActivity.class);
                    startActivityForResult(aboutIntent, 77);
                }
            }, 250);
            return;
    }

    final Fragment activeFragment = getDisplayedFragment(getActiveFragments());
    prepareAnimations(activeFragment);

    // Insert the fragment by replacing any existing fragment
    if (newFragment != activeFragment) {
        if (mActionMode != null)
            mActionMode.finish();
        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.setCustomAnimations(R.animator.slide_in_start, R.animator.slide_out_start, R.animator.slide_in_start, R.animator.slide_out_start);
        fragmentTransaction.hide(activeFragment);
        if (newFragment.isAdded())
            fragmentTransaction.show(newFragment);
        else
            fragmentTransaction.add(id.main_fragment_container, newFragment, tag);
        ((CollapsingToolbarLayout) findViewById(R.id.toolbar_layout)).setCollapsedTitleTextColor(Color.WHITE);
        fragmentTransaction.commitAllowingStateLoss();
        if (activeFragment instanceof LyricsViewFragment || newFragment instanceof LyricsViewFragment) {
            final Fragment newFragmentCopy = newFragment;
            activeFragment.getView().postDelayed(() -> {
                if (activeFragment instanceof LyricsViewFragment && activeFragment.getView() != null) {
                    expandToolbar(false);
                    showRefreshFab(false);
                } else if (newFragmentCopy instanceof LyricsViewFragment && activeFragment.getView() != null) {
                    expandToolbar(true);
                    showRefreshFab(true);
                }
            }, getResources().getInteger(android.R.integer.config_longAnimTime));
        }
        MaterialSuggestionsSearchView suggestionsSearchView = findViewById(id.material_search_view);
        if (suggestionsSearchView.isSearchOpen())
            suggestionsSearchView.closeSearch();
    }
    if (drawer instanceof DrawerLayout && (newFragment == activeFragment))
        ((DrawerLayout) drawer).closeDrawer(drawerView);
}
 
源代码20 项目: AnimationApiDemos   文件: OrreryActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.orrery_main);

	ImageView orrery = (ImageView) findViewById(R.id.orrery);
	OrreryDrawable myOrreryDrawable = OrreryDrawable.Create();
	orrery.setImageDrawable(myOrreryDrawable);

	// ================================================================
	// 分别控制两种属性的动画
	// PropertyValuesHolder earthPositionValues = PropertyValuesHolder
	// .ofFloat("EarthPosition", 0, (float) (2 * Math.PI));
	// PropertyValuesHolder moonPositionValues =
	// PropertyValuesHolder.ofFloat(
	// "MoonPosition", 0, (float) (2 * Math.PI * 13));
	// ObjectAnimator orreryAnimator =
	// ObjectAnimator.ofPropertyValuesHolder(
	// myOrreryDrawable, earthPositionValues, moonPositionValues);

	// ================================================================
	// 使用新的数据结构,同时控制地球和月球
	OrreryDrawable.SolarSystemData startSolarSystemData = new OrreryDrawable.SolarSystemData();
	startSolarSystemData.rotationEarth = 0;
	startSolarSystemData.rotationMoon = 0;
	OrreryDrawable.SolarSystemData endSolarSystemData = new OrreryDrawable.SolarSystemData();
	endSolarSystemData.rotationEarth = (float) (2 * Math.PI);
	endSolarSystemData.rotationMoon = (float) (2 * Math.PI * 13);
	// 使用自定义的Evaluator
	OrreryEvaluator orreryEvaluator = new OrreryEvaluator();
	// ObjectAnimator orreryAnimator = ObjectAnimator.ofObject(
	// myOrreryDrawable, "SolarSystemData", orreryEvaluator,
	// startSolarSystemData, endSolarSystemData);

	// ================================================================
	// 尝试一下Keyframe
	Keyframe startFrame = Keyframe.ofObject(0, startSolarSystemData);
	Keyframe endFrame = Keyframe.ofObject(1, endSolarSystemData);
	PropertyValuesHolder solarSystemFrames = PropertyValuesHolder
			.ofKeyframe("SolarSystemData", startFrame, endFrame);
	solarSystemFrames.setEvaluator(orreryEvaluator);

	ObjectAnimator orreryAnimator = ObjectAnimator.ofPropertyValuesHolder(
			myOrreryDrawable, solarSystemFrames);

	// Default value is 10
	Log.i("FrameDelay", "delay: " + ValueAnimator.getFrameDelay());
	ValueAnimator.setFrameDelay(50);

	orreryAnimator.setDuration(60000);
	orreryAnimator.setInterpolator(new LinearInterpolator());
	orreryAnimator.setRepeatCount(ValueAnimator.INFINITE);
	orreryAnimator.setRepeatMode(ValueAnimator.RESTART);

	orreryAnimator.start();

	// add the fragment:
	FragmentTransaction ft = getFragmentManager().beginTransaction();

	ft.setCustomAnimations(R.anim.fade_in, android.R.animator.fade_out);
	ft.add(R.id.frame, new OrreryInfo());
	ft.commit();
}