Ich möchte einige Animationen machen, wenn die Actionbar animiert. Allerdings kenne ich die Dauer der Actionbar-Animation nicht.Was ist die Dauer der nativen actionbar.show() und hide() Animation
Antwort
Leider die native ActionBar belebende Zeit scheint 4.1 in der Android source code nach Version hartcodiert werden (ohne Attribute, keine Dimensionen, keine Methoden) und es wird auf 250ms :
Beispiel des implementaiton von actionbar.hide()
Methode in Android 4.1/4.4:
public void doHide(boolean fromSystem) {
if (mCurrentShowAnim != null) {
mCurrentShowAnim.end();
}
if (mCurWindowVisibility == View.VISIBLE && (mShowHideAnimationEnabled
|| fromSystem)) {
mContainerView.setAlpha(1);
mContainerView.setTransitioning(true);
AnimatorSet anim = new AnimatorSet();
float endingY = -mContainerView.getHeight();
if (fromSystem) {
int topLeft[] = {0, 0};
mContainerView.getLocationInWindow(topLeft);
endingY -= topLeft[1];
}
ObjectAnimator a = ObjectAnimator.ofFloat(mContainerView, View.TRANSLATION_Y, endingY);
a.addUpdateListener(mUpdateListener);
AnimatorSet.Builder b = anim.play(a);
if (mContentAnimations && mContentView != null) {
b.with(ObjectAnimator.ofFloat(mContentView, View.TRANSLATION_Y,
0, endingY));
}
if (mSplitView != null && mSplitView.getVisibility() == View.VISIBLE) {
mSplitView.setAlpha(1);
b.with(ObjectAnimator.ofFloat(mSplitView, View.TRANSLATION_Y,
mSplitView.getHeight()));
}
anim.setInterpolator(AnimationUtils.loadInterpolator(mContext,
com.android.internal.R.interpolator.accelerate_cubic));
anim.setDuration(250);
anim.addListener(mHideListener);
mCurrentShowAnim = anim;
anim.start();
} else {
mHideListener.onAnimationEnd(null);
Dies geschieht auch auf Lollipop:
public void doHide(boolean fromSystem) {
if (mCurrentShowAnim != null) {
mCurrentShowAnim.end();
}
if (mCurWindowVisibility == View.VISIBLE && (mShowHideAnimationEnabled
|| fromSystem)) {
mContainerView.setAlpha(1);
mContainerView.setTransitioning(true);
AnimatorSet anim = new AnimatorSet();
float endingY = -mContainerView.getHeight();
if (fromSystem) {
int topLeft[] = {0, 0};
mContainerView.getLocationInWindow(topLeft);
endingY -= topLeft[1];
}
ObjectAnimator a = ObjectAnimator.ofFloat(mContainerView, View.TRANSLATION_Y, endingY);
a.addUpdateListener(mUpdateListener);
AnimatorSet.Builder b = anim.play(a);
if (mContentAnimations && mContentView != null) {
b.with(ObjectAnimator.ofFloat(mContentView, View.TRANSLATION_Y,
0, endingY));
}
if (mSplitView != null && mSplitView.getVisibility() == View.VISIBLE) {
mSplitView.setAlpha(1);
b.with(ObjectAnimator.ofFloat(mSplitView, View.TRANSLATION_Y,
mSplitView.getHeight()));
}
anim.setInterpolator(AnimationUtils.loadInterpolator(mContext,
com.android.internal.R.interpolator.accelerate_cubic));
anim.setDuration(250);
anim.addListener(mHideListener);
mCurrentShowAnim = anim;
anim.start();
} else {
mHideListener.onAnimationEnd(null);
}
}
Vor 4.1 (z.B. 4.0.1) Es gibt keinen fest codierten Wert für die Dauer (tatsächlich gibt es überhaupt keinen Wert). Sie können Reflection trotzdem verwenden, um nach der ersten Animation auf die Dauer Animator
zuzugreifen. Das Feld für den Zugriff ist folgende:
private Animator mCurrentShowAnim;
Ich weiß, dass dies keine vollständige Antwort, aber ich denke, es ist auf jeden Fall hilfreich sein könnte.
eh @vincentzhou Ihre Frage nicht gut strukturiert ist, aber ich, was diese können Sie einige Führer geben, wie die Zeit einzustellen, Sie möchten, dass Sie Element in JavaScript manipulieren
$(document).ready(function(){
$('#action').show();
setTimeout(function() {
$('#action').fadeOut();
}, 5000);
});
dies wird das Element angezeigt mit id="action"
für 5s. hoffe es kann helfen
ActionBar.Show - Zeigt die ActionBar an, wenn sie gerade nicht angezeigt wird. Daran ist keine Dauer geknüpft. Es macht die ActionBar sichtbar, bis ein actionBar.Hide aufgerufen wird.
Hope this klärt
Ich weiß. Aber wenn Sie actionbar.show() aufrufen, wird die Aktionsleiste mit einer Animation angezeigt. – vincentzhou
Ich meine die Dauer dieser Animation. – vincentzhou
- 1. Storyboard Dauer Abschneiden Animation
- 2. zunehmende Dauer der Bildskalierung Animation (CGAffineTransformMakeScale)
- 3. Hide UINavBar und UITabBar gleichzeitig mit Animation
- 4. Ändern Sie die jquery show()/hide() Animation?
- 5. Was ist der Unterschied zwischen "ng-show" und "ng-hide"?
- 6. Hide div nach CSS3 Animation
- 7. Android: Animation funktioniert nicht für die angegebene Dauer
- 8. Berechne die Dauer und die Dauer des Mitarbeiters
- 9. Was ist der maximale Wert für die Dauer (CFTimeInterval) für eine CAAnimationGroup?
- 10. Was ist los mit meiner Animation?
- 11. dispatch_after und [UIView Animation: Dauer] passieren sofort (sollten aber nicht)
- 12. Berechnen Sie die Dauer einer Flash-Animation von einer SWF?
- 13. Was ist der Unterschied zwischen einem Animator und einer Animation?
- 14. UIView-Animation mit Dauer Bad Zugang Ausgabe
- 15. CAShapeLayer Animation Flash, wenn ich die Dauer sehr klein
- 16. Was ist der maximale Wert für Java-Dauer
- 17. Animation Dauer sollte relativ zu Höhe und Breite sein
- 18. show hide animation in eckig mit css
- 19. hide/show fab with scale animation
- 20. Was ist und was ist die Verwendung der Closure „Richtlinie“
- 21. Was ist der Unterschied zwischen Dalvik Heap und nativen Heap in Android? welcher ist fixiert?
- 22. Wie ändert man die Dauer einer jQuery-Animation, bevor sie abgeschlossen ist?
- 23. Was ist der beste Weg, um die Dauer in MySQL zu speichern
- 24. Dauer der EMMS-Befehlsausführung?
- 25. Was ist der beste Weg, um die Dauer einer API-Aufruf mit Guzzle 6
- 26. Wählen Sie Datensätze, die Dauer der Startdate und EndDate haben, die nicht von Dauer von bestimmtem Startdatum und EndDate bedeckt
- 27. Die Funktion setTimeout() wurde vor der Dauer der Zeitüberschreitung aufgerufen.
- 28. UIView Animationsblock: Wenn Dauer 0 ist, ist es das gleiche wie ohne Animation?
- 29. Was ist die Mathematik hinter dieser ray-like Animation?
- 30. Benutzerdefinierte Animation zwischen UIViewControllers mit TransitionFromViewController: toViewController: Dauer
Es tut mir leid, aber ich denke, dass ich eine Frage zu android bin zu fragen. – vincentzhou