下面列出了android.view.View#setScrollY ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
TransitionValues endValues) {
if (startValues == null || endValues == null) {
return null;
}
final View view = endValues.view;
int startX = (Integer) startValues.values.get(PROPNAME_SCROLL_X);
int endX = (Integer) endValues.values.get(PROPNAME_SCROLL_X);
int startY = (Integer) startValues.values.get(PROPNAME_SCROLL_Y);
int endY = (Integer) endValues.values.get(PROPNAME_SCROLL_Y);
Animator scrollXAnimator = null;
Animator scrollYAnimator = null;
if (startX != endX) {
view.setScrollX(startX);
scrollXAnimator = ObjectAnimator.ofInt(view, "scrollX", startX, endX);
}
if (startY != endY) {
view.setScrollY(startY);
scrollYAnimator = ObjectAnimator.ofInt(view, "scrollY", startY, endY);
}
return TransitionUtils.mergeAnimators(scrollXAnimator, scrollYAnimator);
}
private void scale(AppBarLayout abl, View target, int dy) {
mTotalDy += -dy;
mTotalDy = Math.min(mTotalDy, TARGET_HEIGHT);
mLastScale = Math.max(1f, 1f + mTotalDy / TARGET_HEIGHT);
ViewCompat.setScaleX(mTargetView, mLastScale);
ViewCompat.setScaleY(mTargetView, mLastScale);
mLastBottom = mParentHeight + (int) (mTargetViewHeight / 2 * (mLastScale - 1));
abl.setBottom(mLastBottom);
target.setScrollY(0);
middleLayout.setTop(mLastBottom - mMiddleHeight);
middleLayout.setBottom(mLastBottom);
if (onProgressChangeListener != null) {
float progress = Math.min((mLastScale - 1) / MAX_REFRESH_LIMIT, 1);//计算0~1的进度
onProgressChangeListener.onProgressChange(progress, false);
}
}
private void scale(AppBarLayout abl, View target, int dy) {
mTotalDy += -dy;
mTotalDy = Math.min(mTotalDy, TARGET_HEIGHT);
Log.e(TAG, "scale: mTotalDy==" + mTotalDy);
mLastScale = Math.max(1f, 1f + mTotalDy / TARGET_HEIGHT);
mTargetView.setScaleX(mLastScale);
mTargetView.setScaleY(mLastScale);
mLastBottom = mParentHeight + (int) (mTargetViewHeight / 2 * (mLastScale - 1));
// abl.setBottom(mLastBottom);
target.setScrollY(0);
//
// middleLayout.setTop(mLastBottom - mMiddleHeight);
// middleLayout.setBottom(mLastBottom);
if (onProgressChangeListener != null) {
float progress = Math.min((mLastScale - 1) / MAX_REFRESH_LIMIT, 1);//计算0~1的进度
onProgressChangeListener.onProgressChange(progress, false);
}
}
@Nullable
@Override
public Animator createAnimator(@NonNull ViewGroup sceneRoot, @Nullable TransitionValues startValues,
@Nullable TransitionValues endValues) {
if (startValues == null || endValues == null ||
Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return null;
}
final View view = endValues.view;
int startX = (Integer) startValues.values.get(PROPNAME_SCROLL_X);
int endX = (Integer) endValues.values.get(PROPNAME_SCROLL_X);
int startY = (Integer) startValues.values.get(PROPNAME_SCROLL_Y);
int endY = (Integer) endValues.values.get(PROPNAME_SCROLL_Y);
Animator scrollXAnimator = null;
Animator scrollYAnimator = null;
if (startX != endX) {
view.setScrollX(startX);
scrollXAnimator = ObjectAnimator.ofInt(view, "scrollX", startX, endX);
}
if (startY != endY) {
view.setScrollY(startY);
scrollYAnimator = ObjectAnimator.ofInt(view, "scrollY", startY, endY);
}
return TransitionUtils.mergeAnimators(scrollXAnimator, scrollYAnimator);
}
private void scale(AppBarLayout abl, View target, int dy) {
mTotalDy += -dy;
mTotalDy = Math.min(mTotalDy, TARGET_HEIGHT);
mLastScale = Math.max(1f, 1f + mTotalDy / TARGET_HEIGHT);
mTargetView.setScaleX(mLastScale);
mTargetView.setScaleY(mLastScale);
mLastBottom = mParentHeight + (int) (mTargetViewHeight / 2 * (mLastScale - 1));
abl.setBottom(mLastBottom);
target.setScrollY(0);
}
private void scale(AppBarLayout abl, View target, int dy) {
mTotalDy += -dy;
mTotalDy = Math.min(mTotalDy, TARGET_HEIGHT);
mLastScale = Math.max(1f, 1f + mTotalDy / TARGET_HEIGHT);
mTargetView.setScaleX(mLastScale);
mTargetView.setScaleY(mLastScale);
mLastBottom = mParentHeight + (int) (mTargetViewHeight / 2 * (mLastScale - 1));
abl.setBottom(mLastBottom);
target.setScrollY(0);
}
/**
* 开始滚动前
*/
@Override
public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, View child, View target, int dx, int dy, int[] consumed) {
int scrollY = target.getScrollY();
child.setScrollY(scrollY);
super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed);
}
@Override
public void set(View object, Integer value) {
object.setScrollY(value);
}
static void setScrollY(View view, int scrollY) {
view.setScrollY(scrollY);
}
static void setScrollY(View view, int scrollY) {
view.setScrollY(scrollY);
}
@Override
public void set(View object, Float value) {
object.setScrollY(value.intValue());
}
static void setScrollY(View view, int scrollY) {
view.setScrollY(scrollY);
}
static void b(View view, int i1)
{
view.setScrollY(i1);
}
static void setScrollY(View view, int scrollY) {
view.setScrollY(scrollY);
}
public static void setScrollY(View view, int scrollY) {
view.setScrollY(scrollY);
}
static void setScrollY(View view, int scrollY) {
if (SystemTool.getSDKVersion() > 11) {
view.setScrollY(scrollY);
}
}
static void setScrollY(View view, int scrollY) {
view.setScrollY(scrollY);
}
static void setScrollY(View view, int scrollY) {
view.setScrollY(scrollY);
}
@Override
public void setValue(View view, float value) {
view.setScrollY((int) value);
}
/**
* 设置 View 滑动的 Y 轴坐标
* @param view {@link View}
* @param value Y 轴坐标
* @return {@link View}
*/
public static View setScrollY(final View view, final int value) {
if (view != null) view.setScrollY(value);
return view;
}