我需要只使用文件名来显示图像,而不是使用资源id。
ImageView imgView = new ImageView(this);
imgView.setBackgroundResource(R.drawable.img1);
我在可绘制文件夹中有图像img1。我想展示文件中的图像。
我该怎么做呢?
我需要只使用文件名来显示图像,而不是使用资源id。
ImageView imgView = new ImageView(this);
imgView.setBackgroundResource(R.drawable.img1);
我在可绘制文件夹中有图像img1。我想展示文件中的图像。
我该怎么做呢?
当前回答
大多数答案都是有效的,但没有人提到高分辨率的图像会降低应用程序的速度,在我的情况下,我使用了imagesrecyclerview,它在30张图像中占用了0.9 GB的设备内存。
我/编舞:跳过73帧!应用程序可能也在这样做 它的主线有很多工作要做。
解决方法很简单,你可以像这样降低质量:降低位图的分辨率
但我用简单的方式,Glide处理剩下的工作
fanContext?.let {
Glide.with(it)
.load(Uri.fromFile(File(item.filePath)))
.into(viewHolder.imagePreview)
}
其他回答
使用位图可以很容易地做到这一点。你可以在下面找到代码:
ImageView imageView=findViewById(R.id.imageView);
Bitmap bitMapImage= BitmapFactory.decodeFile("write path of your image");
imageView.setImageBitmap(bitMapImage);
你可以使用:
ImageView imgView = new ImageView(this);
InputStream is = getClass().getResourceAsStream("/drawable/" + fileName);
imgView.setImageDrawable(Drawable.createFromStream(is, ""));
您可以使用它来访问特定的文件夹并获得特定的图像
public void Retrieve(String path, String Name)
{
File imageFile = new File(path+Name);
if(imageFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(path+Name);
myImage = (ImageView) findViewById(R.id.savedImage);
myImage.setImageBitmap(myBitmap);
Toast.makeText(SaveImage.this, myBitmap.toString(), Toast.LENGTH_LONG).show();
}
}
然后你就可以过来了
Retrieve(Environment.getExternalStorageDirectory().toString()+"/Aqeel/Images/","Image2.PNG");
Toast.makeText(SaveImage.this, "Saved", Toast.LENGTH_LONG).show();
onLoadImage满载
private void onLoadImage(final String imagePath) {
ImageSize targetSize = new ImageSize(imageView.getWidth(), imageView.getHeight()); // result Bitmap will be fit to this size
//ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleto
com.nostra13.universalimageloader.core.ImageLoader imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getContext()));
imageLoader.loadImage(imagePath, targetSize, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(final String imageUri, View view) {
super.onLoadingStarted(imageUri, view);
progress2.setVisibility(View.VISIBLE);
new Handler().post(new Runnable() {
public void run() {
progress2.setColorSchemeResources(android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light);
// Picasso.with(getContext()).load(imagePath).into(imageView);
// Picasso.with(getContext()).load(imagePath) .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).into(imageView);
Glide.with(getContext())
.load(imagePath)
.asBitmap()
.into(imageView);
}
});
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (view == null) {
progress2.setVisibility(View.INVISIBLE);
}
// else {
Log.e("onLoadImage", "onLoadingComplete");
// progress2.setVisibility(View.INVISIBLE);
// }
// setLoagingCompileImage();
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
if (view == null) {
progress2.setVisibility(View.INVISIBLE);
}
Log.e("onLoadingFailed", imageUri);
Log.e("onLoadingFailed", failReason.toString());
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
super.onLoadingCancelled(imageUri, view);
if (view == null) {
progress2.setVisibility(View.INVISIBLE);
}
Log.e("onLoadImage", "onLoadingCancelled");
}
});
}
大多数答案都是有效的,但没有人提到高分辨率的图像会降低应用程序的速度,在我的情况下,我使用了imagesrecyclerview,它在30张图像中占用了0.9 GB的设备内存。
我/编舞:跳过73帧!应用程序可能也在这样做 它的主线有很多工作要做。
解决方法很简单,你可以像这样降低质量:降低位图的分辨率
但我用简单的方式,Glide处理剩下的工作
fanContext?.let {
Glide.with(it)
.load(Uri.fromFile(File(item.filePath)))
.into(viewHolder.imagePreview)
}