M*LMM缩略图文件管理模式模块开发(一个含有listview和gridview浏览模式的文件管理器)

开发中的随想笔记:

1、首先说说文件管理器。这应该是这里面建立缩略图浏览模式的基础,在扫描得到根目录的数据之后,那么就会根据这个根目录的数据填充当前的数组A,用以在

adapter中显示。还会有一个建立一页的数组B,尽管是list模式还是grid模式。得到数据就会显示在表格当中。更更新一页就使得B从A中重新获取数据。

那么怎么回到上一层呢?建立一个记录目录的栈。

2、然后说说怎么切换浏览模式。list-〉grid-〉list。因为根据之前的代码,页面与页面的推进与后退是靠点击list或者grid的item来进行,所以如果我要切换的话,根据之前的代码

最好是把去到某一个路径伪装成点击list或者grid的某个item而产生的页面刷新。于是由list-〉grid 还是 grid-〉list 我都是伪装成点击当前路径的item0:back  ,回到上一层路径之后,然后再主UI的handler中不立即更新UI,而是再继续点击回到上一层中的记录在栈中的item(表示在上一层曾经的焦点的位置),然后获取数据在grid中显示。这就完成了list到grid的切换。  grid到list的切换同理


3、反复切换会出现问题么?调试到一个问题。就是list-〉grid-〉list,grid要显示list一般应该需要获取上一层的焦点的位置然后重新获取数据打开;grid-〉list-〉grid也是同样的道理。但是如果是grid->grid->list 可能会和第一种情况有冲突,因为list数据的的条数(10个)比grid的条数(24个)要少。

其实就是我怎么知道切换模式下的返回上一层是利用哪种view 来显示数据,所以为了统一无论是切换模式还是正常的同一种浏览模式的返回,我把切换模式先返回再向下这中间加了一层:向下之前把该层的view修改成最新切换的view,这样的话,返回上一层的view 和当前切换后的view一样的,这样就简化了逻辑


4、至于获取缩略图的程序。这里利用到了MetaMediaDataRetriver这个类。可以获取视频的缩略图,获取失败的显示白图或者黑图,一般是该系统的视频解码器不支持转码该格式的后果;可以获取视频的缩略图,也可以获取音乐的内置图片


5、怎么异步获取缩略图:使用Asynctask。如果直接使用execute的话,那么是单线程异步顺序执行的任务,就是一个任务执行完了再执行下面的,但是如果使用除了execute的其他函数,甚至结合线程池,可以更灵活一些


6、怎么在未获取完视频缩略图的时候播放视频,返回来之后继续加载剩下的缩略图呢。这里如果视频解码器的底层是支持双线程以及以上的,使用execute加载任务和一边播放视频时不冲突的(加载缩略图使用了视频解码器一个线程,播放视频也使用了一个线程);而我的情况是单线程的,所以我只好在播放视频的时候把胃完成任务的视频stop掉。播放完视频回来之后再重新new task,继续加载剩下的缩略图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值