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. 全面理解Javascript中Function对象的属性和方法

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

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

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

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

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

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

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

  5. Extjs中GridPanel的各个属性与方法

    1.Ext.grid.GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充 ...

  6. Python 中Editplus 特别实用的设置方法

    editplus 中输入tab自动变成4个空格打开tools->preference打开面板,files的子栏目->settings & syntax面板中的 tab/indent ...

  7. OpenLayers中地图缩放级别的设置方法

    来源于:http://www.cnblogs.com/sailheart/archive/2011/03/15/1984519.html 一.概述 在OpenLayers中,地图必须具有一个缩放级别的 ...

  8. javascript中document对象的属性和方法

    document.documentElement; document.firstChild;document.childNodes[0];// 取得对<html>的引用document.b ...

  9. JavaScript中数组类型的属性和方法

    除了Object,Array类型应该是ECMAScript中最常用的类型了. ECMAScript的数组虽然也是数据的有序列表,但还是与其他语言中的数组有很大的区别.比如ECMAScript数组每一项 ...

随机推荐

  1. DatePickerDialog、AutoCompleteTextView

    DatePickerDialog选择日期,调用showDialog(int id)方法,会执行onCreateDialog方法: @Override protected Dialog onCreate ...

  2. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  3. drupal字段值的规律

    field_abc,则会出现field_data_field_abc这样一个表,然后有entity_id这个字段,然后有field_abc_value或者field_abc_target_id,或者f ...

  4. Google Tensorflow 源码编译(二):Bazel&lt;v0.1.0&gt;

    这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Baze ...

  5. java 生成 csv文件

    一.csv文件 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是 ...

  6. 作业成绩 final-review 20161201-1203 15:05

    final-review阶段,20161201-20161203 15:05 final 评论II截止 20161204 09:00 申诉截止时间 20161207 12:00,微信联系杨贵福. 凡描 ...

  7. js 排序Json数组

    由于对用java处理数据需要各种数据类型的转换,非常郁闷,个人更偏向于用js做数据处理,直接上code,希望对你有帮助: function sortJsonArr(jsonArr, sortName, ...

  8. curl常用操作

    1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性 ...

  9. u3d动态加入模型

    楼层一层一层的加,把模型分开,弄成prefab放到Resourse文件夹里,在代码里用Instantiate(Resources.Load("模型名字") as GameObjec ...

  10. MyEclipse安装JS代码提示(Spket插件)

    近期需要大量使用JS来开发,但是MyEclipse2014自带的JS编辑器没有代码提示的功能,开发效率有点低,所以安装了一个Spket的插件,过程非常简单,SVN插件的安装比这个更简单. Spket插 ...