зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1317446 - 2. Add TabStripItemAnimator for TabStripView item animations. r=sebastian
MozReview-Commit-ID: AF2pwFMvWDe --HG-- extra : rebase_source : c47ed9eae20dfa5ba5b6ce5a3e64250ef47073e1
This commit is contained in:
Родитель
2a0c005f63
Коммит
87f9e0dca6
|
@ -0,0 +1,47 @@
|
||||||
|
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
package org.mozilla.gecko.tabs;
|
||||||
|
|
||||||
|
import org.mozilla.gecko.widget.DefaultItemAnimatorBase;
|
||||||
|
|
||||||
|
import android.support.v4.view.ViewCompat;
|
||||||
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
class TabStripItemAnimator extends DefaultItemAnimatorBase {
|
||||||
|
public TabStripItemAnimator(int animationDuration) {
|
||||||
|
setAddDuration(animationDuration);
|
||||||
|
setSupportsChangeAnimations(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean preAnimateRemoveImpl(final RecyclerView.ViewHolder holder) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean preAnimateAddImpl(final RecyclerView.ViewHolder holder) {
|
||||||
|
resetAnimation(holder);
|
||||||
|
final View view = holder.itemView;
|
||||||
|
view.setTranslationY(view.getHeight());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void animateAddImpl(final RecyclerView.ViewHolder holder) {
|
||||||
|
ViewCompat.animate(holder.itemView)
|
||||||
|
.setDuration(getAddDuration())
|
||||||
|
.setListener(new DefaultAddVpaListener(holder))
|
||||||
|
.translationY(0)
|
||||||
|
.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void resetViewProperties(View view) {
|
||||||
|
view.setTranslationX(0);
|
||||||
|
view.setTranslationY(0);
|
||||||
|
}
|
||||||
|
}
|
|
@ -58,7 +58,7 @@ public class TabStripView extends RecyclerView {
|
||||||
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
|
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
|
||||||
setLayoutManager(layoutManager);
|
setLayoutManager(layoutManager);
|
||||||
|
|
||||||
// TODO add item animator.
|
setItemAnimator(new TabStripItemAnimator(ANIM_TIME_MS));
|
||||||
|
|
||||||
// TODO add item decoration.
|
// TODO add item decoration.
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,6 @@ public class TabStripView extends RecyclerView {
|
||||||
// Make sure we didn't miss any resets after animations etc.
|
// Make sure we didn't miss any resets after animations etc.
|
||||||
child.setTranslationX(0);
|
child.setTranslationX(0);
|
||||||
child.setTranslationY(0);
|
child.setTranslationY(0);
|
||||||
child.setAlpha(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -855,6 +855,7 @@ if max_sdk_version >= 11:
|
||||||
gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
|
gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
|
||||||
'tabs/TabStrip.java',
|
'tabs/TabStrip.java',
|
||||||
'tabs/TabStripAdapter.java',
|
'tabs/TabStripAdapter.java',
|
||||||
|
'tabs/TabStripItemAnimator.java',
|
||||||
'tabs/TabStripItemView.java',
|
'tabs/TabStripItemView.java',
|
||||||
'tabs/TabStripView.java'
|
'tabs/TabStripView.java'
|
||||||
]]
|
]]
|
||||||
|
|
Загрузка…
Ссылка в новой задаче