package tk.zielony.carbonsamples.demo;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import java.util.List;
import carbon.animation.AnimUtils;
import carbon.internal.MathUtils;
import carbon.widget.LinearLayout;
import tk.zielony.carbonsamples.R;
import tk.zielony.carbonsamples.SamplesActivity;
public class ShareToolbarActivity extends SamplesActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share_toolbar);
final LinearLayout shareToolbar = (LinearLayout) findViewById(R.id.shareToolbar);
final View root = shareToolbar.getRootView();
findViewById(R.id.shareIcon).setOnClickListener(view -> {
view.setVisibility(View.GONE);
final ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
animator.setInterpolator(new AccelerateInterpolator());
animator.addUpdateListener(animation -> {
float frac = animator.getAnimatedFraction();
float cornerRadius = MathUtils.lerp(shareToolbar.getHeight() / 2.0f, 0, frac);
shareToolbar.setCornerRadius((int) cornerRadius);
float left = MathUtils.lerp(root.getWidth() - shareToolbar.getHeight() - getResources().getDimension(R.dimen.carbon_padding), 0, frac);
float right = MathUtils.lerp(root.getWidth() - getResources().getDimension(R.dimen.carbon_padding), root.getWidth(), frac);
shareToolbar.layout((int) left, shareToolbar.getTop(), (int) right, shareToolbar.getBottom());
shareToolbar.setElevation(frac);
shareToolbar.setBackgroundColor(AnimUtils.lerpColor(frac, 0xff9ACE00, 0xffffffff));
if (shareToolbar.getParent() != null)
((View) shareToolbar.getParent()).postInvalidate();
});
animator.setStartDelay(200);
animator.setDuration(500);
view.setEnabled(false);
animator.start();
final List<View> viewsWithTag = shareToolbar.findViewsWithTag("animate");
view.getHandler().postDelayed(() -> {
for (int i = 0; i < viewsWithTag.size(); i++) {
final int finalI = i;
view.getHandler().postDelayed(() -> viewsWithTag.get(finalI).setVisibility(View.VISIBLE), i * 40);
}
}, 500);
});
}
}