Я загружаю изображение из Интернета, которое имеет следующие размеры: 128px x 128px. После загрузки изображение используется в качестве фона ImageButton
, но когда отображается кнопка, изображение становится меньше, чем было раньше.это было загружено.Для загрузки я использую AsyncTask
... вот мой код:
public class ImageDownloaderButton extends AsyncTask<String, Void, Bitmap> {
private String url;
private final WeakReference<ImageButton> imageButtonReference;
public ImageDownloaderButton(ImageButton imageButton) {
imageButtonReference = new WeakReference<ImageButton>(imageButton);
}
@Override
protected Bitmap doInBackground(String... params) {
url = params[0];
try {
if (url.equals("")) {
return null;
}
return BitmapFactory.decodeStream(new URL(url).openStream());
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(Bitmap result) {
if (isCancelled()) {
result = null;
}
if (imageButtonReference != null) {
ImageButton imageButton = imageButtonReference.get();
if (imageButton != null) {
if (result != null) {
imageButton.setImageBitmap(result);
} else {
imageButton.setImageResource(R.drawable.noimageavailable);
}
}
}
}
@Override
protected void onPreExecute() {
if (imageButtonReference != null) {
ImageButton imageButton = imageButtonReference.get();
if (imageButton != null) {
imageButton.setImageResource(R.drawable.noimageavailable);
}
}
}
}
CodeSnipet, где начинается загрузка:
ImageButton imageButton = (ImageButton) view.findViewById(R.id.icon_image);
ImageDownloaderButton downloader = new ImageDownloaderButton(imageButton);
downloader.execute(supp.getPicture()); //the picture is the url
imageButton.setOnClickListener(createOnClickListener(supp.getId()));
и, наконец, вот XML-файлкоторый содержит ImageButton
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/icon_with_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">
<ImageButton
android:id="@+id/icon_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_gravity="center"
android:onClick="myClickHandler"/>
<TextView
android:id="@+id/icon_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColorHighlight="#656565"/>
</LinearLayout>
Может кто-нибудь объяснить мне, почему размер изображения изменяется? Изображение (noavailableimage), которое отображается во время загрузки AsyncTask, имеет размер 128x128px, и этоодин показан в правильном размере.
Снимки экрана:
Эмулятор: