之前笔者认为一个View的显示必须在Parent的mesure以及layout范围内,超出那个部分Canvas就会失效,而最近笔者做ViewPager,要实现中间完全显示两边部分显示时完全刷新了笔者的认识。

ViewPager的内部机制

ViewPager控件的Left对应的值永远是0,Right永远是1, 完整的一个滑动过程就从X-0,或者从0-X。如果要中间显示那么ViewPager必然要发生向右的偏移,那么使用 android:layout_marginLeft=""这个属性。然而虽然使得中间的图片确实能中心显示但是这只是改变了控件了Left所以左边图片仍然不能显示,经过百度的指导后发现要使用android:clipChildren属性,这属性什么意思呢? 就是超过控件范围的Drawable仍然显示!! 在ViewPager以及其Parent都设置该属性后确实目标实现了。

个人理解

android:clipChildren="false"只是提供了父容器对Child的一种渲染,仅此而已。不会对Child的任何属性产生任何影响,也不会发生遮挡问题。

src与background

background:
当我们设置一个ImageView的background时发现这个图形是保持完整填充控件的,所以该方式只在控件所在区域,用了上述参数也不能发生偏移。

src:
在控件的Canvas上画一个东西,与backgroud不在一个图层,所以这个图层比较随意我们可以自定义填充方式等等…所以支持android:clipChildren="false"属性。

偏移可操作图层

 imageView.scrollBy(500,0);    //scrollTo()

调用这个方法使得可操作图层发生偏移.。怎么算可操作图层? 一般除过background外,其余可以设置Drawable的图层都是可操作图层。

更多相关文章

  1. Android之GPU过度绘制与图形渲染优化——Hierarchyviewer时间不
  2. Android(安卓)开机如何跨过Luancher界面直接显示定制的app?
  3. Android(安卓)仿Iphone文件夹分裂效果
  4. 关于android 4.2版本后的多用户目录结构分析(二)- /storage/sdcard
  5. Android控件组合应用一
  6. Android(安卓)Butterknife 框架源码解析(1)——ButterKnife的使用
  7. 边做iOS边学Android(二):认识几个常用的控件
  8. android listview选中某一行,成选中状态颜色高亮显示,ListView的U
  9. 一起来学习Android自定义控件1

随机推荐

  1. Android如何获取SIM卡信息
  2. android:textAppearance
  3. android添加WMS图层
  4. Android(安卓)浏览器的研究---启动(一)
  5. android控制显示和隐藏视图或控件的操作
  6. Android之socket编程实例,熟悉socket使用
  7. Android 语音识别示例
  8. Android listview 利用反射的自动绑定Ada
  9. Android Market排名算法及规则
  10. android bind service 学习笔记