animated previews: final

This commit is contained in:
Yuriy Liskov
2020-10-14 17:11:22 +03:00
parent dc4458d3e4
commit 98226ec5e2
5 changed files with 65 additions and 20 deletions

View File

@@ -88,7 +88,7 @@ public class CardPresenter extends Presenter {
cardView.setTitleText(video.title);
cardView.setContentText(video.description);
cardView.setBadgeText(video.badge);
//cardView.setPreviewUrl(video.previewUrl);
cardView.setPreviewUrl(video.previewUrl);
if (video.cardImageUrl != null) {
// Set card size from dimension resources.

View File

@@ -3,6 +3,8 @@ package com.liskovsoft.smartyoutubetv2.tv.ui.widgets.textbadgecard;
import android.content.Context;
import android.text.TextUtils.TruncateAt;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.ImageView.ScaleType;
import android.widget.TextView;
import androidx.leanback.widget.ImageCardView;
import com.liskovsoft.smartyoutubetv2.tv.R;
@@ -71,13 +73,40 @@ public class TextBadgeImageCardView extends ImageCardView {
private void enableVideoPreview(boolean selected) {
if (selected) {
mTextBadgeImageLayout.setLoading();
mTextBadgeImageLayout.startPlayback();
} else {
mTextBadgeImageLayout.setFinished();
mTextBadgeImageLayout.stopPlayback();
}
}
public void setPreviewUrl(String previewUrl) {
mTextBadgeImageLayout.setPreviewUrl(previewUrl);
}
/**
* Enables or disables adjustment of view bounds on the main image.
*/
@Override
public void setMainImageAdjustViewBounds(boolean adjustViewBounds) {
super.setMainImageAdjustViewBounds(adjustViewBounds);
mTextBadgeImageLayout.setMainImageAdjustViewBounds(adjustViewBounds);
}
/**
* Sets the ScaleType of the main image.
*/
@Override
public void setMainImageScaleType(ScaleType scaleType) {
super.setMainImageScaleType(scaleType);
mTextBadgeImageLayout.setMainImageScaleType(scaleType);
}
/**
* Sets the layout dimensions of the ImageView.
*/
@Override
public void setMainImageDimensions(int width, int height) {
super.setMainImageDimensions(width, height);
mTextBadgeImageLayout.setMainImageDimensions(width, height);
}
}

View File

@@ -4,7 +4,9 @@ import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
@@ -74,17 +76,12 @@ public class TextBadgeImageView extends RelativeLayout {
mPreviewUrl = videoUrl;
}
//public ImageView getImageView() {
// return mImageView;
//}
public void setLoading() {
public void startPlayback() {
if (mPreviewUrl == null) {
return;
}
mPreviewImage.setVisibility(View.VISIBLE);
mMainImage.setVisibility(View.INVISIBLE);
Glide.with(getContext())
.load(mPreviewUrl)
@@ -97,21 +94,39 @@ public class TextBadgeImageView extends RelativeLayout {
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource,
boolean isFirstResource) {
//mMainImage.setVisibility(View.GONE);
//mPreviewImage.setVisibility(View.VISIBLE);
mMainImage.setVisibility(View.GONE);
return false;
}
})
.into(mPreviewImage);
}
public void setFinished() {
public void stopPlayback() {
if (mPreviewUrl == null) {
return;
}
mPreviewImage.setVisibility(View.INVISIBLE);
mPreviewImage.setImageDrawable(null);
mMainImage.setVisibility(View.VISIBLE);
mPreviewImage.setVisibility(View.GONE);
mPreviewImage.setImageDrawable(null);
}
public void setMainImageAdjustViewBounds(boolean adjustViewBounds) {
if (mPreviewImage != null) {
mPreviewImage.setAdjustViewBounds(adjustViewBounds);
}
}
public void setMainImageScaleType(ScaleType scaleType) {
if (mPreviewImage != null) {
mPreviewImage.setScaleType(scaleType);
}
}
public void setMainImageDimensions(int width, int height) {
ViewGroup.LayoutParams lp = mPreviewImage.getLayoutParams();
lp.width = width;
lp.height = height;
mPreviewImage.setLayoutParams(lp);
}
}

View File

@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<merge xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/main_image"
tools:ignore="ContentDescription"
style="?attr/imageCardViewImageStyle"/>
<ImageView
android:visibility="invisible"
android:visibility="gone"
android:id="@+id/preview_image"
android:layout_alignTop="@+id/main_image"
android:layout_alignStart="@+id/main_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:layout_alignTop="@+id/main_image"
android:layout_alignStart="@+id/main_image"
/>
tools:ignore="ContentDescription"/>
<TextView android:visibility="gone"
android:id="@+id/extra_text_badge"
android:layout_alignBottom="@+id/main_image"