问题描述
我正在开发一个相机应用程序,可以拍摄图像/照片,将它们保存在外部存储中并在图库中显示它们。我做到了,但当我走进画廊时,一切都非常缓慢。
//LOAD ALL FILES FROM A SPECIFIC DIRECTORY
public static void loadFiles(File dir,String filesType) {
String ending = "end";
switch(filesType) {
case "temporary videos" :
temporaryFiles.clear();
ending = ".mp4";
break;
case "saved videos" :
savedFiles.clear();
ending = ".mp4";
break;
case "images" :
images.clear();
ending = ".jpg";
break;
}
if(dir.exists()) {
File[] files = dir.listFiles();
for (File file : files) {
String absolutePath = file.getAbsolutePath();
String extension = absolutePath.substring(absolutePath.lastIndexOf("."));
if(extension.equals(ending)) {
loadFile(file,filesType);
}
}
}
}
//LOAD SPECIFIC VIDEO
public static void loadFile(File file,String fileType) {
Item newItem = new Item(file,Uri.fromFile(file),getDateFromFile(file),fileType);
addItem(newItem,fileType);
}
//convert files to thumbnails and return bitmap
public static Bitmap convertFiletoThumbnailBitmap(File file,String fileType) throws IOException {
Size mSize = new Size(10000000,10000000);
CancellationSignal ca = new CancellationSignal();
if(!fileType.equals("images")) {
Bitmap bitmapThumbnail = ThumbnailUtils.createVideoThumbnail(file,mSize,ca);
return bitmapThumbnail;
}
Bitmap bitmapThumbnail = ThumbnailUtils.createImageThumbnail(file,ca);
return bitmapThumbnail;
}
这是我如何使用 recyclerview 适配器将它们下载到库中的方法 - onBindView :
@Override
public void onBindViewHolder(final ViewHolder holder,final int position) {
try {
holder.mImageView.setimageBitmap(Items.convertFiletoThumbnailBitmap(Items.getimages().get(position).getFile(),galleryActivity.fileTypes[2] ));
} catch (IOException e) {
e.printstacktrace();
}
holder.mImageView.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext,ImagedisplayActivity.class);
intent.putExtra(galleryActivity.fileTypes[2],Items.getimages().get(position).getFile().getPath());
mContext.startActivity(intent);
}
});
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)