我是Android应用程序开发的新手,“ BitMap”和“ ImageView”有问题
和往常一样,我搜索堆栈溢出和其他各种资源,但是无论我做什么,我都无法实现我应有的功能,主要问题是BitMap。
我尝试减小图像的大小,并尝试加载静态文件位置,但是在静态文件位置的情况下,它可以正常工作,但是当我尝试动态地执行相同操作时,就会遇到麻烦
虽然没有错误,但结果确实很糟糕。
public String currentPhotoPath;
public String TruckLoadImageFile = "";
private File createImageFile() {
String timeStamp = getCurrentTimeStamp();
String ImgFileName = "JPEG_" + timeStamp + "TRUCK_LOADED";
File StorageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = null;
try {
image = File.createTempFile(ImgFileName, ".jpg", StorageDir);
currentPhotoPath = image.getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
public void TakeImage() {
final int REQUEST_TAKE_PHOTO = 1;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File photoFile = null;
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
photoFile = createImageFile();
if (photoFile != null) {
Uri photoURI = getUriForFile(this, "com.example.android.fileprovider", photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
System.out.print("###################" + photoFile);
ImageView truckloadImageView = findViewById(R.id.ecoLoadImageView);
truckloadImageView.setImageBitmap(BitmapFactory.decodeFile(photoFile.toString()));
}
}
private void DisplayImage () {
ImageView truckloadImageView = findViewById(R.id.ecoLoadImageView);
System.out.println("****************" + currentPhotoPath + "***************");
}
public void TakeImgButton_Click(View view){
TakeImage();
DisplayImage();
}
}
在日志中,我收到如下消息:
I/art: Do partial code cache collection, code=21KB, data=28KB
After code cache collection, code=21KB, data=28KB
Increasing code cache capacity to 128KB
但是如果大小是问题所在,那么为什么它像静态文件一样运行。
答案 0 :(得分:1)
我真的建议您使用lib Picasso库,它具有强大的支持并且非常易于使用。除此之外,您不必担心这种情况。
https://square.github.io/picasso/
File f = new File("path-to-file/file.png")
Picasso.with(getActivity()).load(f).into(imageView);
您还可以像这样调整图像的大小:
Picasso.get()
.load(url)
.resize(50, 50)
.centerCrop()
.into(imageView)