当我按下特定按钮时,我想要显示图像(如地图)。对我的应用来说什么更轻量级?从网址获取此信息或将其放在可绘制文件夹中并显示它?
如果我选择第二个,并且想要实现一个“后退”按钮,我将不得不把所有东西放在一个额外的课程中?
我的应用程序需要连接到Internet,无论如何。
答案 0 :(得分:1)
我会选择一个drawable,纯粹出于这个原因,当用户启动没有wifi / 3g /等的应用程序时会发生什么。或者连接速度极慢。您说您的应用程序需要连接,但这并不一定意味着用户在启动应用程序时会启用它。
使用drawable它也更容易,只需将其放入drawable文件夹,然后将其指定为ImageView的源(如果您使用的是可点击的imageview)
<ImageView android:layout_height="wrap_content" android:id="@+id/imageView1"
android:layout_width="wrap_content" android:src="@drawable/your_image">
</ImageView>
或作为背景,如果您在xml文件中使用Button。
<Button android:text="" android:id="@+id/button1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/your_image">
</Button
虽然你可能想使用一个选择器来改变两个图像(按下和未按下状态)
而是将选择器xml文件指定为背景/源
即android:background="@drawable/back_button_selector"
下载图像需要在后台线程(例如AsycnTask)中完成,否则在下载图像时UI不会响应。
但是如果您因某种原因决定下载图像(即您希望更改图像而不进行更新而只是在服务器上更改),这里有一个AsyncTask来下载图像(您可以将其用作一个内在的课程)
public class GetImage extends AsyncTask<ImageView, Void, ImageView> {
String url = null;
Bitmap thumbnail = null;
public GetImage(String url){
this.url = url;
}
@Override
protected void onPreExecute() {
}
@Override
protected ImageView doInBackground(ImageView... params) {
try {
thumbnail = BitmapFactory.decodeStream((InputStream) new URL(url).getContent());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return params[0];
}
@Override
public void onPostExecute(ImageView result) {
result.setImageBitmap(thumbnail);
}
}