From 23a053579b5db10ca8b3aa6f7f46be6cdeafbfae Mon Sep 17 00:00:00 2001 From: David-Development Date: Wed, 7 Apr 2021 17:55:09 +0200 Subject: Fix broken fontsize setting Signed-off-by: David Luhmer --- .../adapter/RssItemCardViewHolder.java | 5 +-- .../RssItemHeadlineThumbnailViewHolder.java | 9 +--- .../adapter/RssItemHeadlineViewHolder.java | 9 ++-- .../adapter/RssItemTextViewHolder.java | 9 ++-- .../adapter/RssItemThumbnailViewHolder.java | 9 ++-- .../adapter/RssItemViewHolder.java | 48 +++++++++++++++------- .../adapter/RssItemWebViewHolder.java | 10 ++--- 7 files changed, 53 insertions(+), 46 deletions(-) (limited to 'News-Android-App/src/main/java') diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemCardViewHolder.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemCardViewHolder.java index 3bc64691..5ec7cd0d 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemCardViewHolder.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemCardViewHolder.java @@ -13,12 +13,11 @@ import androidx.annotation.NonNull; import de.luhmer.owncloudnewsreader.database.model.RssItem; import de.luhmer.owncloudnewsreader.databinding.SubscriptionDetailListItemCardViewBinding; -public class RssItemCardViewHolder extends RssItemViewHolder { +public class RssItemCardViewHolder extends RssItemViewHolder { SubscriptionDetailListItemCardViewBinding binding; RssItemCardViewHolder(@NonNull SubscriptionDetailListItemCardViewBinding binding, SharedPreferences sharedPreferences) { - super(binding.getRoot(), sharedPreferences); - this.binding = binding; + super(binding, sharedPreferences); } @Override diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineThumbnailViewHolder.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineThumbnailViewHolder.java index 693a3c23..cba4cf66 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineThumbnailViewHolder.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineThumbnailViewHolder.java @@ -19,19 +19,14 @@ import de.luhmer.owncloudnewsreader.R; import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm; import de.luhmer.owncloudnewsreader.database.model.RssItem; import de.luhmer.owncloudnewsreader.databinding.SubscriptionDetailListItemHeadlineThumbnailBinding; -import de.luhmer.owncloudnewsreader.helper.FavIconHandler; import de.luhmer.owncloudnewsreader.helper.SquareRoundedBitmapDisplayer; -import static android.view.View.GONE; - -public class RssItemHeadlineThumbnailViewHolder extends RssItemViewHolder { +public class RssItemHeadlineThumbnailViewHolder extends RssItemViewHolder { private final DisplayImageOptions displayImageOptionsThumbnail; - private final SubscriptionDetailListItemHeadlineThumbnailBinding binding; RssItemHeadlineThumbnailViewHolder(@NonNull SubscriptionDetailListItemHeadlineThumbnailBinding binding, SharedPreferences sharedPreferences) { - super(binding.getRoot(), sharedPreferences); - this.binding = binding; + super(binding, sharedPreferences); Drawable feedIcon = VectorDrawableCompat.create(itemView.getResources(), R.drawable.feed_icon, null); int widthThumbnail = Math.round(88f * binding.imgViewThumbnail.getContext().getResources().getDisplayMetrics().density); diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineViewHolder.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineViewHolder.java index 56888c85..66f3cb5a 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineViewHolder.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemHeadlineViewHolder.java @@ -9,16 +9,15 @@ import android.widget.TextView; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; +import androidx.viewbinding.ViewBinding; import de.luhmer.owncloudnewsreader.database.model.RssItem; import de.luhmer.owncloudnewsreader.databinding.SubscriptionDetailListItemHeadlineBinding; -public class RssItemHeadlineViewHolder extends RssItemViewHolder { - SubscriptionDetailListItemHeadlineBinding binding; +public class RssItemHeadlineViewHolder extends RssItemViewHolder { - RssItemHeadlineViewHolder(@NonNull SubscriptionDetailListItemHeadlineBinding binding, SharedPreferences sharedPreferences) { - super(binding.getRoot(), sharedPreferences); - this.binding = binding; + RssItemHeadlineViewHolder(@NonNull ViewBinding binding, SharedPreferences sharedPreferences) { + super(binding, sharedPreferences); } @Override diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemTextViewHolder.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemTextViewHolder.java index 6623c332..d3e5a61a 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemTextViewHolder.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemTextViewHolder.java @@ -9,16 +9,15 @@ import android.widget.TextView; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; +import androidx.viewbinding.ViewBinding; import de.luhmer.owncloudnewsreader.database.model.RssItem; import de.luhmer.owncloudnewsreader.databinding.SubscriptionDetailListItemTextBinding; -public class RssItemTextViewHolder extends RssItemViewHolder { - SubscriptionDetailListItemTextBinding binding; +public class RssItemTextViewHolder extends RssItemViewHolder { - RssItemTextViewHolder(@NonNull SubscriptionDetailListItemTextBinding binding, SharedPreferences sharedPreferences) { - super(binding.getRoot(), sharedPreferences); - this.binding = binding; + RssItemTextViewHolder(@NonNull ViewBinding binding, SharedPreferences sharedPreferences) { + super(binding, sharedPreferences); } @Override diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemThumbnailViewHolder.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemThumbnailViewHolder.java index 95752dea..0185e977 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemThumbnailViewHolder.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemThumbnailViewHolder.java @@ -2,7 +2,6 @@ package de.luhmer.owncloudnewsreader.adapter; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; -import android.util.Log; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; @@ -24,19 +23,17 @@ import de.luhmer.owncloudnewsreader.helper.SquareRoundedBitmapDisplayer; import static android.view.View.GONE; -public class RssItemThumbnailViewHolder extends RssItemViewHolder { +public class RssItemThumbnailViewHolder extends RssItemViewHolder { private final DisplayImageOptions displayImageOptionsThumbnail; - private final SubscriptionDetailListItemThumbnailBinding binding; RssItemThumbnailViewHolder(@NonNull SubscriptionDetailListItemThumbnailBinding binding, SharedPreferences sharedPreferences) { - super(binding.getRoot(), sharedPreferences); - this.binding = binding; + super(binding, sharedPreferences); Drawable feedIcon = VectorDrawableCompat.create(itemView.getResources(), R.drawable.feed_icon, null); int width = Math.round(88f * binding.imgViewThumbnail.getContext().getResources().getDisplayMetrics().density); displayImageOptionsThumbnail = new DisplayImageOptions.Builder() .resetViewBeforeLoading(true) - .preProcessor(new SquareRoundedBitmapDisplayer(30, 0,width)) + .preProcessor(new SquareRoundedBitmapDisplayer(30, 0, width)) .showImageOnLoading(feedIcon) .showImageForEmptyUri(feedIcon) .showImageOnFail(feedIcon) diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemViewHolder.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemViewHolder.java index 72888275..c4b6e401 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemViewHolder.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemViewHolder.java @@ -7,7 +7,6 @@ import android.graphics.Typeface; import android.text.Html; import android.text.Spannable; import android.text.SpannableString; -import android.text.format.DateUtils; import android.text.style.ForegroundColorSpan; import android.util.Log; import android.util.SparseIntArray; @@ -22,6 +21,7 @@ import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import androidx.viewbinding.ViewBinding; import org.greenrobot.eventbus.Subscribe; @@ -35,9 +35,10 @@ import de.luhmer.owncloudnewsreader.helper.DateTimeFormatter; import de.luhmer.owncloudnewsreader.helper.FavIconHandler; import de.luhmer.owncloudnewsreader.services.PodcastDownloadService; -public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { +public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { private final static String TAG = RssItemViewHolder.class.getCanonicalName(); + protected T binding; private static final SparseIntArray downloadProgressList = new SparseIntArray(); private static FavIconHandler favIconHandler = null; protected final SharedPreferences mPrefs; @@ -50,9 +51,11 @@ public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implemen private int starColor; private int inactiveStarColor; + private SparseIntArray initalFontSizes = new SparseIntArray(); - RssItemViewHolder(@NonNull View itemView, SharedPreferences sharedPreferences) { - super(itemView); + RssItemViewHolder(@NonNull ViewBinding binding, SharedPreferences sharedPreferences) { + super(binding.getRoot()); + this.binding = (T) binding; this.mPrefs = sharedPreferences; bodyForegroundColor = new ForegroundColorSpan(ContextCompat.getColor(itemView.getContext(), android.R.color.secondary_text_dark)); @@ -63,6 +66,18 @@ public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implemen itemView.setOnClickListener(this); itemView.setOnLongClickListener(this); + + extractInitialFontSize(getTextViewBody()); + extractInitialFontSize(getTextViewTitle()); + extractInitialFontSize(getTextViewSummary()); + extractInitialFontSize(getTextViewBody()); + extractInitialFontSize(getTextViewItemDate()); + } + + private void extractInitialFontSize(TextView tv) { + if (tv != null) { + initalFontSizes.append(tv.getId(), Math.round(tv.getTextSize())); + } } /** @@ -72,18 +87,21 @@ public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implemen * @param initialTvSize app layout definition default size of TextView element * @param halfScale if set to true, will only apply half of the scaling factor */ - private static void scaleTextSize(TextView tv, int initialTvSize, boolean halfScale, SharedPreferences mPrefs) { + private void scaleTextSize(TextView tv, int initialTvSize, boolean halfScale, SharedPreferences mPrefs) { float scalingFactor = Float.parseFloat(mPrefs.getString(SettingsActivity.SP_FONT_SIZE, "1.0")); if (halfScale) { scalingFactor = scalingFactor + (1 - scalingFactor) / 2; } - int initialSize = initialTvSize; - if (initialSize < 0) { - initialSize = Math.round(tv.getTextSize()); + if (initialTvSize < 0) { + initialTvSize = Math.round(tv.getTextSize()); } // float sp = initialSize / tv.getContext().getResources().getDisplayMetrics().scaledDensity; // transform scaled pixels, device pixels - tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, Math.round(initialSize * scalingFactor)); + int newSize = Math.round(initialTvSize * scalingFactor); + + // String name = tv.getResources().getResourceEntryName(tv.getId()); + // Log.d(TAG, name + " scale textsize from " + initialTvSize + " to " + newSize); + tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, newSize); } /** @@ -151,7 +169,7 @@ public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implemen TextView textViewSummary = getTextViewSummary(); if (textViewSummary != null) { try { - int textSizeSummary = Math.round(getTextViewSummary().getTextSize()); + int textSizeSummary = initalFontSizes.get(getTextViewSummary().getId()); textViewSummary.setText(Html.fromHtml(rssItem.getTitle())); scaleTextSize(textViewSummary, textSizeSummary, false, mPrefs); } catch (Exception e) { @@ -169,10 +187,10 @@ public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implemen textViewTitle.setText(Html.fromHtml(title)); } else { // append date to title - textViewTitle.setText(Html.fromHtml(title) + " · " + DateTimeFormatter.getTimeAgo(rssItem.getPubDate())); + textViewTitle.setText(String.format("%s · %s", Html.fromHtml(title), DateTimeFormatter.getTimeAgo(rssItem.getPubDate()))); } - int textSizeTitle = Math.round(textViewTitle.getTextSize()); + int textSizeTitle = initalFontSizes.get(textViewTitle.getId()); scaleTextSize(textViewTitle, textSizeTitle, true, mPrefs); sizeOfFavIcon = textSizeTitle; @@ -181,7 +199,7 @@ public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implemen if (textViewItemDate != null) { - int textSizeItemDate = Math.round(getTextViewItemDate().getTextSize()); + int textSizeItemDate = initalFontSizes.get(getTextViewItemDate().getId()); //textViewItemDate.setText(DateUtils.getRelativeTimeSpanString(rssItem.getPubDate().getTime())); textViewItemDate.setText(DateTimeFormatter.getTimeAgo(rssItem.getPubDate())); scaleTextSize(textViewItemDate, textSizeItemDate, true, mPrefs); @@ -194,11 +212,11 @@ public abstract class RssItemViewHolder extends RecyclerView.ViewHolder implemen ImageView imgViewFavIcon = getImageViewFavIcon(); if (imgViewFavIcon != null) { - favIconHandler.loadFavIconForFeed(favIconUrl, imgViewFavIcon, Math.round((marginFavIcon - sizeOfFavIcon) / 2)); + favIconHandler.loadFavIconForFeed(favIconUrl, imgViewFavIcon, Math.round((marginFavIcon - sizeOfFavIcon) / 2f)); } if (textViewBody != null) { - int textSizeBody = Math.round(textViewBody.getTextSize()); + int textSizeBody = initalFontSizes.get(textViewBody.getId()); String body = rssItem.getMediaDescription(); if (body == null || body.isEmpty()) { diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemWebViewHolder.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemWebViewHolder.java index b187face..6e792f0b 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemWebViewHolder.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/adapter/RssItemWebViewHolder.java @@ -8,17 +8,17 @@ import android.widget.TextView; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; +import androidx.viewbinding.ViewBinding; import de.luhmer.owncloudnewsreader.async_tasks.RssItemToHtmlTask; import de.luhmer.owncloudnewsreader.database.model.RssItem; import de.luhmer.owncloudnewsreader.databinding.SubscriptionDetailListItemWebLayoutBinding; -public class RssItemWebViewHolder extends RssItemViewHolder { - SubscriptionDetailListItemWebLayoutBinding binding; +public class RssItemWebViewHolder extends RssItemViewHolder { - RssItemWebViewHolder(@NonNull SubscriptionDetailListItemWebLayoutBinding binding, SharedPreferences sharedPreferences) { - super(binding.getRoot(), sharedPreferences); - this.binding = binding; + + public RssItemWebViewHolder(@NonNull ViewBinding binding, SharedPreferences sharedPreferences) { + super(binding, sharedPreferences); } @Override -- cgit v1.2.3