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. 学习ASP.NET Core, 怎能不了解请求处理管道[6]: 管道是如何随着WebHost的开启被构建出来的?

    注册的服务器和中间件共同构成了ASP.NET Core用于处理请求的管道, 这样一个管道是在我们启动作为应用宿主的WebHost时构建出来的.要深刻了解这个管道是如何被构建出来的,我们就必须对WebH ...

  2. .net 一些开源的东东

    来自网络..版权归网络所有..Antlr ----- Website: http://www.antlr.org/ Copyright: Copyright (c) - Terence Parr Li ...

  3. Java transient 关键字

    1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问. 2)transient关键字只能修饰变量,而不能修饰方法和类.注意,本地变量是不能被trans ...

  4. Markdown 完全指南

    概述 Markdown 是一种用于网络文本书写的轻量级标记语言,广泛用于个人 blog.github.wiki 中.其实浏览器并不能识别 Markdown 的语法,但许多 blog.wiki 平台以及 ...

  5. Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:错误

    对于C++初学者或粗心者,很容易犯如下图所示错误:     那么该错误是由什么造成的呢?   答案无疑只有一个,即:读取了本该没有的值或者地址.   那么如何解决呢?   第一件事,检查下你传入的参数 ...

  6. alpha 发布评论

    1.飞天小女警:礼物挑选小工具. 这一组的项目是个人最为感兴趣的,核心功能的实现比较有实际意义,希望所能挑选的礼物范围尽量足够大,界面期待完善后的效果. 2.nice!:约跑app.这一款面向喜爱运动 ...

  7. layer图层常见属性

    把layer常见图层属性总结了一下^-^欢迎大家讨论~~~~来吧 ,代码属性 #import "CZViewController.h" @interface CZViewContr ...

  8. Interface/接口

    1. 类和结构能够实现接口 2. 接口声明包含如下四种类型:属性.方法.事件和索引:这些函数声明不能包含任何实现代码,而在每一个成员的主体后必须使用分号 3. 继承接口的类或结构必须实现接口中的所有成 ...

  9. idea的修改文件变颜色

    直接用IntelliJ IDEA 拉SVN 工程 时,如下图所示都不勾选可以成功拉取.

  10. PHP for 循环

    <!DOCTYPE html> <html> <body> <?php for ($x=0; $x<=10; $x++) { echo "数字 ...