通常我们在使用app的时候都会遇到这么一个场景,点开缩略图查看大图,而现在一般app都为这样的一个功能加上了过渡动画,不会让人觉得这个过程很突兀,体验就好了很多。但是,通常的,新的大图页面的图片加载往往需要时间,所以在实现这样的一个功能的时候,怎样让图片看起来像是没有被改变过并且真正显示在大图上面的是高清图,需要一点小技巧。
创新互联建站是专业的新建网站建设公司,新建接单;提供网站设计制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行新建网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!其实没有那么复杂,我们只需要对开启的新页面中的大图设置一个初始默认图,这张图片的来源即点击时的那一张缩略图,那么怎样获取这张做略图,相信大家一定有很多的方法,我现在采用的是ImageView.getDrawable()。拿到这个drawable对象之后,那么只需要把它设置到大图上去就好,怎么传值?好吧,其实我使用的是单例对象持有该drawable,在第二个页面开启时获取。这个时候就会遇到一个坑,每次第二个页面从onStop回复到onResume状态(比如页面跳转,或者点击Home键)时,此时关闭大图页面,原来的缩略图就不一样了,它只显示了一部分!
Why?原来是被单例持有的这个drawable它同时被两个ImageView绘制了,在第二次ImageView绘制的时候这张Drawable的bounds被改变了,所以当回到原来的缩略图页面时,控件和drawable的bounds不一样了,显示的效果也就变成了只显示一部分。
那么其实只需要复制一个一样内容的drawable给大图作为占位图就好了,Drawable本身也提供了这样一个方法:drawable.getConstantState().newDrawable() 这样我们就拿到一个同样内容不同对象的drawable了。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。