android - veo - Imágenes que no se cargan en Fresco
no puedo ver imagenes en mi correo hotmail (6)
Estoy intentando cargar imágenes en Fresco, pero las imágenes no parecen cargarse. Cuando agrego una vista de marcador de posición, el marcador de posición se muestra.
public static void loadImg(final Context c, final SimpleDraweeView view, final String img){
Uri uri = Uri.parse("https://placekitten.com/g/201/300");
view.setImageURI(uri);
}
Tenga en cuenta que estoy inicializando Fresco en la aplicación y sí tengo uso de Internet en el Manifiesto.
SimpleDraweeView
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/small_box_image"
android:layout_width="match_parent"
android:layout_height="150dp"
fresco:placeholderImage="@drawable/google"
fresco:fadeDuration="300"
fresco:viewAspectRatio="1.33"
/>
Método llamando a loadImg
public static View generateTileView(Context c, Tile t){
LayoutInflater inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view;
boolean desc = false;
switch(t.getObjectTypeName()){
case Tile.OBJECT_NAME:
view = inflater.inflate(R.layout.view_tile_small_object, null);
break;
case Tile.LOOK_CLOSER_NAME:
view = inflater.inflate(R.layout.view_tile_small_look_closer, null);
desc = true;
break;
case Tile.STORY_NAME:
view = inflater.inflate(R.layout.view_tile_small_story, null);
desc = true;
break;
case Tile.TOUR_NAME:
view = inflater.inflate(R.layout.view_tile_small_tour, null);
desc = true;
break;
default:
view = inflater.inflate(R.layout.view_tile_small_object, null);
break;
}
TextView type = (TextView) view.findViewById(R.id.small_box_type);
TextView title = (TextView) view.findViewById(R.id.small_box_title);
SimpleDraweeView img = (SimpleDraweeView) view.findViewById(R.id.small_box_image);
if(desc) {
TextView descText = (TextView) view.findViewById(R.id.small_box_desc);
if ( t.getDescription() != null) {
descText.setText(t.getDescription());
descText.setTypeface(TypefaceUtil.get(c, TypefaceUtil.ENZO_M));
}else{
descText.setVisibility(View.GONE);
}
}
title.setText(t.getTitle());
title.setTypeface(TypefaceUtil.get(c, TypefaceUtil.SOFIA_BOLD));
type.setText(t.getObjectTypeName());
type.setTypeface(TypefaceUtil.get(c, TypefaceUtil.SOFIA_BOLD));
ViewUtils.loadImg(c, img, t.getImg());
return view;
}
public static void injectTileViews(Context c, final OnFragmentChangeListener listener,
List<Tile> tiles, LinearLayout leftSide, LinearLayout rightSide){
int index = 0;
for(final Tile t : tiles){
//Gets the views and the ImageView for the star
View v = ViewUtils.generateTileView(c,t);
if(!t.getObjectTypeName().equals(Tile.LOOK_CLOSER_NAME)) {
final ImageView star = (ImageView) v.findViewById(R.id.tile_star);
//Sets the favorite on click listener
star.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String type = "";
switch(t.getObjectTypeName()){
case Tile.OBJECT_NAME:
type = OnFragmentChangeListener.OBJECT;
break;
case Tile.STORY_NAME:
type = OnFragmentChangeListener.STORY;
break;
case Tile.TOUR_NAME:
type = OnFragmentChangeListener.TOUR;
break;
}
t.setFavorite(!t.getFavorite());
listener.onFavorite(type, t.getObjectID(), t.getFavorite());
star.setImageResource((t.getFavorite()) ? R.drawable.ic_grade : R.drawable.favorite_star);
}
});
//sets the stat image based on whether it''s favorite or no
star.setImageResource((t.getFavorite()) ? R.drawable.ic_grade : R.drawable.favorite_star);
}
//sets the entire tile click listener
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (t.getObjectTypeName()) {
case Tile.OBJECT_NAME:
listener.onFragmentChange(MainActivity.OBJECT, t.getObjectID());
break;
case Tile.TOUR_NAME:
listener.onFragmentChange(MainActivity.TOUR, t.getTourID());
break;
case Tile.STORY_NAME:
listener.onFragmentChange(MainActivity.STORY, t.getStoryID());
break;
case Tile.LOOK_CLOSER_NAME:
listener.onFragmentChange(MainActivity.LOOK_CLOSER, t.getObjectID());
break;
}
}
});
//invalidates the measurement
leftSide.invalidate();
rightSide.invalidate();
//sets the measure spec
final int widthMeasureSpec =
View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.MATCH_PARENT,View.MeasureSpec.UNSPECIFIED);
final int heightMeasureSpec =
View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED);
//re-measures
leftSide.measure(widthMeasureSpec, heightMeasureSpec);
rightSide.measure(widthMeasureSpec, heightMeasureSpec);
int l = leftSide.getMeasuredHeight();
int r = rightSide.getMeasuredHeight();
//determines which side to add the view to
if(l <= r){
leftSide.addView(v);
}else{
rightSide.addView(v);
}
//sets the bottom margin since it needs to be part of the parent before we
//can get the layout params
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) v.getLayoutParams();
params.setMargins(0, 0, 0, (int) c.getResources().getDimension(R.dimen.margin_normal));
v.setLayoutParams(params);
v.requestLayout();
//adds the index
index++;
}
}
Inicializando
public class MyApplication extends Application {
public static DisplayMetrics metrics;
private Typeface exoBlack;
private Tracker mTracker;
@Override
public void onCreate() {
super.onCreate();
LeakCanary.install(this);
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);
Fresco.initialize(this);
}
}
Registro de muestra
12-22 15:52:47.424 32462 32462 V unknown:AbstractDraweeController: controller 77d4657 null -> 0: initialize
12-22 15:52:47.425 32462 32462 V unknown:AbstractDraweeController: controller 77d4657 0: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@a0fa544
12-22 15:52:47.435 32462 32462 V unknown:AbstractDraweeController: controller 3a5f0f3 null -> 1: initialize
12-22 15:52:47.435 32462 32462 V unknown:AbstractDraweeController: controller 3a5f0f3 1: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@c03d1b0
12-22 15:52:47.442 32462 32462 V unknown:AbstractDraweeController: controller ef0f7ae null -> 2: initialize
12-22 15:52:47.442 32462 32462 V unknown:AbstractDraweeController: controller ef0f7ae 2: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@6a4a94f
12-22 15:52:47.448 32462 32462 V unknown:AbstractDraweeController: controller 1cc58dc null -> 3: initialize
12-22 15:52:47.449 32462 32462 V unknown:AbstractDraweeController: controller 1cc58dc 3: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@d3d0de5
12-22 15:52:47.455 32462 32462 V unknown:AbstractDraweeController: controller 158e0ba null -> 4: initialize
12-22 15:52:47.455 32462 32462 V unknown:AbstractDraweeController: controller 158e0ba 4: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@12c8b6b
12-22 15:52:47.459 32462 32462 V unknown:AbstractDraweeController: controller 3a5f0f3 1: onAttach: request needs submit
12-22 15:52:47.463 32462 32462 V unknown:AbstractDraweeController: controller 3a5f0f3 1: submitRequest: dataSource: ab5a361
12-22 15:52:47.464 32462 32462 V unknown:AbstractDraweeController: controller 1cc58dc 3: onAttach: request needs submit
12-22 15:52:47.465 32462 32462 V unknown:AbstractDraweeController: controller 1cc58dc 3: submitRequest: dataSource: 5244e86
12-22 15:52:47.465 32462 32462 V unknown:AbstractDraweeController: controller 77d4657 0: onAttach: request needs submit
12-22 15:52:47.466 32462 32462 V unknown:AbstractDraweeController: controller 77d4657 0: submitRequest: dataSource: 2067347
12-22 15:52:47.466 32462 32462 V unknown:AbstractDraweeController: controller ef0f7ae 2: onAttach: request needs submit
12-22 15:52:47.467 32462 32462 V unknown:AbstractDraweeController: controller ef0f7ae 2: submitRequest: dataSource: 3c8e774
12-22 15:52:47.467 32462 32462 V unknown:AbstractDraweeController: controller 158e0ba 4: onAttach: request needs submit
12-22 15:52:47.468 32462 32462 V unknown:AbstractDraweeController: controller 158e0ba 4: submitRequest: dataSource: ac8149d
12-22 15:52:47.481 32462 32528 V unknown:BufferedDiskCache: Did not find image for https://placekitten.com/g/201/300 in staging area
12-22 15:52:47.481 32462 32528 V unknown:BufferedDiskCache: Disk cache read for https://placekitten.com/g/201/300
12-22 15:52:47.483 32462 32528 V unknown:BufferedDiskCache: Disk cache miss for https://placekitten.com/g/201/300
12-22 15:52:58.837 491 491 V unknown:AbstractDraweeController: controller 77d4657 null -> 0: initialize
12-22 15:52:58.837 491 491 V unknown:AbstractDraweeController: controller 77d4657 0: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@a0fa544
12-22 15:52:58.847 491 491 V unknown:AbstractDraweeController: controller 3a5f0f3 null -> 1: initialize
12-22 15:52:58.848 491 491 V unknown:AbstractDraweeController: controller 3a5f0f3 1: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@c03d1b0
12-22 15:52:58.856 491 491 V unknown:AbstractDraweeController: controller ef0f7ae null -> 2: initialize
12-22 15:52:58.856 491 491 V unknown:AbstractDraweeController: controller ef0f7ae 2: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@6a4a94f
12-22 15:52:58.862 491 491 V unknown:AbstractDraweeController: controller 1cc58dc null -> 3: initialize
12-22 15:52:58.863 491 491 V unknown:AbstractDraweeController: controller 1cc58dc 3: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@d3d0de5
12-22 15:52:58.869 491 491 V unknown:AbstractDraweeController: controller 158e0ba null -> 4: initialize
12-22 15:52:58.869 491 491 V unknown:AbstractDraweeController: controller 158e0ba 4: setHierarchy: com.facebook.drawee.generic.GenericDraweeHierarchy@12c8b6b
12-22 15:52:58.872 491 491 V unknown:AbstractDraweeController: controller 3a5f0f3 1: onAttach: request needs submit
12-22 15:52:58.878 491 491 V unknown:AbstractDraweeController: controller 3a5f0f3 1: submitRequest: dataSource: ab5a361
12-22 15:52:58.878 491 491 V unknown:AbstractDraweeController: controller 1cc58dc 3: onAttach: request needs submit
12-22 15:52:58.879 491 491 V unknown:AbstractDraweeController: controller 1cc58dc 3: submitRequest: dataSource: 5244e86
12-22 15:52:58.879 491 491 V unknown:AbstractDraweeController: controller 77d4657 0: onAttach: request needs submit
12-22 15:52:58.880 491 491 V unknown:AbstractDraweeController: controller 77d4657 0: submitRequest: dataSource: 2067347
12-22 15:52:58.880 491 491 V unknown:AbstractDraweeController: controller ef0f7ae 2: onAttach: request needs submit
12-22 15:52:58.881 491 491 V unknown:AbstractDraweeController: controller ef0f7ae 2: submitRequest: dataSource: 3c8e774
12-22 15:52:58.881 491 491 V unknown:AbstractDraweeController: controller 158e0ba 4: onAttach: request needs submit
12-22 15:52:58.882 491 491 V unknown:AbstractDraweeController: controller 158e0ba 4: submitRequest: dataSource: ac8149d
12-22 15:52:58.898 491 535 V unknown:BufferedDiskCache: Did not find image for https://placekitten.com/g/201/300 in staging area
12-22 15:52:58.899 491 535 V unknown:BufferedDiskCache: Disk cache read for https://placekitten.com/g/201/300
12-22 15:52:58.904 491 535 V unknown:BufferedDiskCache: Disk cache miss for https://placekitten.com/g/201/300
Manifiesto
<application
android:name=".utils.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:logo="@drawable/home"
android:screenOrientation="portrait"
android:theme="@style/AppTheme" >
No conozco la lógica pero Fresco prefiere obtener el Uri de un archivo. Primero convierta su uri en un archivo y luego obtenga Uri de ese archivo. Funciona para mí en el almacenamiento local.
public static void loadImg(final Context c, final SimpleDraweeView view, final String img){
Uri uri = Uri.parse("https://placekitten.com/g/201/300");
view.setImageURI(Uri.fromFile(new File(uri)));
}
Prueba esto
SimpleDraweeView imageView= (SimpleDraweeView) v.findViewById(R.id.full_ad_unit);
Uri imageUri = Uri.parse(imagePath);
ImageRequest request = ImageRequest.fromUri(imageUri);
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(imageView.getController()).build();
Log.e(TAG, "ImagePath uri " + imageUri);
imageView.setController(controller);
Sé que esta es una pregunta antigua, pero para aquellos que ingresan aquí: android:layout_width="wrap_content"
y android:layout_height="wrap_content"
no son compatibles con Fresco. Esta pregunta ya ha sido respondida completamente here .
Si tiene problemas con CARGAR IMÁGENES GRANDES , simplemente habilite Reducir el muestreo al configurar la canalización de la imagen.
Escribe tu inicialización de Fresco como esta
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
.setDownsampleEnabled(true)
...
.build();
Fresco.initialize(this, config);
Un problema similar se reporta en el repositorio de frescos en GitHub HERE (en los comentarios debajo del problema principal informado)
Según los comentarios sobre el tema por el desarrollador que lo informó:
Parece ser algo aleatorio: está bien para la mayoría de las imágenes. Cuando se borra la memoria caché para la prueba, las pocas imágenes que "no están cargadas" no son las mismas entre ejecuciones. Tengo la respuesta "200" de apache para la imagen que se cargó correctamente y se muestra (registro de apache). Y ningún registro en absoluto para las imágenes al azar al estrellarse.
Sugeriría probar las siguientes sugerencias de otros desarrolladores para el problema:
-
(From the issue report page)
Borre la memoria caché e intente nuevamente. -
(From the issue report page)
Use un proxy / monitor HTTP para averiguar qué respuesta recibe del servidor. Si obtiene un 204 Sin contenido, es posible que el servidor no acepte el encabezado del agente de usuario. -
(My suggestion)
Intente cargar una imagen utilizando una URL completamente diferente y vea si sucede con cada imagen o solo con esta. Si es solo este problema podría estar con la imagen.
Otro informe sobre el mismo tema HERE , pero este aún no tiene respuestas concretas con soluciones.
También es posible que desee suscribirse a las notificaciones en estas publicaciones en caso de que alguien publique una buena solución pronto y se fusione. A continuación, puede obtener la última versión y relajarse. :) (En caso de que alguno de los anteriores no funcione para usted).
necesita un enlace directo, por ejemplo: http://i.imgur.com/IJF8x9D.jpg
y debe agregar el tipo de archivo final de uri. para este caso: ".jpg"
Uri uri = Uri.parse (" http://i.imgur.com/IJF8x9D.jpg ");