android 通过在edtext输入图片的地址,点击连接启动连接http把图片加载显示到imageview上
时间: 2023-12-08 10:04:11 浏览: 36
可以通过以下步骤来实现:
1. 在布局文件中添加一个EditText用于获取图片的地址,一个Button用于启动连接http,以及一个ImageView用于显示图片。
```xml
<EditText
android:id="@+id/et_image_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter image URL here"/>
<Button
android:id="@+id/btn_load_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Load Image"/>
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"/>
```
2. 在Activity中获取EditText、Button和ImageView的实例,并设置Button的点击事件。
```java
EditText etImageUrl = findViewById(R.id.et_image_url);
Button btnLoadImage = findViewById(R.id.btn_load_image);
ImageView imageView = findViewById(R.id.image_view);
btnLoadImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String imageUrl = etImageUrl.getText().toString();
new DownloadImageTask(imageView).execute(imageUrl);
}
});
```
3. 创建一个异步任务DownloadImageTask,用于下载图片并将其显示到ImageView上。
```java
private static class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
private ImageView imageView;
public DownloadImageTask(ImageView imageView) {
this.imageView = imageView;
}
@Override
protected Bitmap doInBackground(String... urls) {
String imageUrl = urls[0];
Bitmap bitmap = null;
try {
InputStream in = new java.net.URL(imageUrl).openStream();
bitmap = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
}
}
```
在这个异步任务中,我们使用HttpURLConnection打开图片的输入流,然后使用BitmapFactory将其解码为Bitmap对象,并在onPostExecute方法中将Bitmap设置到ImageView上。
这样,当用户输入图片的地址并点击Button时,就会自动下载图片并显示到ImageView上。