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. ChinaUnix上的帮助手册还不错!

    无意中发现ChinaUnix上的Linux帮助手册还真不错啊,有时间多看一看: http://man.chinaunix.net/linux/debian/debian_learning/index. ...

  2. 【linux】/etc/passwd文件

    /etc/passwd文件内容格式 /etc/passwd是保存用户信息的文件. 格式:用户名: 密码 : uid  : gid :用户描述:主目录:登陆shell 举个例子: root:x:0:0: ...

  3. 【linux】man和--help

    man和--help都是获取命令帮助的指令. man 格式: man [命令] [root@andon tmp]# man pwd --help 命令 --help [root@andon tmp]# ...

  4. WIN8外包公司【经验分享】——升级WIN8.1后VS2012报错解决方法

    今天升级WIN8.1的时候发现VS2012不能正常工作,原来的Silverlight项目也无法正常打开了,这是WIN8.1升级产生的bug. 得知微软提供了VISUAL STUDIO 2012 UPD ...

  5. 【Redis】配置redis主从复制

    阅读目录 redis-3.2.1.master tar zxvf redis-3.2.1.tar.gz mv redis-3.2.1 redis-3.2.1.slave-1 tar zxvf redi ...

  6. Redis集群方案介绍

    由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法 ...

  7. Redis-sentinel监控

    Sentinel介绍 Redis的 Sentinel 系统用于管理多个Redis服务器, 该系统执行以下三个任务: 监控(Monitoring) 提醒(Notification) 自动故障迁移(Aut ...

  8. MySQL指定mysqld启动时所加载的配置文件

    mysqld.exe --init-file=file_name 以下为配置文件参数优化和中文详解: [client]port = 3306socket = /tmp/mysql.sock [mysq ...

  9. android学习笔记16——对话框

    android支持丰富的对话框,常用4中对话框: 1.AlertDialog: 2.ProgressDialog:进度对话框,这个对话框只是对进度条的封装 3.DatePickerDialog:日期选 ...

  10. golang的连接池例子

    github.com/jolestar/go-commons-pool 测试代码 package main import ( "github.com/jolestar/go-commons- ...