android读取图片并显示
1. android 存在数据库中的动态图片,如何读取出来,显示在ImageView中
实现的功能为从服务器获取图片数据,在布局页面上显示。由于图片的个数是不确定的,因此采用在布局页面中定义多个ImageView来显示图片是不合理的。
(一)首先定义布局
android:id="@+id/id_layout_movie"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
(二)加载图片显示时获取到布局文件
RelativeLayout rl_Movie = (RelativeLayout) findViewById(R.id.id_layout_movie);
(三)依次循环服务器获取的图片数据,一张一张设置图片显示的位置
//newWidth为图片显示的宽度,newHeight为图片显示的高度
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams( newWidth, newHeight);
设置lp1.leftMargin和lp1.topMargin的值
(四)最后设置rl_Movie.addView(iv, lp1)将图片加入布局文件中
2. android如何读取sd卡的图片并显示
首先你要在AndroidManifest.xml申请读取sdcard的权限
java"><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--向SDCard写入数据权限-->
关键代码:
packagecom.sdcardread;
importjava.io.File;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.TextView;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
{
privateTextViewtextView1;
;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1=(TextView)findViewById(R.id.textView1);
linearLayout1=(LinearLayout)findViewById(R.id.linearLayout1);
booleanisSdCardExist=Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);//判断sdcard是否存在
if(isSdCardExist){
Stringsdpath=Environment.getExternalStorageDirectory()
.getAbsolutePath();//获取sdcard的根路径
textView1.setText("sd卡是存在的。以下是sdcard下的img25.jpg!");
Stringfilepath=sdpath+File.separator+"img25.jpg";
Filefile=newFile(filepath);
ImageViewimageView=newImageView(this);//创建一个imageView对象
if(file.exists()){
Bitmapbm=BitmapFactory.decodeFile(filepath);
//将图片显示到ImageView中
imageView.setImageBitmap(bm);
linearLayout1.addView(imageView);
}
}else{
textView1.setText("sd卡不存在!");
}
}
}
3. android 网络获取图片并在activity上显示
在Android应用中,获取网络图片并在Activity中显示,是一个常见的需求。首先,你需要使用HttpURLConnection或OkHttp等网络库来下载图片。这里,我们可以使用OkHttp,因为它提供了简洁且高效的API。
以下是一个简单的示例代码,用于从网络获取图片并将其设置为Activity的背景:
1. 添加依赖
在项目级build.gradle文件中添加OkHttp依赖:
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
2. 获取网络图片
使用OkHttp发起网络请求获取图片。这里我们使用一个简单的GET请求:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("https://example.com/image.png").build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
byte[] bytes = response.body().bytes();
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
3. 设置图片为Activity背景
获取到图片后,可以将其设置为Activity的背景。我们可以在Activity的onCreate方法中完成这一操作:
ImageView imageView = findViewById(R.id.background_image);
imageView.setImageBitmap(bitmap);
View backgroundView = findViewById(R.id.activity_background);
backgroundView.setBackground(new BitmapDrawable(getResources(), bitmap));
以上步骤展示了如何从网络获取图片并在Android应用的Activity中显示。值得注意的是,为了提升用户体验,应当确保网络请求异步执行,避免阻塞主线程。
此外,在实际应用中,还需要处理可能出现的异常情况,比如网络请求失败或图片下载失败等。可以使用try-catch语句来捕获并处理这些异常。
通过这种方式,我们可以在Android应用中轻松实现从网络获取图片并在Activity中展示的功能。