ArrayList<String> imageFileList = new ArrayList<>();
ArrayList<RecentImagesModel> fileInfo = new ArrayList<>();
File targetDirector = new File(/storage/emulated/0/DCIM/Camera/);
if (targetDirector.listFiles() != null) {
File[] files = targetDirector.listFiles();
int i = files.length - 1;
while (imageFileList.size() < 10) {
File file = files[i];
if (file.getAbsoluteFile().toString().trim().endsWith(".jpg")) {
imageFileList.add(file.getAbsolutePath());
} else if (file.getAbsoluteFile().toString().trim().endsWith(".png")) {
imageFileList.add(file.getAbsolutePath());
}
i--;
}
}
String file, filename;
Bitmap rawBmp, proBmp;
int length = imageFileList.size();
for (int i = 0; i < length; i++) {
RecentImagesModel rim = new RecentImagesModel();
file = imageFileList.get(i);
rim.setFilepath(file);
filename = file.substring(file.lastIndexOf("/") + 1);
rim.setName(filename);
rawBmp = BitmapFactory.decodeFile(file);
proBmp = Bitmap.createScaledBitmap(rawBmp, rawBmp.getWidth()/6, rawBmp.getHeight()/6, false);
rim.setBitmap(proBmp);
fileInfo.add(rim);
}
Wenn ich die Datei Objekte in Bitmaps bin Umwandlung und neu zu skalieren sie:Wie konvertiert man die Liste der Bilddateipfade schnell in die Liste der Bitmaps?
rawBmp = BitmapFactory.decodeFile(file);
proBmp = Bitmap.createScaledBitmap(rawBmp, rawBmp.getWidth()/6, rawBmp.getHeight()/6, false);
Es dauert in der Verarbeitung viel Zeit. Gibt es eine Möglichkeit, den Prozess zu verkürzen?
Ich muss mindestens 10 Bilder zur Verfügung stellen, kann nicht kleiner als diese gehen. –
versuchte 1/8 des ursprünglichen Bildes, es bindet Bilder in recylerview quicky. Aber das Konvertieren von Dateiobjekten in Bitmaps und das Speichern in Arraylist dauert immer noch. –
@ShubhanshJaiswal: Wenn Sie eine 'RecyclerView' verwenden, laden Sie Bilder * mit * einer Bildlade-Bibliothek (Glide, Picasso usw.) nach Bedarf *, anstatt sie im Vordergrund zu laden. – CommonsWare