Я пытаюсь использовать Glide для отображения изображений в Recyclerview, но они размыты (изображения находятся в формате jpg).Изображения с использованием Glide размыты
Я попытался использовать Picasso для их отображения, но я получаю точно такую же проблему: изображения размыты. В качестве теста у меня также есть 10 рисунков, и они кажутся очень хорошими. Кто-нибудь знает, почему изображения размыты?
** EDIT **
Я просто побежал мой код на (Genymotion эмуляторе) Google Galaxy Nexus 4.2.2; API 17 и изображения в порядке! Итак, следующая проблема заключается в том, почему изображения были размыты на (эмулятор Genymotion) Motorola Moto X 4.3; API 18.
** EDIT **
Я думаю, что я узнал, почему мои изображения были размытыми: В моем основном фрагменте я написал URL моих изображений в мою базу данных с помощью пользовательского контента моего провайдера. Мои начальные изображения были более низкого разрешения, поэтому, когда я их отображал, и из-за изменения размера и форматирования они стали размытыми. Поэтому я использовал изображение более высокого разрешения в надежде, что это решит проблему. Сначала это не было (разочарование !!), пока я не изменил номер версии базы данных. Новые изображения были затем записаны в базу данных, и проблема была правильной.
package demo.example.com.customarrayadapter;
import android.content.Context;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
import demo.example.com.customarrayadapter.data.FlavorsContract;
/**
* Created by richard on 03/01/16.
*/
public class AndroidFlavorCursorRecyclerViewAdapter extends
CursorRecyclerAdapter<AndroidFlavorCursorRecyclerViewAdapter
.DataObjectHolder> {
private static String LOG_TAG = AndroidFlavorCursorRecyclerViewAdapter.class.getSimpleName();
private List<AndroidFlavor> mDataset;
private static MyClickListener myClickListener;
private Cursor mCursor;
private int posterHeight;
private int posterWidth;
public static class DataObjectHolder extends RecyclerView.ViewHolder
implements View
.OnClickListener {
TextView label;
ImageView image;
public DataObjectHolder(View itemView) {
super(itemView);
//label = (TextView) itemView.findViewById(R.id.flavor_text);
image = (ImageView) itemView.findViewById(R.id.flavor_image);
Log.i(LOG_TAG, "Adding Listener");
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
myClickListener.onItemClick(getPosition(), v);
}
}
public void setOnItemClickListener(MyClickListener myClickListener) {
this.myClickListener = myClickListener;
}
public AndroidFlavorCursorRecyclerViewAdapter(Cursor cursor, int w, int h) {
super(cursor);
//mCursor = cursor;
posterHeight = h;
posterWidth = w;
}
@Override
public DataObjectHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.flavor_item, parent, false);
DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
return dataObjectHolder;
}
@Override
public void onBindViewHolderCursor(DataObjectHolder holder, Cursor cursor) {
Context context = holder.image.getContext();
//Log.i(LOG_TAG,"image:" + cursor.getString(
// cursor.getColumnIndex(FlavorsContract.FlavorEntry.COLUMN_FILM_POSTER)));
//holder.label.setText(cursor.getString(
// cursor.getColumnIndex(FlavorsContract.FlavorEntry.COLUMN_VERSION_NAME)));
String url = cursor.getString(
cursor.getColumnIndex(FlavorsContract.FlavorEntry.COLUMN_FILM_POSTER));
Glide.with(context.getApplicationContext()).load(url)
.into(holder.image);
//Picasso.with(context).load("http://i.imgur.com/DvpvklR.png")
// .into(holder.image);
Log.v(LOG_TAG, "onBindViewHolderCursor() " + cursor.getCount());
}
// public void addItem(AndroidFlavor dataObj, int index) {
// mDataset.add(dataObj);
// notifyItemInserted(index);
//}
//public void deleteItem(int index) {
// mDataset.remove(index);
// notifyItemRemoved(index);
//}
//@Override
//public int getItemCount() {
// return mDataset.size();
//}
public interface MyClickListener {
public void onItemClick(int position, View v);
}
}
Я думал, что это может быть хорошей идеей, чтобы поставить свою ImageView:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<demo.example.com.customarrayadapter.SquareImageView
android:id="@+id/flavor_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:scaleType="centerCrop"
/>
</FrameLayout>
SquareImageView класс:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
public class SquareImageView extends ImageView
{
public SquareImageView(Context context)
{
super(context);
}
public SquareImageView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()*2); //Snap to width
}
}
Ничего себе! Удивительно, что мой пост просматривался 21 раз, но кто-нибудь может помочь. Если вам потребуются более подробные ребята, я был бы рад дать это. – chestchindian