在自定义视图

时间:2016-02-17 05:04:45

标签: android android-custom-view displayobject

我正在使用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?

1 个答案:

答案 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