aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/ui/BlockScreenView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/tv/ui/BlockScreenView.java')
-rw-r--r--src/com/android/tv/ui/BlockScreenView.java137
1 files changed, 82 insertions, 55 deletions
diff --git a/src/com/android/tv/ui/BlockScreenView.java b/src/com/android/tv/ui/BlockScreenView.java
index 52b9389d..09c167ca 100644
--- a/src/com/android/tv/ui/BlockScreenView.java
+++ b/src/com/android/tv/ui/BlockScreenView.java
@@ -21,32 +21,37 @@ import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorInflater;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
+import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
-import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.tv.R;
import com.android.tv.ui.TunableTvView.BlockScreenType;
-public class BlockScreenView extends LinearLayout {
+public class BlockScreenView extends FrameLayout {
private View mContainerView;
private View mImageContainer;
- private ImageView mNormalImageView;
- private ImageView mShrunkenImageView;
+ private ImageView mNormalLockIconView;
+ private ImageView mShrunkenLockIconView;
private View mSpace;
- private TextView mTextView;
+ private TextView mBlockingInfoTextView;
+ private ImageView mBackgroundImageView;
private final int mSpacingNormal;
private final int mSpacingShrunken;
- // Animators used for fade in/out of block screen icon.
- private Animator mFadeIn;
+ // Animator used to fade out the whole block screen.
private Animator mFadeOut;
+ // Animators used to fade in/out the block screen icon and info text.
+ private Animator mInfoFadeIn;
+ private Animator mInfoFadeOut;
+
public BlockScreenView(Context context) {
this(context, null, 0);
}
@@ -68,21 +73,32 @@ public class BlockScreenView extends LinearLayout {
super.onFinishInflate();
mContainerView = findViewById(R.id.block_screen_container);
mImageContainer = findViewById(R.id.image_container);
- mNormalImageView = (ImageView) findViewById(R.id.block_screen_icon);
- mShrunkenImageView = (ImageView) findViewById(R.id.block_screen_shrunken_icon);
+ mNormalLockIconView = (ImageView) findViewById(R.id.block_screen_icon);
+ mShrunkenLockIconView = (ImageView) findViewById(R.id.block_screen_shrunken_icon);
mSpace = findViewById(R.id.space);
- mTextView = (TextView) findViewById(R.id.block_screen_text);
- mFadeIn = AnimatorInflater.loadAnimator(getContext(),
- R.animator.tvview_block_screen_fade_in);
- mFadeIn.setTarget(mContainerView);
+ mBlockingInfoTextView = (TextView) findViewById(R.id.block_screen_text);
+ mBackgroundImageView = (ImageView) findViewById(R.id.background_image);
mFadeOut = AnimatorInflater.loadAnimator(getContext(),
R.animator.tvview_block_screen_fade_out);
- mFadeOut.setTarget(mContainerView);
+ mFadeOut.setTarget(this);
mFadeOut.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
+ setVisibility(GONE);
+ setBackgroundImage(null);
+ setAlpha(1.0f);
+ }
+ });
+ mInfoFadeIn = AnimatorInflater.loadAnimator(getContext(),
+ R.animator.tvview_block_screen_fade_in);
+ mInfoFadeIn.setTarget(mContainerView);
+ mInfoFadeOut = AnimatorInflater.loadAnimator(getContext(),
+ R.animator.tvview_block_screen_fade_out);
+ mInfoFadeOut.setTarget(mContainerView);
+ mInfoFadeOut.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
mContainerView.setVisibility(GONE);
- mContainerView.setAlpha(1f);
}
});
}
@@ -90,53 +106,54 @@ public class BlockScreenView extends LinearLayout {
/**
* Sets the normal image.
*/
- public void setImage(int resId) {
- mNormalImageView.setImageResource(resId);
+ public void setIconImage(int resId) {
+ mNormalLockIconView.setImageResource(resId);
updateSpaceVisibility();
}
/**
* Sets the scale type of the normal image.
*/
- public void setScaleType(ScaleType scaleType) {
- mNormalImageView.setScaleType(scaleType);
+ public void setIconScaleType(ScaleType scaleType) {
+ mNormalLockIconView.setScaleType(scaleType);
updateSpaceVisibility();
}
/**
- * Sets the shrunken image.
+ * Show or hide the image of this view.
*/
- public void setShrunkenImage(int resId) {
- mShrunkenImageView.setImageResource(resId);
+ public void setIconVisibility(boolean visible) {
+ mImageContainer.setVisibility(visible ? VISIBLE : GONE);
updateSpaceVisibility();
}
/**
- * Show or hide the image of this view.
+ * Sets the text message.
*/
- public void setImageVisibility(boolean visible) {
- mImageContainer.setVisibility(visible ? VISIBLE : GONE);
+ public void setInfoText(int resId) {
+ mBlockingInfoTextView.setText(resId);
updateSpaceVisibility();
}
/**
* Sets the text message.
*/
- public void setText(int resId) {
- mTextView.setText(resId);
+ public void setInfoText(String text) {
+ mBlockingInfoTextView.setText(text);
updateSpaceVisibility();
}
/**
- * Sets the text message.
+ * Sets the background image should be displayed in the block screen view. Passes {@code null}
+ * to remove the currently displayed background image.
*/
- public void setText(String text) {
- mTextView.setText(text);
- updateSpaceVisibility();
+ public void setBackgroundImage(Drawable backgroundImage) {
+ mBackgroundImageView.setVisibility(backgroundImage == null ? GONE : VISIBLE);
+ mBackgroundImageView.setImageDrawable(backgroundImage);
}
private void updateSpaceVisibility() {
- if (isImageViewVisible() && isTextViewVisible(mTextView)) {
+ if (isImageViewVisible() && isTextViewVisible(mBlockingInfoTextView)) {
mSpace.setVisibility(VISIBLE);
} else {
mSpace.setVisibility(GONE);
@@ -145,7 +162,8 @@ public class BlockScreenView extends LinearLayout {
private boolean isImageViewVisible() {
return mImageContainer.getVisibility() == VISIBLE
- && (isImageViewVisible(mNormalImageView) || isImageViewVisible(mShrunkenImageView));
+ && (isImageViewVisible(mNormalLockIconView)
+ || isImageViewVisible(mShrunkenLockIconView));
}
private static boolean isImageViewVisible(ImageView imageView) {
@@ -177,37 +195,39 @@ public class BlockScreenView extends LinearLayout {
mContainerView.setVisibility(GONE);
break;
case TunableTvView.BLOCK_SCREEN_TYPE_SHRUNKEN_TV_VIEW:
- mNormalImageView.setVisibility(GONE);
- mShrunkenImageView.setVisibility(VISIBLE);
+ mNormalLockIconView.setVisibility(GONE);
+ mShrunkenLockIconView.setVisibility(VISIBLE);
mContainerView.setVisibility(VISIBLE);
+ mContainerView.setAlpha(1.0f);
break;
case TunableTvView.BLOCK_SCREEN_TYPE_NORMAL:
- mNormalImageView.setVisibility(VISIBLE);
- mShrunkenImageView.setVisibility(GONE);
+ mNormalLockIconView.setVisibility(VISIBLE);
+ mShrunkenLockIconView.setVisibility(GONE);
mContainerView.setVisibility(VISIBLE);
+ mContainerView.setAlpha(1.0f);
break;
}
} else {
switch (blockScreenType) {
case TunableTvView.BLOCK_SCREEN_TYPE_NO_UI:
if (mContainerView.getVisibility() == VISIBLE) {
- mFadeOut.start();
+ mInfoFadeOut.start();
}
break;
case TunableTvView.BLOCK_SCREEN_TYPE_SHRUNKEN_TV_VIEW:
- mNormalImageView.setVisibility(GONE);
- mShrunkenImageView.setVisibility(VISIBLE);
- mContainerView.setVisibility(VISIBLE);
+ mNormalLockIconView.setVisibility(GONE);
+ mShrunkenLockIconView.setVisibility(VISIBLE);
if (mContainerView.getVisibility() == GONE) {
- mFadeIn.start();
+ mContainerView.setVisibility(VISIBLE);
+ mInfoFadeIn.start();
}
break;
case TunableTvView.BLOCK_SCREEN_TYPE_NORMAL:
- mNormalImageView.setVisibility(VISIBLE);
- mShrunkenImageView.setVisibility(GONE);
- mContainerView.setVisibility(VISIBLE);
+ mNormalLockIconView.setVisibility(VISIBLE);
+ mShrunkenLockIconView.setVisibility(GONE);
if (mContainerView.getVisibility() == GONE) {
- mFadeIn.start();
+ mContainerView.setVisibility(VISIBLE);
+ mInfoFadeIn.start();
}
break;
}
@@ -216,26 +236,33 @@ public class BlockScreenView extends LinearLayout {
}
/**
- * Scales the contents view by the given {@code scale}.
+ * Adds a listener to the fade-in animation of info text and icons of the block screen.
*/
- public void scaleContainerView(float scale) {
- mContainerView.setScaleX(scale);
- mContainerView.setScaleY(scale);
+ public void addInfoFadeInAnimationListener(AnimatorListener listener) {
+ mInfoFadeIn.addListener(listener);
}
- public void addFadeOutAnimationListener(AnimatorListener listener) {
- mFadeOut.addListener(listener);
+ /**
+ * Fades out the block screen.
+ */
+ public void fadeOut() {
+ if (getVisibility() == VISIBLE && !mFadeOut.isStarted()) {
+ mFadeOut.start();
+ }
}
/**
* Ends the currently running animations.
*/
public void endAnimations() {
- if (mFadeIn != null && mFadeIn.isRunning()) {
- mFadeIn.end();
- }
if (mFadeOut != null && mFadeOut.isRunning()) {
mFadeOut.end();
}
+ if (mInfoFadeIn != null && mInfoFadeIn.isRunning()) {
+ mInfoFadeIn.end();
+ }
+ if (mInfoFadeOut != null && mInfoFadeOut.isRunning()) {
+ mInfoFadeOut.end();
+ }
}
}