我正在使用Android应用程序制作GIF动画。在这个应用程序中,我想在自定义视图中显示创建的gif。我制作了DisplayGif' DisplayGif'当gif创建并保存在sd卡中的活动时,myFile'文件夹,此活动显示最近保存的。在自定义视图中,我使用此代码获取最后一个gif:
String ExternalStorageDirectoryPath = Environment
.getExternalStorageDirectory()
.getAbsolutePath();
String targetPath = ExternalStorageDirectoryPath + "/myFile";
File targetDirector = new File(targetPath);
File[] listFile = targetDirector.listFiles();
Arrays.sort( listFile, new Comparator()
{
public int compare(Object o1, Object o2) {
if (((File)o1).lastModified() > ((File)o2).lastModified()) {
return -1;
} else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
return +1;
} else {
return 0;
}
}
});
String s = listFile[0].getAbsolutePath();
mMovie = Movie.decodeFile(s);
这不起作用,但是当我使用&#34; listFile [1] .getAbsolutePath();&#34;它适用于以前保存的gif而不是新的!有没有更好的方式来显示最新的gif?
答案 0 :(得分:0)
你不注意ASC和DESC排序。你可以在listfile[listfile.lentgh-1]
找到最后一项
要么
你必须使用&#39; reverseOrder&#39;。 make comprator类如下:
public class ObjectComparator implements Comparator<Object> {
@Override
public int compare(Object o1, Object o2) {
if (((File)o1).lastModified() > ((File)o2).lastModified()) {
return -1;
} else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
return +1;
} else {
return 0;
} if (((File)o1).lastModified() > ((File)o2).lastModified()) {
return -1;
} else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
return +1;
} else {
return 0;
}
}
在你的代码中使用这个类:
Comparator<Object> descendingObjectComparator = Collections.reverseOrder(new ObjectComparator());
按此代码对数组进行排序:
Arrays.sort(listFile , descendingObjectComparator);
如果您想了解有关数组和排序的更多信息,可以使用this link