private void setTvViewPosition(final FrameLayout.LayoutParams layoutParams,
MarginLayoutParams tvViewFrame, boolean animate) {
if (DEBUG) {
Log.d(TAG, "setTvViewPosition: w=" + layoutParams.width + " h=" + layoutParams.height
+ " s=" + layoutParams.getMarginStart() + " t=" + layoutParams.topMargin
+ " e=" + layoutParams.getMarginEnd() + " b=" + layoutParams.bottomMargin
+ " animate=" + animate);
}
MarginLayoutParams oldTvViewFrame = mTvViewFrame;
mTvViewLayoutParams = layoutParams;
mTvViewFrame = tvViewFrame;
if (animate) {
initTvAnimatorIfNeeded();
if (mTvViewAnimator.isStarted()) {
// Cancel the current animation and start new one.
mTvViewAnimator.cancel();
mOldTvViewFrame = mLastAnimatedTvViewFrame;
} else {
mOldTvViewFrame = oldTvViewFrame;
}
mTvViewAnimator.setObjectValues(mTvView.getLayoutParams(), layoutParams);
mTvViewAnimator.setEvaluator(new TypeEvaluator<FrameLayout.LayoutParams>() {
FrameLayout.LayoutParams lp;
@Override
public FrameLayout.LayoutParams evaluate(float fraction,
FrameLayout.LayoutParams startValue, FrameLayout.LayoutParams endValue) {
if (lp == null) {
lp = new FrameLayout.LayoutParams(0, 0);
lp.gravity = startValue.gravity;
}
interpolateMarginsRelative(lp, startValue, endValue, fraction);
return lp;
}
});
mTvViewAnimator
.setInterpolator(isTvViewFullScreen() ? mFastOutLinearIn : mLinearOutSlowIn);
mTvViewAnimator.start();
} else {
if (mTvViewAnimator != null && mTvViewAnimator.isStarted()) {
// Continue the current animation.
// layoutParams will be applied when animation ends.
return;
}
// This block is also called when animation ends.
if (isTvViewFullScreen()) {
// When this layout is for full screen, fix the surface size after layout to make
// resize animation smooth. During PIP size change, the multiple messages can be
// queued, if we don't remove MSG_SET_LAYOUT_PARAMS.
mHandler.removeMessages(MSG_SET_LAYOUT_PARAMS);
mHandler.obtainMessage(MSG_SET_LAYOUT_PARAMS, layoutParams).sendToTarget();
} else {
mTvView.setLayoutParams(layoutParams);
}
updatePipView(mTvViewFrame);
}
}
TvViewUiManager.java 文件源码
java
阅读 22
收藏 0
点赞 0
评论 0
项目:android_packages_apps_tv
作者:
评论列表
文章目录