/** * getViewTreeObserver方法是view对象发生改变时的观察者对象 * 我们无法在一个view 在onCreate时拿到它的宽高,这是因为View组件布局要在onResume回调后完成 * 但是我们可以通过监听它的改变,从而拿到一个view的宽高 * addOnPreDrawListener: * 当一个视图树将要绘制时,所要调用的回调函数的接口类 */
mToolbar.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
mToolbar.getViewTreeObserver().removeOnPreDrawListener(this);
final int widthSpec=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
final int heightSpec=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
mToolbar.measure(widthSpec, heightSpec);
mToolbarHeight = mToolbar.getHeight();
/*** 执行
Toolbar动画
**/
collapseToolbar();
return true; }
});
collaspseToolbar
public void collapseToolbar() {
int targetHeight = 0;
TypedValue value = new TypedValue();
if (getActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize,value,true)){
//目标高度是系统默认的toolbar高
targetHeight=TypedValue.complexToDimensionPixelSize(value.data, getResources().getDisplayMetrics()); }
//从当前toolbar的高到目标toolbar的高之间计算动画值
ValueAnimator valueAnimator=ValueAnimator.ofInt(mToolbarHeight, DeviceUtils.dip2px(getActivity(),120));
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//拿到Toolbar的布局参数
ViewGroup.LayoutParams lp = mToolbar.getLayoutParams();
lp.height =(Integer) animation.getAnimatedValue();
//将每次产生的值 作为参数赋给toolbar,让toolbar不断改变高度
Log.d("TAG","animator size : "+animation.getAnimatedValue());
mToolbar.setLayoutParams(lp);
mToolbar.invalidate();
}
});
valueAnimator.setDuration(2000);
valueAnimator.start();
valueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
//当toolbar动画完成时加载数据
mPresenter.loadWeatherData(mRecycle);
YoYo.with(Techniques.ZoomIn).delay(600).duration(400).playOn(mFab);
/* // Animate fab
ViewCompat.animate(mFab).setStartDelay(600).setDuration(400).scaleY(1).scaleX(1).start();*/ }
});
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。