blob: 07186285be2b861c5fc2ad6c04eb36dea9abc969 [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
*/
package com.android.test.assist;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.app.VoiceInteractor;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.service.voice.VoiceInteractionSession;
import android.util.Log;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.ViewTreeObserver;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
/**
* Sample session to show test assist transition.
*/
public class AssistInteractionSession extends VoiceInteractionSession {
private View mScrim;
private View mBackground;
private View mNavbarScrim;
private View mCard1;
private View mCard2;
private float mDensity;
public AssistInteractionSession(Context context) {
super(context);
}
public AssistInteractionSession(Context context, Handler handler) {
super(context, handler);
}
@Override
public void onRequestConfirmation(ConfirmationRequest request) {
}
@Override
public void onRequestPickOption(PickOptionRequest request) {
}
@Override
public void onRequestCommand(CommandRequest request) {
}
@Override
public void onCancelRequest(Request request) {
}
@Override
public void onCreate() {
super.onCreate();
// Simulate slowness of Assist app
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getWindow().getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
@Override
public View onCreateContentView() {
View v = getLayoutInflater().inflate(R.layout.assist, null);
mScrim = v.findViewById(R.id.scrim);
mBackground = v.findViewById(R.id.background);
mDensity = mScrim.getResources().getDisplayMetrics().density;
mCard1 = v.findViewById(R.id.card1);
mCard2 = v.findViewById(R.id.card2);
mNavbarScrim = v.findViewById(R.id.navbar_scrim);
return v;
}
@Override
public void onShow(Bundle args, int showFlags) {
super.onShow(args, showFlags);
if ((showFlags & SHOW_SOURCE_ASSIST_GESTURE) != 0) {
mBackground.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
mBackground.getViewTreeObserver().removeOnPreDrawListener(this);
playAssistAnimation();
return true;
}
});
}
}
@Override
public void onLockscreenShown() {
super.onLockscreenShown();
Log.i("Assistant", "Lockscreen was shown");
}
private void playAssistAnimation() {
Interpolator linearOutSlowIn = AnimationUtils.loadInterpolator(mBackground.getContext(),
android.R.interpolator.linear_out_slow_in);
Interpolator fastOutSlowIn = AnimationUtils.loadInterpolator(mBackground.getContext(),
android.R.interpolator.fast_out_slow_in);
mScrim.setAlpha(0f);
mScrim.animate()
.alpha(1f)
.setStartDelay(100)
.setDuration(500);
mBackground.setTranslationY(50 * mDensity);
mBackground.animate()
.translationY(0)
.setDuration(300)
.setInterpolator(linearOutSlowIn);
int centerX = mBackground.getWidth()/2;
int centerY = (int) (mBackground.getHeight()/5*3.8f);
int radius = (int) Math.sqrt(centerX*centerX + centerY*centerY) + 1;
Animator animator = ViewAnimationUtils.createCircularReveal(mBackground, centerX, centerY,
0, radius);
animator.setDuration(300);
animator.setInterpolator(fastOutSlowIn);
animator.start();
ValueAnimator colorAnim = ValueAnimator.ofArgb(Color.WHITE, 0xffe0e0e0);
colorAnim.setDuration(300);
colorAnim.setInterpolator(fastOutSlowIn);
colorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mBackground.setBackgroundColor((Integer) animation.getAnimatedValue());
}
});
colorAnim.start();
mCard1.setY(mBackground.getHeight());
mCard2.setTranslationY(mCard1.getTranslationY());
mCard1.animate()
.translationY(0)
.setDuration(500)
.setInterpolator(linearOutSlowIn)
.setStartDelay(100);
mCard2.animate()
.translationY(0)
.setInterpolator(linearOutSlowIn)
.setStartDelay(150)
.setDuration(500);
mNavbarScrim.setAlpha(0f);
mNavbarScrim.animate()
.alpha(1f)
.setDuration(500)
.setStartDelay(100);
}
@Override
public void onHide() {
super.onHide();
}
}