package ren.solid.materialdesigndemo.activity;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.v7.widget.Toolbar;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
import android.util.Log;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import ren.solid.library.activity.base.BaseActivity;
import ren.solid.materialdesigndemo.R;
/**
* Created by _SOLID
* Date:2016/5/5
* Time:10:30
*/
public class AboutActivity extends BaseActivity {
private static String TAG = "AboutActivity";
// 控制ToolBar的变量
private static final float PERCENTAGE_TO_SHOW_TITLE_AT_TOOLBAR = 0.9f;
private static final float PERCENTAGE_TO_HIDE_TITLE_DETAILS = 0.3f;
private static final int ALPHA_ANIMATIONS_DURATION = 200;
private boolean mIsTheTitleVisible = false;
private boolean mIsTheTitleContainerVisible = true;
private ImageView mIvPlaceholder; // 大图片
private LinearLayout mLlTitleContainer; // Title的LinearLayout
private FrameLayout mFlTitleContainer; // Title的FrameLayout
private AppBarLayout mAblAppBar; // 整个可以滑动的AppBar
private CollapsingToolbarLayout mCollapsingToolbarLayout;
private TextView mTvToolbarTitle; // 标题栏Title
private TextView mTvMsg;
private Toolbar mToolbar; // 工具栏
@Override
protected void setUpView() {
mToolbar = $(R.id.toolbar);
mAblAppBar = $(R.id.app_bar);
mIvPlaceholder = $(R.id.iv_placeholder);
mFlTitleContainer = $(R.id.fl_title_container);
mLlTitleContainer = $(R.id.ll_title_container);
mTvMsg = $(R.id.tv_msg);
mTvToolbarTitle = $(R.id.tv_toolbar_title);
mCollapsingToolbarLayout = $(R.id.collapsing_toolbar_layout);
mToolbar.setTitle("");
setSupportActionBar(mToolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
mTvMsg.setAutoLinkMask(Linkify.ALL);
mTvMsg.setMovementMethod(LinkMovementMethod
.getInstance());
// AppBar的监听
mAblAppBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
int maxScroll = appBarLayout.getTotalScrollRange();
float percentage = (float) Math.abs(verticalOffset) / (float) maxScroll;
if (percentage >= 0.5f) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mToolbar.setNavigationIcon(R.drawable.ic_back);
} else {
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(false);
}
handleAlphaOnTitle(percentage);
handleToolbarTitleVisibility(percentage);
Log.i(TAG, "verticalOffset:" + verticalOffset + " maxScroll:" + maxScroll);
}
});
initParallaxValues(); // 自动滑动效果
dynamicAddSkinEnableView(mCollapsingToolbarLayout, "contentScrimColor", R.color.colorPrimary);
dynamicAddSkinEnableView(mToolbar, "background", R.color.colorPrimary);
dynamicAddSkinEnableView(mFlTitleContainer, "background", R.color.colorPrimary);
}
@Override
protected int setLayoutResourceID() {
return R.layout.activity_about;
}
// 设置自动滑动的动画效果
private void initParallaxValues() {
CollapsingToolbarLayout.LayoutParams petDetailsLp =
(CollapsingToolbarLayout.LayoutParams) mIvPlaceholder.getLayoutParams();
CollapsingToolbarLayout.LayoutParams petBackgroundLp =
(CollapsingToolbarLayout.LayoutParams) mFlTitleContainer.getLayoutParams();
petDetailsLp.setParallaxMultiplier(0.9f);
petBackgroundLp.setParallaxMultiplier(0.3f);
mIvPlaceholder.setLayoutParams(petDetailsLp);
mFlTitleContainer.setLayoutParams(petBackgroundLp);
}
// 控制Title的显示
private void handleAlphaOnTitle(float percentage) {
if (percentage >= PERCENTAGE_TO_HIDE_TITLE_DETAILS) {
if (mIsTheTitleContainerVisible) {
startAlphaAnimation(mLlTitleContainer, ALPHA_ANIMATIONS_DURATION, View.INVISIBLE);
mIsTheTitleContainerVisible = false;
}
} else {
if (!mIsTheTitleContainerVisible) {
startAlphaAnimation(mLlTitleContainer, ALPHA_ANIMATIONS_DURATION, View.VISIBLE);
mIsTheTitleContainerVisible = true;
}
}
}
// 处理ToolBar的显示
private void handleToolbarTitleVisibility(float percentage) {
if (percentage >= PERCENTAGE_TO_SHOW_TITLE_AT_TOOLBAR) {
if (!mIsTheTitleVisible) {
startAlphaAnimation(mTvToolbarTitle, ALPHA_ANIMATIONS_DURATION, View.VISIBLE);
mIsTheTitleVisible = true;
}
} else {
if (mIsTheTitleVisible) {
startAlphaAnimation(mTvToolbarTitle, ALPHA_ANIMATIONS_DURATION, View.INVISIBLE);
mIsTheTitleVisible = false;
}
}
}
// 设置渐变的动画
public static void startAlphaAnimation(View v, long duration, int visibility) {
AlphaAnimation alphaAnimation = (visibility == View.VISIBLE)
? new AlphaAnimation(0f, 1f)
: new AlphaAnimation(1f, 0f);
alphaAnimation.setDuration(duration);
alphaAnimation.setFillAfter(true);
v.startAnimation(alphaAnimation);
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}