Я пытаюсь получить ширину и высоту изображения в android и загрузить соответственно, купите, что мой код ниже работает нормально в 2.3.3, но когда я тестирую в более поздней версии (4.0), его высота и ширина дают исключение нулевого указателя ... мой код ...
Drawable drawable = null;
drawable = LoadImageFromWebOperations(logo_url.replace(" ", "%20"));
System.out.println("Width" + drawable.getMinimumWidth());
System.out.println("Height" + drawable.getMinimumHeight());
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, drawable.getMinimumWidth(), mCtx.getResources().getDisplayMetrics());
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, drawable.getMinimumHeight(), mCtx.getResources().getDisplayMetrics());
client_logo.setMinimumHeight(height);
client_logo.setMinimumWidth(width);
client_logo.setImageDrawable(drawable);
public Drawable LoadImageFromWebOperations(String url){
System.out.println(url);
try{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return (d);
}catch (Exception e) {
//System.out.println("Exc="+e);
return null;
}
}
1 ответ
Начиная с API 11, если вы выполняете этот код в потоке пользовательского интерфейса, при доступе к сети будет выдан NetworkOnMainThreadException
. Вы не публикуете свой вывод logcat (что было бы очень полезно), но я подозреваю, что это именно то, что происходит. В результате LoadImageFromWebOperations
вернет null
, и вы получите NPE, когда попытаетесь получить доступ к свойствам для рисования.
Вам нужно запустить этот код в рабочем потоке. См. Статью Обеспечение адаптивности приложения.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.