ViewPagerTransforms 是一个自定义了各种翻转效果的开源库,其中的各种PageTransformer使用了view的很多属性设置方法如DepthPageTransformer中:
?
  package com.ToxicBakery.viewpager.transforms;
  import android.view.View;
  public class DepthPageTransformer extends ABaseTransformer {
  private static final float MIN_SCALE = 0.75f;
  @Override
  protected void onTransform(View view, float position) {
  if (position <= 0f) {
  view.setTranslationX(0f);
  view.setScaleX(1f);
  view.setScaleY(1f);
  } else if (position <= 1f) {
  final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
  view.setAlpha(1 - position);
  view.setPivotY(0.5f * view.getHeight());
  view.setTranslationX(view.getWidth() * -position);
  view.setScaleX(scaleFactor);
  view.setScaleY(scaleFactor);
  }
  }
  @Override
  protected boolean isPagingEnabled() {
  return true;
  }
  }
  
  类似于view.setAlpha(1 - position);这样的一些方法是在api 11属性动画出来之后才有的,因此在2.3的手机中无法调用,但是如果我们需要设置一个view的属性,比如透明度,不调用view.setAlpha的话很难完美的用其他方法实现,有文章说用 convertView.getBackground().setAlpha(80);可以实现改变透明度,但是其实那不是改变view的透明度。 如何解决这个问题呢,改变view的透明度怎么这么难?
  所幸的是nineoldandroids的工具类ViewHelper帮我们解决了这个问题。
  nineoldandroids是一个帮助在2.x的版本中实现属性动画的开源库,现在它的应用已经很广泛了 是一个非常成熟的库,如果没有它android中非常实用的属性动画很难普及开来。
  虽然nineoldandroids是为动画而生的,但是为了解2.x版本不能使用属性设置方法的问题nineoldandroids提供了一种通过包装(wrap)view的方式来兼容setScaleY,setAlpha这些方法,要在2.x版本中使用view.setAlpha()方法,可以这样做:
  1.引入nineoldandroids的库文件或者jar包,建议引入jar包因为nineoldandroids已经很稳定不需要你去修改。
  2.import com.nineoldandroids.view.ViewHelper同时将上面的代码改为:
  public class DepthPageTransformer extends BaseTransformer {
  private static final float MIN_SCALE = 0.75f;
  @Override
  protected void onTransform(View view, float position) {
  if (position <= 0f) {
  ViewHelper.setTranslationX(view,0f);
  ViewHelper.setScaleX(view,1f);
  ViewHelper.setScaleY(view,1f);
  } else if (position <= 1f) {
  final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
  ViewHelper.setAlpha(view,1-position);
  ViewHelper.setPivotY(view,0.5f * view.getHeight());
  ViewHelper.setTranslationX(view,view.getWidth() * - position);
  ViewHelper.setScaleX(view,scaleFactor);
  ViewHelper.setScaleY(view,scaleFactor);
  }
  }
  @Override
  protected boolean isPagingEnabled() {
  return true;
  }
  }

如何在低api中使用View的属性设置方法如setAlpha等的更多相关文章

  1. ecshop微信通中微信自动登录的设置方法

    ecshop微信通中微信自动登录的设置方法 来 源:共享世纪 作 者:网络 时间:2015-12-03 点击: 4017 注意:微信自动登录,必须同时满足两个条件: 第一.微信公众号必须是服务号经过认 ...

  2. HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次)

    HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次) 一.总结 一句话总结:目录就是测试题 1.document取得元素(get element)的方式有哪几种? 解答:四种,分别是id ...

  3. Windows下Git中正确显示中文的设置方法

    Windows下Git中正确显示中文的设置方法 具体设置方法如下: 进入目录etc:$ cd /etc 1. 编辑 gitconfig 文件:$ vi gitconfig.在其中增加如下内容: [gu ...

  4. C#类中的字段、属性和方法

    C#类中的字段.属性和方法 刚开始学C#,对于类中的字段.属性和方法很难分清,写下这份笔记,帮助理解 字段:与类相关的变量 声明方法与声明变量类似,可在前面添加访问修饰符.static关键字等: 属性 ...

  5. 全面理解Javascript中Function对象的属性和方法

    http://www.cnblogs.com/liontone/p/3970420.html 函数是 JavaScript 中的基本数据类型,在函数这个对象上定义了一些属性和方法,下面我们逐一来介绍这 ...

  6. javascript中的array对象属性及方法

    Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, e ...

  7. C# 中winform的一些属性设置

    1 窗体的大小固定住,不能调整其大小 窗体FormBorderStyle 属性设置为 FixedSingle; MaximizeBox 属性设置为false; MinimizeBox  属性设置为  ...

  8. iOS中UIKit的外观属性及方法汇总

    这里将UIKit的外观属性及方法从头文件中抽取出来,以便查找及熟悉.(更新到iOS 8.0,从A-Z排序) UIActivityIndicatorView @property (readwrite,  ...

  9. js中Array数组的属性和方法

    这是我自己整理出来的一些关于Array数组的属性和方法,即查即用. 1.Array.length属性:数组的项数组,始终返回0或者更大的值. 2.instanceof操作符:value instanc ...

随机推荐

  1. Photoshop CS3 如何汉化

    1. 下载汉化包 http://download.csdn.net/detail/yangtian1158/8740959 2. 将下载的.bat文件放到CS3的安装目录里即可 C:\Program ...

  2. linux下查看进程运行的时间

    原文链接:http://www.centoscn.com/CentOS/2014/0403/2724.html 可通过ps 来查看,通过参数 -o 来查看 例: ps -eo pid,tty,user ...

  3. linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明

    加载内核驱动的通常流程: 1.先将.ko文件拷贝到/lib/module/`uname -r`(内核版本号)/kernel/driver/...目录下, 根据具体用途的区别分为net.ide.scsi ...

  4. 黄聪:wordpress源码解析-数据库表结构(转)

    如果是一个普通的用户,不需要了解wordpress数据库的结构.但是,如果你正在写一个插件,你应该会对wordpress如何处理它的数据和关系感兴趣.如果你已经尝试使用已经存在的wordpress a ...

  5. python3读取文件

    #coding:utf-8 rfile = open('test.txt','r') str=[] for x in rfile: str = x.split(',') for x in str: p ...

  6. spring2.5整合hibernate3.0

    第一步:配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  7. PLSQL_性能优化系列04_Oracle Optimizer优化器

    2014-09-25 Created By BaoXinjian

  8. 洛谷 P1060 开心的金明

    开心的金明 Problem Description: 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些 ...

  9. fiddle 中 显示serverIp

    1.快捷键Ctrl+R  或者  菜单->Rules->Customize Rules 2.在CustomRules.js文件里Ctrl+F查找字符串 static function Ma ...

  10. xpath提取目录下所有标签内的内容,递归 //text()

    利用xpath来提取所有标签里面的内容,即使标签头不同 #-*-coding:utf8-*- import re import os from lxml import etree html = ''' ...