Html.ImageGetter TextView
Donc Im en utilisant ImageGetter pour afficher les images à partir JSON blog. Im obtenir la bonne source, dans le journal, mais les changements de l'URL lorsqu'il atteint setBounds. Des idées?
Code:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blog_view);
Intent intent = getIntent();
Uri blogUri = intent.getData();
mPost = blogUri.toString();
mUrl = getIntent().getStringExtra("mUrl");
TextView textView = (TextView) findViewById(R.id.scrollView1);
textView.setText(Html.fromHtml(mPost, imgGetter, null));
}
private ImageGetter imgGetter = new ImageGetter(){
@Override
public Drawable getDrawable(String source){
Drawable drawable = Drawable.createFromPath(source);
try {
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}catch (NullPointerException e){
logException(e);
}
return drawable;
}
};
La "source" avant de le faire est d'essayer
http://www.domain.com/images_blog/feature.png
mais dans la capture de l'erreur est:
Impossible de décoder les flux:
java.io.FileNotFoundException: /http:/www.domain.com/images_blog/feature.png : open failed: ENOENT (No such file or directory)
- lisez attentivement la documentation pour Drawable.createFromPath()
- Donc je suppose que vous dites que je devrais utiliser Drawable.createFromStream(), correct?
- oui, mais vous pouvez également créer une sorte de mémoire cache et puis createFromPath pourrait être utilisé
- Avez-vous un exemple ou tut qui explique ce processus?
- utiliser un des nombreux async télécharger les bibliothèques par exemple, github.com/zonghai-li/android-http-image-manager
Vous devez vous connecter pour publier un commentaire.
la solution la plus simple est:
il y en a un pas très élégant de re-mise en page d'un TextView après le téléchargement de l'image:
si quelqu'un sait la meilleure solution s'il vous plaît laissez-moi savoir
Si vous avez des mTV (je veux dire TextView), vous pouvez calculer en fonction des dimensions (mTv.getWidth() et mTv.getHeight()) et de la dimension de création d'image (bitmap.getWidth() et bitmap.getHeight()) et de l'ensemble de ces valeurs que les nouvelles dimensions de la TextView (mTv).
final float scale = c.getResources().getDisplayMetrics().density; mDrawable.setBounds(0, 0, Math.round(width * scale) , Math.round(height * scale));
Cette réponse peut aider quelqu'un. J'ai utilisé Jsoup pour extraire
<Img/>
tag de la chaîne puis-je afficher l'image dansImageView
et<p>
dansTextview
. Résultats a été, selon ce dont j'avais besoin. Aussi j'ai utilisé Image Universelle de Chargeur de Libaray de charger des images dansImageView
Puis j'ai ajouté vue par programme pour la mise en page dans mon cas, la disposition a été le linearlayout donc j'ai fait une classe d'assistance et passé de contenu,html chaîne linéaire et mise en page en tant que paramètre.ajouter jsoup dans votre projet.
Voici quelques extrait.
J'espère que ma réponse vous aidera à quelqu'un.