it-swarm.com.ru

Как получить изображение с веб-сайта URL в imageview в Android

Я пытаюсь получить изображение в ImageView с веб-сайта URL, но изображение не отображается, Что не так в этом коде? Это URL-адрес image

Это моя основная деятельность

ImageView i;
private Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    i=(ImageView)findViewById(R.id.ImageView1);




    bitmap=GetBitmapfromUrl("http://test-dashboard1.seeloz.com/system/images/products_images/86/5454544114_1401886223?1401886223");
    i.setImageBitmap(bitmap);


}


public Bitmap GetBitmapfromUrl(String scr) {
    try {
        URL url=new URL(scr);
        HttpURLConnection connection=(HttpURLConnection)url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input=connection.getInputStream();
        Bitmap bmp = BitmapFactory.decodeStream(input);
        return bmp;



    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;

    }
}}

в файле XML

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ImageView
        Android:id="@+id/imageView1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true"
        Android:layout_marginLeft="85dp"
        Android:layout_marginTop="179dp"
        Android:src="@drawable/ic_launcher" />

</RelativeLayout>

мой AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.image"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk
        Android:minSdkVersion="8"
        Android:targetSdkVersion="17" />
<uses-permission Android:name="Android.permission.INTERNET"/>
    <application
        Android:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >
        <activity
            Android:name="com.example.image.MainActivity"
            Android:label="@string/app_name" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
7
user3798394

Создание сети IO в главном потоке - зло. Лучше избегать.

Кроме того - ваш URL-адрес доступа неверен.

Вместо этого используйте что-то вроде этого:

 private Bitmap bmp;

   new AsyncTask<Void, Void, Void>() {                  
        @Override
        protected Void doInBackground(Void... params) {
            try {
                InputStream in = new URL(IMAGE_URL).openStream();
                bmp = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
               // log error
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            if (bmp != null)
                imageView.setImageBitmap(bmp);
        }

   }.execute();

Это «старый способ» загрузки ресурсов URL на дисплей. Честно говоря, я не писал такой код в long время. Volley и Picasso просто делают это намного лучше , Чем я, включая прозрачный локальный кэш, управление несколькими потоками загрузчика и , Обеспечивающие эффективные политики изменения размера перед загрузкой. Все кроме кофе :)

17
Gilad Haimov

Попробуйте с Пикассо . Это займет у вас почти одну полную строку кода и менее минуты, чтобы его настроить. 

В вашем случае это будет: 

Picasso.with(context).load(""http://imageurlgoeshere").into(i);
7
appoll

Если вы собираетесь загружать несколько изображений с URL-адресов в своем приложении, определенно стоит обратить внимание на:

Универсальный загрузчик изображений nostra13

Это потрясающая библиотека с множеством функций для отображения изображений с URL-адресов, преобразования в растровые изображения и т.д.

После того, как вы включили класс и объявили конфигурацию imageloader + imageloader, все просто:

imageLoader.displayImage("http://www.yoursite.com/my_picture.png", imageView);

Где imageView - это imageView, в котором вы бы хотели, чтобы изображение отображалось.

1
Jonny07

Ваша проблема не в коде, а в сервере. Попробуйте этот пример URL и скажите мне, работает ли он:

http://cdn.sstatic.net/stackoverflow/img/Apple-touch-icon.png

0
Ilya Gazman