1、BitmapCache工具类
<span style="white-space:pre"> </span>BitmapCache cache = BitmapCache.getInstance(); cover = cache.getBitmapFromMemCache(R.drawable.icon); if (cover == null) { cover = BitmapFactory.decodeResource(v.getResources(), R.drawable.icon); cache.addBitmapToMemCache(R.drawable.icon, cover); }注意在Application中的onLowMemory中做清除缓存动作
2、视频播放页面VideoPlayerActivity
1)setOnSystemUiVisibilityChangeListener
android4.0以后可以通过这个来控制 虚拟按键等系统UI
2)IPlayerControl接口
public interface IPlayerControl { void setState(boolean isPlaying); void setOnPlayerControlListener(OnPlayerControlListener listener); }IPlayerControl定义了播放控制相关的接口,由PlayerControlWheel实现,最终由VideoPlayerActivity的布局文件容器addView完成页面的显示
总结:
在复杂的布局中,可以把易聚合的部分抽成一个模块,可以采用两种方式,
1)布局的方式在主布局中以include标签包含进去;
2)自定义view,在主xml中预留容器Framelayout,然后再代码中找到该容器addView进去
这种方式可以根据配置动态适配风格,封装细节,统一外部接口,然后通过addView方法加入主页面,也可以当做接口来使用。
3)刷新infobar进度
<span style="white-space:pre"> </span>case SHOW_PROGRESS: int pos = activity.setOverlayProgress(); if (activity.canShowProgress()) { msg = obtainMessage(SHOW_PROGRESS); <span style="color:#ff0000;">sendMessageDelayed(msg, 1000 - (pos % 1000));</span> } break;3、关于界面AboutActivity
其中“授权许可”页面是采用webView+.html+assets实现的。当静态页面实现较繁琐时,可以考虑网页的思路。
<span style="font-family: Arial, Helvetica, sans-serif;"><string name="about_link" translatable="false"> <a href="http://www.videolan.org/vlc/">http://www.videolan.org/vlc/</a></string></span>