Загрузить изображение с URL - PullRequest
1 голос
/ 17 мая 2011

Я искал и пробовал пару разных методов. У меня не хватает обоих. Это мой текущий метод:

package com.dop.mobilevforum;

import java.io.InputStream;
import java.net.URL;

import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.VideoView;

public class Vforum extends Activity
{
    private String imgPath = "http://mysite.com/mv/vfdemo1/slides/slide1.jpg";

    private ImageView slideHolder;

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vforum);

        slideHolder = (ImageView) findViewById(R.id.slideHolder);

        Drawable drawable = LoadImageFromWebOperations(imgPath);
        slideHolder.setImageDrawable(drawable);
    }

    private Drawable LoadImageFromWebOperations(String url)
    {
        try
        {
            InputStream is = (InputStream) new URL(url).getContent();
            Drawable d = Drawable.createFromStream(is, "src name");
            return d;
        } 
        catch (Exception e)
        {
            Log.w("LoadImageFromWebOperations",e.toString());
            return null;
        }
    }
}

метод LoadImageFromWebOperations возвращает растровое изображение, поэтому я знаю, что эта часть работает. Это slideHolder.setImageDrawable(drawable);, что я думаю, что это терпит неудачу. Это мой XML:

<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/mobile_vforum_bg">
    <ImageView 
        android:id="@+id/slideHolder"
        android:layout_width="320px" 
        android:layout_height="240px">
    </ImageView>
</FrameLayout>

есть идеи? У меня просто черный экран, без ошибок.

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Лучше всего использовать WebView, но если вы действительно хотите сделать это, не используйте setImageDrawable. Вы должны использовать setImageBitmap. Если ваш LoadImageFromWebOperations возвращает растровое изображение, вам не нужно ничего менять, кроме функции, которую вы используете, и она должна работать плавно.

0 голосов
/ 17 мая 2011

Ваш код работает, мой дорогой друг, ваш URL не работает http://mysite.com/mv/vfdemo1/slides/slide1.jpg.

Вы можете использовать это, он работает на 100%, но ваш код также работает

URL url = new URL("http://variable3.com/files/images/email-sig.jpg");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
slideHolder.setImageBitmap(bmp);
...