Como mostrar imagen img scr en formato HTML con fromHTML

Objetivo:

Mostrar una imagen usando fromHTML, de forma que podremos cogerla de una internet con la etiqueta img de HTML.

Antes de este tutorial, aunque muy básico, puede que desees familiarizarte con fromHTML. Para ello puedes pasarte por un ejemplo en el que sólo se utiliza texto en HTML en este tutorial. En él se muestra el hipertexto en un AlertDialog, pero es igualmente sencillo asignarlo a un TextView.

Cuando deseamos utilizar HTML en un TextView, por ejemplo, podemos llamar al paquete android.text.html, dejando que él actúe sobre nuestro texto, aplicando la vista indicadas en las etiquetas que le dan formato. En este HTML podemos incluso utilizar llamadas a imágenes con la tag img src.

Creamos  mini-aplicación para coger el HTML y lo aplicamos a un TextView para mostrarlo. Para ello, debemos crear una aplicación desde el principio,  crear un TextView para insertar el hipertexto en HTML (con imagen incluida en este caso), y finalmente llamar a la clase android.text.html. Para que las imágenes en el HTML aparezcan debemos implementar la función getImageHTML, que devolverá una instancia de la clase ImageGetter, necesaria para ello.

Vemos una captura de la mini-aplicación:

Imagen en fromHTML by TutorialAndroidcom

Y a continuación mostramos el texto comentado:

Código fuente Java:

[sourcecode language=”java”]
package fromHtml.image.tutorialandroid.com;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.text.Html.ImageGetter;
import android.util.Log;
import android.widget.TextView;

public class HtmlFromHtmlImageActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

String html = "Tus ejemplos en<br/>TutorialAndroid.com<br/><br/><img src=’http://www.tutorialandroid.com/tutorialandroidcom.jpg’ />";

Spanned s = Html.fromHtml(html,getImageHTML(),null);
TextView txt = (TextView)findViewById(R.id.main_menu_textview);
txt.setText(s);
}

public ImageGetter getImageHTML(){
ImageGetter ig = new ImageGetter(){
public Drawable getDrawable(String source) {
try{
Drawable d = Drawable.createFromStream(new URL(source).openStream(), "src name");
d.setBounds(0, 0, d.getIntrinsicWidth(),d.getIntrinsicHeight());
return d;
}catch(IOException e){
Log.v("IOException",e.getMessage());
return null;
}
}
};
return ig;
}

}
[/sourcecode]

Descárgate el código aquí

En el código descargable se encuentra el proyecto completo.

¡Espero que os sirva de ayuda, sobre todo a ti Ricardo Klein!

¡Saludos!

Como cambiar de tamaño una imagen (bitmap)

Objetivo:

Cambiar de tamaño una imagen (objeto de la clase Bitmap), para reducirlo o ampliarlo hasta un nuevo tamaño deseado.

Para ello podemos usar la función que hay más abajo, llamada redimensionarImagenMaximo(Bitmap mBitmap, float newWidth, float newHeigth), donde los parámetros serán el Bitmap que deseamos redimensionar, la nueva anchura y la nueva altura.

La función calcula una nueva escala, aplicandolas a una instancia de la clase Matrix, y posteriormente creando de un nuevo Bitmap, que vendrá ya con las nuevas dimensiones.

A continuación mostramos la función, la cual devolverá una nueva instancia de la clase Bitmap, que contendrá nuestra imagen ya redimensionada.

Código fuente función (Java):

[sourcecode language=”java”]
/**
* Redimensionar un Bitmap. By TutorialAndroid.com
* @param Bitmap mBitmap
* @param float newHeight
* @param float newHeight
* @param float newHeight
* @return Bitmap
*/
public Bitmap redimensionarImagenMaximo(Bitmap mBitmap, float newWidth, float newHeigth){
//Redimensionamos
int width = mBitmap.getWidth();
int height = mBitmap.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeigth) / height;
// create a matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// recreate the new Bitmap
return Bitmap.createBitmap(mBitmap, 0, 0, width, height, matrix, false);
}
[/sourcecode]