Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
#1

Загрузка в ImageView картинки по ссылке в отдельном потоке. Исправить код - Программирование Android

24.04.2014, 04:08. Просмотров 1699. Ответов 1
Метки нет (Все метки)

Здравствуйте! Пытаюсь загрузить картинку по ссылке из инета в ImageView в отдельном потоке. Поток реализовывал путем перегрузки метода run, но при запуске ничего не происходит. Подскажите пожалуйста, где туплю. Заранее спасибо!

MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.example.informerkg;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
 
public class MainActivity extends Activity implements OnClickListener {
 
    ImageButton btnMeteo;
    Intent intent;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btnMeteo= (ImageButton) findViewById(R.id.btnMeteo);
        
        btnMeteo.setOnClickListener(this);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
            intent= new Intent(this, MeteoActivity.class);
            startActivity(intent);
        }
    }
 
}
MeteoActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.example.informerkg;
 
import java.net.URL;
 
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MeteoActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.meteo);
        
        ImageView imgMeteo= (ImageView) findViewById(R.id.imgMeteo);
        
        String url_meteo= "http://www.informer.kg/pog/pngs/informer12.png";
        
        new LoadImageTask(imgMeteo, url_meteo);
        setResult(RESULT_OK);
        finish();
    }
}
Класс LoadImageTask, в котором и запускается поток, загружающий картинку с сети
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.io.InputStream;
import java.net.URL;
 
import android.graphics.drawable.Drawable;
import android.widget.ImageView;
 
public class LoadImageTask implements Runnable {
    private ImageView iv= null;
    private  String url_meteo= null;
 
    public LoadImageTask(ImageView iv, String url_meteo){
        this.iv= iv;
        this.url_meteo= url_meteo;
        new Thread(this).start();
    }
 
    private Drawable LoadImageFromWebOperations(String url_meteo) {
        try {
            InputStream is = (InputStream) new URL(url_meteo).getContent();
            Drawable d = Drawable.createFromStream(is, "meteo.png");
            return d;
        } catch (Exception e) {
            //Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG);
            return null;
        }
    }
 
    @Override
    public void run() {
        // TODO Auto-generated method stub
        try{
            iv.setImageDrawable(LoadImageFromWebOperations(url_meteo));
        }
        catch(Exception e){
            //Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG);
            return;
        }
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 04:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Загрузка в ImageView картинки по ссылке в отдельном потоке. Исправить код (Программирование Android):

Загрузка картинки из Ethernet-а в imageview - Программирование Android
Здравствуйте. Есть код public String grabImageFromUrl(String url, String path) { try { InputStream is =...

ImageView - загрузка картинки из SDCARD - Программирование Android
Написал класс который отображает в ImageView картинку которая лежит в SDCARD. public class ShowPictureInSD { public static...

Выполнение кода в отдельном потоке - Программирование Android
Добрый день! Изучаю программирование на андроид, написал тестовую программку где отрисовка происходит в отдельном потоке. Вроде...

Отрисовка данных в отдельном потоке - Программирование Android
Уважаемые гуру и простые хорошие ребята, подскажите как правильно реализовать отрисовку графики в отдельном потоке? С потоками только...

Создание view элементов в отдельном потоке - Программирование Android
Беру данные из интернета и делаю блоки. Если информации довольно много то при запуске активности(где создаются эти блоки) сначала...

Загрузка изображения в imageview - Программирование Android
Всем привет. Возникла проблема, распарсил сайт в arraylist, сохранил в БД, далее мне нужно вывести сайт на активность. Делаю так: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
24.04.2014, 07:55 #2
Доступ из порожденного потока к GUI потоку напрямую запрещен.
Вот хорошая статья на эту тему:
http://habrahabr.ru/company/eastbanctech/blog/192998/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 07:55
Привет! Вот еще темы с ответами:

Загрузка изображения из интернета в imageview - Программирование Android
Доброго, передаю из одной активити в другую ссылку на картинку, она прямая, как мне ее вывести в imageview?

Отображение картинки в ImageView полученной из ссылки - Программирование Android
Всем привет! Длеаю приложение, которое получет JSON с сервера. Вид его следующий: Где в url хранится абсолютный путь к...

Как отменить выполнение кода в сервисе, который запущен в отдельном потоке? - Программирование Android
Здравствуйте! Есть код класса, наследующего Service public int onStartCommand(Intent intent, int flags, int startId) { tTask = new...

Узнать ширину и высотку картинки в ImageView, которая загружена в android:src - Программирование Android
В ImageView загружена картинка. Нужно узнать ширину. Сколько не пытаюсь у меня выводит ширину равную -1. Использую функцию такую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru