diff options
author | Nick Chalko <nchalko@google.com> | 2017-05-09 14:07:44 -0700 |
---|---|---|
committer | Nick Chalko <nchalko@google.com> | 2017-05-10 09:49:18 -0700 |
commit | 0550a7221be0581b0bd421a9d70400ff8699a6e7 (patch) | |
tree | 14d9836ff9283690321c166560ee3450792236ad /src/com/android/tv/ui/TuningBlockView.java | |
parent | 430c2be3b91676005fdd243553e38acff8dfc3de (diff) | |
download | TV-0550a7221be0581b0bd421a9d70400ff8699a6e7.tar.gz |
Sync to ub-tv-dev at lost+android-o-preview-3android-n-iot-preview-4n-iot-preview-4
hash 550cbec17259717c5453f6be1eb05736ba10ef1d
Bug: 37849928
Test: tested on vendor branch
Change-Id: I82190481d2bcef2b89e78414b6b92ed97720749d
Merged-In: I4199ec04cacb4a78be58b85302a39d917658dc28
Diffstat (limited to 'src/com/android/tv/ui/TuningBlockView.java')
-rw-r--r-- | src/com/android/tv/ui/TuningBlockView.java | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/com/android/tv/ui/TuningBlockView.java b/src/com/android/tv/ui/TuningBlockView.java new file mode 100644 index 00000000..2914b461 --- /dev/null +++ b/src/com/android/tv/ui/TuningBlockView.java @@ -0,0 +1,113 @@ +/* + * 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 com.android.tv.ui; + +import android.animation.Animator; +import android.animation.AnimatorInflater; +import android.animation.AnimatorListenerAdapter; +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.widget.FrameLayout; +import android.widget.ImageView; + +import com.android.tv.R; +import com.android.tv.common.SoftPreconditions; + +/** + * A view to block the screen while tuning channels. + */ +public class TuningBlockView extends FrameLayout{ + private final static String TAG = "TuningBlockView"; + + private ImageView mImageView; + private Animator mFadeOut; + + public TuningBlockView(Context context) { + this(context, null, 0); + } + + public TuningBlockView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public TuningBlockView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + mImageView = (ImageView) findViewById(R.id.image); + mFadeOut = AnimatorInflater.loadAnimator( + getContext(), R.animator.tuning_block_view_fade_out); + mFadeOut.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + setVisibility(GONE); + } + }); + mFadeOut.setTarget(mImageView); + } + + /** + * Sets image to the image view. This method should be called after finishing inflate the view. + */ + public void setImage(Drawable imageDrawable) { + SoftPreconditions.checkState(mImageView != null, TAG, "imageView is null"); + mImageView.setImageDrawable(imageDrawable); + } + + /** + * Sets the visibility of image view. + * This method should be called after finishing inflate the view. + */ + public void setImageVisibility(boolean visible) { + SoftPreconditions.checkState(mImageView != null, TAG, "imageView is null"); + mImageView.setAlpha(1.0f); + mImageView.setVisibility(visible ? VISIBLE: GONE); + } + + /** + * Returns if the image view is visible. + * This method should be called after finishing inflate the view. + */ + public boolean isImageArtVisible() { + SoftPreconditions.checkState(mImageView != null, TAG, "imageView is null"); + return mImageView.getVisibility() == VISIBLE; + } + + /** + * Hides the view with animation if needed. + */ + public void hideWithAnimationIfNeeded() { + if (getVisibility() == VISIBLE && isImageArtVisible()) { + mFadeOut.start(); + } else { + setVisibility(GONE); + } + } + + /** + * Ends the fade out animator. + */ + public void endFadeOutAnimator() { + if (mFadeOut != null && mFadeOut.isRunning()) { + mFadeOut.end(); + } + } +} |