mirror of
https://github.com/readrops/Readrops.git
synced 2025-02-11 17:30:39 +01:00
Adding image displaying control with glide
This commit is contained in:
parent
6656724a53
commit
bab22e99ee
@ -36,6 +36,10 @@ dependencies {
|
||||
|
||||
implementation 'com.github.bumptech.glide:glide:4.8.0'
|
||||
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
|
||||
implementation ("com.github.bumptech.glide:recyclerview-integration:4.8.0") {
|
||||
// Excludes the support library because it's already included by Glide.
|
||||
transitive = false
|
||||
}
|
||||
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
|
||||
@ -49,4 +53,7 @@ dependencies {
|
||||
implementation "joda-time:joda-time:2.9.9"
|
||||
|
||||
implementation 'com.android.support:cardview-v7:28.0.0'
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -4,13 +4,11 @@ import android.app.Dialog;
|
||||
import android.arch.lifecycle.ViewModelProvider;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.DividerItemDecoration;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
@ -20,11 +18,11 @@ import android.support.v7.widget.helper.ItemTouchHelper;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.RequestManager;
|
||||
import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader;
|
||||
import com.bumptech.glide.util.ViewPreloadSizeProvider;
|
||||
import com.readrops.app.database.entities.Item;
|
||||
import com.readrops.readropslibrary.ParsingResult;
|
||||
|
||||
@ -46,7 +44,7 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
private NavigationView navigationView;
|
||||
private DrawerLayout drawerLayout;
|
||||
|
||||
private List<Item> itemList;
|
||||
private List<Item> newItems;
|
||||
|
||||
private TreeMap<LocalDateTime, Item> itemsMap;
|
||||
|
||||
@ -84,14 +82,16 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
viewModel.setSimpleCallback(this);
|
||||
|
||||
itemsMap = new TreeMap<>(LocalDateTime::compareTo);
|
||||
itemList = new ArrayList<>();
|
||||
newItems = new ArrayList<>();
|
||||
|
||||
viewModel.getItems().observe(this, (List<Item> items) -> {
|
||||
for (Item item : items) {
|
||||
/*for (Item item : items) {
|
||||
itemsMap.put(item.getFormatedDate(), item);
|
||||
}
|
||||
}*/
|
||||
|
||||
adapter.submitList(items);
|
||||
newItems = items;
|
||||
if (!refreshLayout.isRefreshing())
|
||||
adapter.submitList(newItems);
|
||||
});
|
||||
|
||||
refreshLayout = findViewById(R.id.swipe_refresh_layout);
|
||||
@ -122,7 +122,12 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
private void initRecyclerView() {
|
||||
recyclerView = findViewById(R.id.items_recycler_view);
|
||||
|
||||
adapter = new MainItemListAdapter(Glide.with(this));
|
||||
ViewPreloadSizeProvider preloadSizeProvider = new ViewPreloadSizeProvider();
|
||||
adapter = new MainItemListAdapter(Glide.with(this), preloadSizeProvider);
|
||||
|
||||
RecyclerViewPreloader<String> preloader = new RecyclerViewPreloader<String>(Glide.with(this), adapter, preloadSizeProvider, 10);
|
||||
recyclerView.addOnScrollListener(preloader);
|
||||
|
||||
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
|
||||
@ -158,6 +163,10 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
return true;
|
||||
}
|
||||
}).attachToRecyclerView(recyclerView);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void updateList() {
|
||||
@ -167,6 +176,8 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
refreshLayout.setRefreshing(false);
|
||||
adapter.submitList(newItems);
|
||||
//newItems.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,29 +1,44 @@
|
||||
package com.readrops.app;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.recyclerview.extensions.ListAdapter;
|
||||
import android.support.v7.util.DiffUtil;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Patterns;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bumptech.glide.ListPreloader;
|
||||
import com.bumptech.glide.RequestBuilder;
|
||||
import com.bumptech.glide.RequestManager;
|
||||
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.bumptech.glide.request.transition.DrawableCrossFadeFactory;
|
||||
import com.bumptech.glide.util.ViewPreloadSizeProvider;
|
||||
import com.readrops.app.database.entities.Item;
|
||||
|
||||
public class MainItemListAdapter extends ListAdapter<Item, MainItemListAdapter.ViewHolder> {
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class MainItemListAdapter extends ListAdapter<Item, MainItemListAdapter.ViewHolder> implements ListPreloader.PreloadModelProvider<String> {
|
||||
|
||||
private RequestManager manager;
|
||||
private OnItemClickListener listener;
|
||||
private ViewPreloadSizeProvider preloadSizeProvider;
|
||||
|
||||
public MainItemListAdapter(RequestManager manager) {
|
||||
public MainItemListAdapter(RequestManager manager, ViewPreloadSizeProvider preloadSizeProvider) {
|
||||
super(DIFF_CALLBACK);
|
||||
|
||||
this.manager = manager;
|
||||
this.preloadSizeProvider = preloadSizeProvider;
|
||||
}
|
||||
|
||||
private static final DiffUtil.ItemCallback<Item> DIFF_CALLBACK = new DiffUtil.ItemCallback<Item>() {
|
||||
@ -39,6 +54,8 @@ public class MainItemListAdapter extends ListAdapter<Item, MainItemListAdapter.V
|
||||
}
|
||||
};
|
||||
|
||||
private static final DrawableCrossFadeFactory fadeFactory = new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
|
||||
@ -53,20 +70,39 @@ public class MainItemListAdapter extends ListAdapter<Item, MainItemListAdapter.V
|
||||
Item item = getItem(i);
|
||||
viewHolder.bind(item);
|
||||
|
||||
preloadSizeProvider.setView(viewHolder.itemImage);
|
||||
|
||||
// displaying image with some round corners
|
||||
RequestOptions requestOptions = new RequestOptions();
|
||||
requestOptions = requestOptions.transforms(new CenterCrop(), new RoundedCorners(16));
|
||||
|
||||
if (item.getImageLink() != null)
|
||||
manager.load(item.getImageLink()).apply(requestOptions).into(viewHolder.itemImage);
|
||||
manager.load(item.getImageLink())
|
||||
.apply(requestOptions)
|
||||
.transition(DrawableTransitionOptions.withCrossFade(fadeFactory))
|
||||
.into(viewHolder.itemImage);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public List<String> getPreloadItems(int position) {
|
||||
String url = getItem(position).getImageLink();
|
||||
|
||||
return Collections.singletonList(url);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public RequestBuilder<Drawable> getPreloadRequestBuilder(@NonNull String url) {
|
||||
return manager.load(url);
|
||||
}
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(Item item);
|
||||
}
|
||||
|
||||
public void setOnItemClickListener() {
|
||||
|
||||
public void setOnItemClickListener(OnItemClickListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
class ViewHolder extends RecyclerView.ViewHolder {
|
||||
|
Loading…
x
Reference in New Issue
Block a user