Android实现ViewPager广告轮播控件在不同分辨率的屏幕下高度自适应

来源:互联网 发布:深圳淘宝电商培训 编辑:程序博客网 时间:2024/05/22 01:47

    这篇文章首先我自己感觉,有点儿个人化的味道~为什么这么说? 因为很遗憾,我这里实现 “ ViewPager宽度铺满、高度自适应 ” 的方法又和网上其他的不太一样。虽然我依然是只写了几句代码来实现这个要求,依然没有用什么自定义组件~可是这次和之前不一样,这次不是简单和复杂的区别了,而是需求的问题。先说说我这里实现思路所针对的情况:我这里的ViewPager只是个广告轮播工具,里面只装载了图片,而且图片的尺寸比例我是提前知晓的。那么在这种情况下,我才使用了这种方法来实现宽度铺满屏幕,而高度自适应。 如果你的要求和我的相似,那么可以继续往下读~如果不太相似,也可以选择阅读,看看是不是能给你提供一些思路上的指引,那就再好不过了~

    下面是我优化完成之后的效果:

   

    OK——那就开始吧!

    关于ViewPager显示广告轮播功能,各位可以去百度其他博客,很多这样的文章详细讲解实现思路的,都很不错。我今天讲的这些,算是在实现轮播功能之上的一个优化吧~不对!是第二个优化方案了~第一个方案我之前早已经写过,感兴趣的同学可以去看看~今天这个优化,主要是针对图片宽度无法铺满屏幕展开的,或者是铺满之后,在不同分辨率下,无法保持图片原始比例。

    关于这点,主要是因为我们平时在使用ViewPager的时候,都将其高度属性指定为固定值或者MatchParent造成的,这时就会发现:要么图片铺不满~要么换部手机测试就会变形~优先想到的就是指定高度为WrapContent,然而很遗憾!这样的话,宽度确实会铺满,而且比例也正常~可是就会悲剧地发现整个ViewPager填充了屏幕!其他的控件根本找不到了。这肯定是不行的。所以到头来……还是要回归到改变高度的问题上来。最直接的思路就是在代码中动态获取屏幕宽度,然后再根据图片比例设置高度,最后动态赋值给ViewPager控件。 有了这个思路,代码就可以写了:

 

    六行代码即可实现这个显示优化需求。即:首先获取当前屏幕的宽度值,然后用这个宽度按照图片宽高比计算出高度,然后通过Params设置到ViewPager里面去。注意:这里还要写上其他的一些属性,所谓其他的属性,即ViewPager和其他控件的相对位置遵循的Rule,这里一并设置出来,否则会出现遮挡其他控件的问题(如果你是用的relativeLayout的话),如果是用的线性布局LinearLayout,就不存在这个问题了~

   OK!到此为止~基本上能加载简单的图片广告了,若是其他的更复杂的子View的轮播,这个方法也许不适用,请大家一定要注意这里的区别。

   至此搁笔……感谢大家的耐心阅读~祝各位 工作顺利、生活顺心~



1 0