|
@@ -10,6 +10,8 @@
|
|
|
package com.compdfkit.tools.viewer.pdfthumbnail.adpater;
|
|
|
|
|
|
import android.content.res.ColorStateList;
|
|
|
+import android.graphics.RectF;
|
|
|
+import android.graphics.drawable.Drawable;
|
|
|
import android.os.AsyncTask;
|
|
|
import android.util.SparseIntArray;
|
|
|
import android.view.LayoutInflater;
|
|
@@ -18,6 +20,7 @@ import android.view.ViewGroup;
|
|
|
import android.widget.CheckBox;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
+import androidx.annotation.Nullable;
|
|
|
import androidx.appcompat.widget.AppCompatImageView;
|
|
|
import androidx.appcompat.widget.AppCompatTextView;
|
|
|
import androidx.cardview.widget.CardView;
|
|
@@ -27,12 +30,14 @@ import androidx.recyclerview.widget.RecyclerView;
|
|
|
import com.bumptech.glide.Glide;
|
|
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|
|
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
|
|
|
+import com.bumptech.glide.request.target.CustomTarget;
|
|
|
+import com.bumptech.glide.request.transition.Transition;
|
|
|
import com.compdfkit.core.document.CPDFDocument;
|
|
|
import com.compdfkit.core.page.CPDFPage;
|
|
|
import com.compdfkit.tools.R;
|
|
|
import com.compdfkit.tools.common.interfaces.COnSetPDFDisplayPageIndexListener;
|
|
|
import com.compdfkit.tools.common.utils.glide.CPDFWrapper;
|
|
|
-import com.compdfkit.tools.pageedit.drag.CDefaultItemTouchHelpCallback;
|
|
|
+import com.compdfkit.tools.docseditor.drag.CDefaultItemTouchHelpCallback;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
@@ -64,29 +69,36 @@ public class CPDFEditThumbnailListAdapter extends RecyclerView.Adapter<CPDFEditT
|
|
|
|
|
|
@Override
|
|
|
public void onBindViewHolder(@NonNull CPDFEditThumbnailListAdapter.CPDFThumbnailItemViewHolder holder, int position) {
|
|
|
- AppCompatImageView ivThumbnail = null;
|
|
|
CPDFPage tpdfPage = cPdfDocument.pageAtIndex(position);
|
|
|
- if (tpdfPage != null) {
|
|
|
- int rotate = tpdfPage.getRotation();
|
|
|
- if (rotate == 90 || rotate == 270) {
|
|
|
- ivThumbnail = holder.ivThumbnailImageRotate;
|
|
|
- holder.ivThumbnailImageRotate.setVisibility(View.VISIBLE);
|
|
|
- holder.ivThumbnailImage.setVisibility(View.GONE);
|
|
|
- } else {
|
|
|
- ivThumbnail = holder.ivThumbnailImage;
|
|
|
- holder.ivThumbnailImageRotate.setVisibility(View.GONE);
|
|
|
- holder.ivThumbnailImage.setVisibility(View.VISIBLE);
|
|
|
- }
|
|
|
- } else {
|
|
|
- ivThumbnail = holder.ivThumbnailImage;
|
|
|
- holder.ivThumbnailImageRotate.setVisibility(View.GONE);
|
|
|
- holder.ivThumbnailImage.setVisibility(View.VISIBLE);
|
|
|
- }
|
|
|
Glide.with(holder.itemView.getContext())
|
|
|
.load(CPDFWrapper.fromDocument(cPdfDocument, position))
|
|
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
|
|
- .transition(DrawableTransitionOptions.withCrossFade())
|
|
|
- .into(ivThumbnail);
|
|
|
+ .into(new CustomTarget<Drawable>() {
|
|
|
+ @Override
|
|
|
+ public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
|
|
+ RectF rectF = cPdfDocument.pageAtIndex(position).getSize();
|
|
|
+ float itemWidth = holder.clItem.getMeasuredWidth();
|
|
|
+ float itemHeight = holder.clItem.getMeasuredHeight();
|
|
|
+ float imageWidth = itemWidth;
|
|
|
+ float imageHeight = ((float)imageWidth / (float) rectF.width()) * rectF.height();
|
|
|
+
|
|
|
+ if (imageHeight > itemHeight){
|
|
|
+ imageHeight = itemHeight;
|
|
|
+ imageWidth = (imageHeight / rectF.height()) * rectF.width();
|
|
|
+ }
|
|
|
+ ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) holder.clThumbnail.getLayoutParams();
|
|
|
+ layoutParams.width = (int) imageWidth;
|
|
|
+ layoutParams.height = (int) imageHeight;
|
|
|
+ holder.clThumbnail.setLayoutParams(layoutParams);
|
|
|
+ holder.ivThumbnailImage.setImageDrawable(resource);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onLoadCleared(@Nullable Drawable placeholder) {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
holder.tvPageIndex.setText(String.valueOf(holder.getAdapterPosition() + 1));
|
|
|
updateSelectStatus(holder);
|
|
|
}
|
|
@@ -323,22 +335,18 @@ public class CPDFEditThumbnailListAdapter extends RecyclerView.Adapter<CPDFEditT
|
|
|
|
|
|
static class CPDFThumbnailItemViewHolder extends RecyclerView.ViewHolder {
|
|
|
private AppCompatImageView ivThumbnailImage;
|
|
|
- private AppCompatImageView ivThumbnailImageRotate;
|
|
|
private AppCompatTextView tvPageIndex;
|
|
|
-
|
|
|
- private CardView cardView;
|
|
|
-
|
|
|
private ConstraintLayout clThumbnail;
|
|
|
private CheckBox cbSelect;
|
|
|
|
|
|
+ private ConstraintLayout clItem;
|
|
|
public CPDFThumbnailItemViewHolder(@NonNull View itemView) {
|
|
|
super(itemView);
|
|
|
ivThumbnailImage = itemView.findViewById(R.id.iv_thumbnail);
|
|
|
- ivThumbnailImageRotate = itemView.findViewById(R.id.iv_thumbnail_rotate);
|
|
|
tvPageIndex = itemView.findViewById(R.id.tv_thumbnail_page_index);
|
|
|
- cardView = itemView.findViewById(R.id.card_view);
|
|
|
clThumbnail = itemView.findViewById(R.id.cl_thumbnail);
|
|
|
cbSelect = itemView.findViewById(R.id.ic_check);
|
|
|
+ clItem = itemView.findViewById(R.id.cl_item);
|
|
|
}
|
|
|
}
|
|
|
|