@Override protected void preAnimateRemoveImpl(RecyclerView.ViewHolder holder) { // @TODO https://code.google.com/p/android/issues/detail?id=80863 // ViewCompat.setPivotY(holder.itemView, 0); holder.itemView.setPivotY(0); }
static void setPivotY(View view, float pivotY) { view.setPivotY(pivotY); }
public AnimationBuilder pivotY(float pivotY) { for (View view : views) { view.setPivotY(pivotY); } return this; }
@Override protected void preAnimateRemoveImpl(RecyclerView.ViewHolder holder) { // @TODO https://code.google.com/p/android/issues/detail?id=80863 // ViewCompat.setPivotY(holder.itemView, holder.itemView.getHeight()); holder.itemView.setPivotY(holder.itemView.getHeight()); }
private void reset(View view) { view.setPivotX(view.getMeasuredWidth() / 2.0f); view.setPivotY(view.getMeasuredHeight() / 2.0f); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { View icon = holder.itemView.findViewById(R.id.icon); icon.setRotationX(30); View right = holder.itemView.findViewById(R.id.right); right.setPivotX(0); right.setPivotY(0); right.setRotationY(90); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { // @TODO https://code.google.com/p/android/issues/detail?id=80863 // ViewCompat.setPivotY(holder.itemView, holder.itemView.getHeight()); holder.itemView.setPivotY(holder.itemView.getHeight()); ViewCompat.setScaleX(holder.itemView, 0); ViewCompat.setScaleY(holder.itemView, 0); }
public List<Animator> getAnimators() { final List<Animator> animations = new ArrayList<>(); if(viewToMove != null){ if (pivotX != null) { viewToMove.setPivotX(pivotX); } if (pivotY != null) { viewToMove.setPivotY(pivotY); } } if (scaleX != null) { animations.add(ObjectAnimator.ofFloat(viewToMove, View.SCALE_X, scaleX)); } if (scaleY != null) { animations.add(ObjectAnimator.ofFloat(viewToMove, View.SCALE_Y, scaleY)); } return animations; } }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { // @TODO https://code.google.com/p/android/issues/detail?id=80863 // ViewCompat.setPivotY(holder.itemView, 0); holder.itemView.setPivotY(0); ViewCompat.setScaleX(holder.itemView, 0); ViewCompat.setScaleY(holder.itemView, 0); }
@Override public void setPivotY(float pivotY) { super.setPivotY(pivotY); invalidateParentIfNeeded(); fireOnTransformationChangedListener(); }
viewItem.setPivotY(viewItem.getMeasuredHeight()); viewItem.setPivotX(viewItem.getMeasuredWidth() / 2); viewItem.setScaleX(scale);
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int num = getChildCount(); for (int i = 0; i < num; i++) { View itemView = getChildAt(i); int left = originX.get(i); int top = (getMeasuredHeight() - everyHeight) / 2; int right = left + everyWidth; int bottom = top + everyHeight; itemView.layout(left, top, right, bottom); itemView.setPivotX(0); itemView.setPivotY(everyHeight / 2); adjustScale(itemView); adjustAlpha(itemView); } }
@Test public void pivotY() { view.setPivotY(10f); assertThat(view.getPivotY()).isEqualTo(10f); }
avatar.setPivotY(0); texts.setPivotX(0); texts.setPivotY(0);
static void setPivotY(View view, float pivotY) { view.setPivotY(pivotY); }
private boolean isBig = false; ... public void onClick(View v) { v.setPivotY(0f); if(!isBig){ ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 2f); scaleY.setInterpolator(new DecelerateInterpolator()); scaleY.start(); isBig = true; } else{ ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 1f); scaleY.setInterpolator(new DecelerateInterpolator()); scaleY.start(); isBig = false; } }
private static void runEnterAnimation(MoveData moveData, TimeInterpolator interpolator, Animator.AnimatorListener listener) { final View toView = moveData.toView; toView.setPivotX(0); toView.setPivotY(0); toView.setScaleX(moveData.widthScale); toView.setScaleY(moveData.heightScale); toView.setTranslationX(moveData.leftDelta); toView.setTranslationY(moveData.topDelta); toView.animate() .setDuration(moveData.duration) .scaleX(1) .scaleY(1) .translationX(0) .translationY(0) .setListener(listener) .setInterpolator(interpolator); }
@Override public final void setPivot(@NonNull final Axis axis, @NonNull final AbstractItem item, final float pivot) { Condition.INSTANCE.ensureNotNull(axis, "The axis may not be null"); Condition.INSTANCE.ensureNotNull(item, "The item may not be null"); View view = item.getView(); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view.getLayoutParams(); if (getOrientationInvariantAxis(axis) == Axis.DRAGGING_AXIS) { float newPivot = pivot - layoutParams.topMargin - tabTitleContainerHeight; view.setTranslationY(view.getTranslationY() + (view.getPivotY() - newPivot) * (1 - view.getScaleY())); view.setPivotY(newPivot); } else { float newPivot = pivot - layoutParams.leftMargin; view.setTranslationX(view.getTranslationX() + (view.getPivotX() - newPivot) * (1 - view.getScaleX())); view.setPivotX(newPivot); } }
private static void computeRenderOffset(View view, float pivotX, float pivotY) { if (view.getPivotX() == pivotX && view.getPivotY() == pivotY) { return; } float[] prevPoint = {0.0f, 0.0f}; view.getMatrix().mapPoints(prevPoint); view.setPivotX(pivotX); view.setPivotY(pivotY); float[] currPoint = {0.0f, 0.0f}; view.getMatrix().mapPoints(currPoint); float offsetX = currPoint[0] - prevPoint[0]; float offsetY = currPoint[1] - prevPoint[1]; view.setTranslationX(view.getTranslationX() - offsetX); view.setTranslationY(view.getTranslationY() - offsetY); }
public void setScale(float scale) { scale = getConstrainedDestinationScale(scale); if (mScale != scale) { float previous = mScale; mScale = scale; resetScrollPositionToWithinLimits(); if (mShouldVisuallyScaleContents && hasContent()) { getChild().setPivotX(0); getChild().setPivotY(0); // TODO: this is a hassle to prefab but would be more efficient getChild().setScaleX(mScale); getChild().setScaleY(mScale); } if (mScaleChangedListener != null) { mScaleChangedListener.onScaleChanged(this, mScale, previous); } invalidate(); } }