blob: 9ad691fa5b38a849f64b7fa948b110bac3a0cf17 [file] [log] [blame]
/*
* Copyright (C) 2016 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 android.car.cluster.demorenderer;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
/**
* This class is responsible for drawing the whole instrument cluster.
*/
public class DemoInstrumentClusterView extends FrameLayout {
private final String TAG = DemoInstrumentClusterView.class.getSimpleName();
private TextView mSpeedView;
private TextView mEventTitleView;
private TextView mDistanceView;
private View mNavPanel;
private TextView mMediaArtistView;
private TextView mMediaAlbumView;
private TextView mMediaTrackView;
private ImageView mMediaImageView;
private View mMediaPanel;
private View mPhonePanel;
private TextView mPhoneTitle;
private TextView mPhoneSubtitle;
private ImageView mPhoneImage;
private final Integer mAnimationDurationMs;
public DemoInstrumentClusterView(Context context) {
super(context);
mAnimationDurationMs = getResources().getInteger(android.R.integer.config_longAnimTime);
init();
}
public void setSpeed(String speed) {
Log.d(TAG, "setSpeed, meterPerSecond: " + speed);
mSpeedView.setText(speed);
}
public void showNavigation() {
Log.d(TAG, "showNavigation");
mEventTitleView.setText("");
mDistanceView.setText("");
mNavPanel.setVisibility(VISIBLE);
}
public void hideNavigation() {
Log.d(TAG, "hideNavigation");
mNavPanel.setVisibility(INVISIBLE);
}
public void setNextTurn(Bitmap image, String title) {
Log.d(TAG, "setNextTurn, image: " + image + ", title: " + title);
mEventTitleView.setText(title);
}
public void setNextTurnDistance(String distance) {
Log.d(TAG, "setNextTurnDistance, distance: " + distance);
mDistanceView.setText(distance);
}
public void setMediaData(final CharSequence artist, final CharSequence album,
final CharSequence track, final Bitmap image) {
Log.d(TAG, "setMediaData" + " artist = " + artist + ", album: " + album + ", track: " +
track + ", bitmap: " + image);
mMediaArtistView.setText(artist);
mMediaAlbumView.setText(album);
mMediaTrackView.setText(track);
mMediaImageView.setImageBitmap(image);
}
private void showAnimated(final View view) {
if (view.getVisibility() == VISIBLE && view.getAlpha() > 0) {
return;
}
view.setAlpha(0);
view.setVisibility(VISIBLE);
view.animate()
.alpha(1f)
.setDuration(mAnimationDurationMs)
.setListener(null);
}
private void hideAnimated(final View view) {
if (view.getVisibility() == GONE) {
return;
}
view.animate()
.alpha(0f)
.setDuration(mAnimationDurationMs)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
view.setVisibility(GONE);
}
});
}
public void showMedia() {
Log.d(TAG, "showMedia");
showAnimated(mMediaPanel);
}
public void hideMedia() {
Log.d(TAG, "hideMedia");
hideAnimated(mMediaPanel);
}
public void showPhone() {
Log.d(TAG, "showPhone");
mPhoneSubtitle.setText("");
mPhoneImage.setImageResource(0); // To clear previous contact photo (if any).
mPhoneTitle.setText("");
showAnimated(mPhonePanel);
}
public void hidePhone() {
Log.d(TAG, "hidePhone");
hideAnimated(mPhonePanel);
}
public void setPhoneTitle(String number) {
Log.d(TAG, "setPhoneTitle, number: " + number);
mPhoneTitle.setText(number);
}
public void setPhoneSubtitle(String contact) {
Log.d(TAG, "setPhoneContact, contact: " + contact);
mPhoneSubtitle.setText(contact);
}
public void setPhoneImage(Bitmap photo) {
Log.d(TAG, "setPhoneImage, photo: " + photo);
mPhoneImage.setImageBitmap(photo);
}
private void init() {
Log.d(TAG, "init");
View rootView = inflate(getContext(), R.layout.instrument_cluster, null);
mSpeedView = (TextView) rootView.findViewById(R.id.speed);
mEventTitleView = (TextView) rootView.findViewById(R.id.nav_event_title);
mDistanceView = (TextView) rootView.findViewById(R.id.nav_distance);
mNavPanel = rootView.findViewById(R.id.nav_layout);
mMediaPanel = rootView.findViewById(R.id.media_layout);
mMediaArtistView = (TextView) rootView.findViewById(R.id.media_artist);
mMediaAlbumView = (TextView) rootView.findViewById(R.id.media_album);
mMediaTrackView = (TextView) rootView.findViewById(R.id.media_track);
mMediaImageView = (ImageView) rootView.findViewById(R.id.media_image);
mPhonePanel = rootView.findViewById(R.id.phone_layout);
mPhoneImage = (ImageView) rootView.findViewById(R.id.phone_contact_photo);
mPhoneSubtitle = (TextView) rootView.findViewById(R.id.phone_subtitle);
mPhoneTitle = (TextView) rootView.findViewById(R.id.phone_title);
setSpeed("0");
addView(rootView);
}
}