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

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

Войти
Регистрация
Восстановить пароль
 
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
#1

Загрузка картинок Picasso из дискового кэша, когда нет интернета - Программирование Android

07.07.2016, 14:37. Просмотров 195. Ответов 2
Метки нет (Все метки)

Подскажите как можно при помощи Picasso реализовать загрузку картинок в фон активити, когда нет интернета?
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public class MainActivity extends AppCompatActivity {
    Button btnOk;
    RelativeLayout loginLayout;
    Context cxt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loginLayout = (RelativeLayout)findViewById(R.id.realitive);
        btnOk = (Button) findViewById(R.id.btnOk);
        cxt = MainActivity.this;
        View.OnClickListener oclBtnOk = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
 
 
                if (isOnline()) {
                    Picasso.with(getApplicationContext()).load("https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CoQBcwAAAF4j7GSPkCXEPFk3Xx5mvvgWMScwai1xuxLMJ6HpE_XbgaJhOPBGDt4HAMtoWwNAYKciKKcRqGqUbnkKoMMWh6rpuKFCjLE-ZwRaEpjsR6_XS9ROwDmQmXQrUwbhuzOqSr_Go14Y9yQBGRx4gTuYCzNWs4A5JgGUYaNf_O5Ack2sEhAHrcQW2ieKyn59HdLEsjh6GhQwyB9ExSZezys3AIIrV6JFoLJ7Fw&key=AIzaSyDUV1iJvy8p0qZhob_OOQSYz5uK2-ky-DE").placeholder(R.drawable.ic_launcher).error(R.drawable.ic_launcher).into(new Target() {
 
 
                        @Override
                        public void onPrepareLoad(Drawable arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), "Start Loading", Toast.LENGTH_SHORT).show();
                        }
 
                        @Override
                        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom arg1) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), "Loaded", Toast.LENGTH_SHORT).show();
                            loginLayout.setBackgroundDrawable(new BitmapDrawable(getApplicationContext().getResources(), bitmap));
                        }
 
                        @Override
                        public void onBitmapFailed(Drawable arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), "Failed Loading", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
                else
                {
                    Picasso.with(getApplicationContext()).load("https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CoQBcwAAAF4j7GSPkCXEPFk3Xx5mvvgWMScwai1xuxLMJ6HpE_XbgaJhOPBGDt4HAMtoWwNAYKciKKcRqGqUbnkKoMMWh6rpuKFCjLE-ZwRaEpjsR6_XS9ROwDmQmXQrUwbhuzOqSr_Go14Y9yQBGRx4gTuYCzNWs4A5JgGUYaNf_O5Ack2sEhAHrcQW2ieKyn59HdLEsjh6GhQwyB9ExSZezys3AIIrV6JFoLJ7Fw&key=AIzaSyDUV1iJvy8p0qZhob_OOQSYz5uK2-ky-DE").networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.ic_launcher).error(R.drawable.ic_launcher).into(new Target() {
 
 
                        @Override
                        public void onPrepareLoad(Drawable arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), "Start Loading", Toast.LENGTH_SHORT).show();
                        }
 
                        @Override
                        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom arg1) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), "Loaded", Toast.LENGTH_SHORT).show();
                            loginLayout.setBackgroundDrawable(new BitmapDrawable(getApplicationContext().getResources(), bitmap));
                        }
 
                        @Override
                        public void onBitmapFailed(Drawable arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), "Failed Loading", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            }
        };
        btnOk.setOnClickListener(oclBtnOk);
    }
 
    public boolean isOnline() {
        String cs = Context.CONNECTIVITY_SERVICE;
        ConnectivityManager cm = (ConnectivityManager)
                cxt.getSystemService(cs);
        if (cm.getActiveNetworkInfo() == null) {
            return false;
        }
        return     cm.getActiveNetworkInfo().isConnectedOrConnecting();
    }
}
Вот мой код. Когда есть интернет картинка по url нормально загружается, когда же нет интернета из кэша ничего не подгружается, а срабатывает метод onBitmapFailed() не смотря на networkPolicy(NetworkPolicy.OFFLINE). Подскажите, что нужно сделать чтобы картинка загружалась из кэша без интернета?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2016, 14:37     Загрузка картинок Picasso из дискового кэша, когда нет интернета
Посмотрите здесь:
Android Динамическая загрузка картинок из интернета
Android При загрузке большого количества картинок библиотекой Picasso заканчивается память
Загрузка изображения из интернета в imageview Android
Android Picasso
Android Загрузка картинок в определенное место текста WebView
Загрузка и отображение большого количества картинок с памяти телефона Android
Picasso не загружает фото Android
Запущенный service не работает, когда нет процесса Android
Не выводится Диалог, когда нет интернет подключения Android
Для чего делать Resize при использовании Picasso Android
Как правильно вставить AlertDialog, если нет интернета? Android
Очистка кэша Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zanexess
111 / 84 / 28
Регистрация: 22.10.2010
Сообщений: 227
07.07.2016, 18:23     Загрузка картинок Picasso из дискового кэша, когда нет интернета #2
Попробуйте добавить
Java
1
.networkPolicy(NetworkPolicy.OFFLINE)
Pablito
2421 / 1866 / 583
Регистрация: 12.05.2014
Сообщений: 6,606
Завершенные тесты: 1
07.07.2016, 18:56     Загрузка картинок Picasso из дискового кэша, когда нет интернета #3
Java
1
2
Context cxt;
cxt = MainActivity.this;
жесть

Java
1
2
        new Picasso.Builder(this).downloader(new OkHttpDownloader(this, Integer.MAX_VALUE)).build();
        Picasso.with(this).load("http://risovach.ru/upload/2012/11/mem/fraj_3862921_orig_.jpg").into(imageView);
XML
1
2
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
все отлично работает
Yandex
Объявления
07.07.2016, 18:56     Загрузка картинок Picasso из дискового кэша, когда нет интернета
Ответ Создать тему
Опции темы

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