Android开发--Facebook酷炫开源库Shimmer使用

今天在上网的时候无意间看到了Facebook的Shimmer开源库,感觉很是酷炫,而且使用超方便,决定给大家介绍一下。Shimmer是Facebook提供的一项基于Java的library,它可以使Android中的所有View控件具有闪光的效果。该项目的GitHub项目托管地址,请猛戳https://github.com/facebook/shimmer-android

使用Shimmer

配置工程

  1. 首先,我们在GitHub上将该项目clone到本地;
  2. 接下来我们在Android studio中导入所需要的module, 即shimmer-android;
  3. 最后,需要配置一下下自己的gradle,引用该module:
dependencies {
       compile project(':shimmer-android')
}

添加到布局文件

ShimmerFrameLayout是我们需要使用的类,它继承于Android的Layout,这也就意味着我们可以将自己的布局控件嵌套在该布局之内以实现闪光的效果,简单方便。

<com.facebook.shimmer.ShimmerFrameLayout
    android:id="@+id/shimmerContent"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    "@string/hello_world"
        android:layout_width="wrap_content"
        android:textSize="40sp"
        android:textColor="#fff"
        android:layout_gravity="center"
        android:layout_height="wrap_content" />
com.facebook.shimmer.ShimmerFrameLayout>

开始动画

在Activity中获得该布局ShimmerFrameLayout,并调用其startShimmerAnimation方法,我们就可以看到闪光效果了。

ShimmerFrameLayout shimmerFrameLayout = (ShimmerFrameLayout) findViewById(R.id.shimmerContent);
shimmerFrameLayout.startShimmerAnimation();

效果如下:
Android开发--Facebook酷炫开源库Shimmer使用_第1张图片

定制自己的闪光效果

Facebook为该类提供了几个方法允许我们定制自己的闪光效果,API文档详见http://facebook.github.io/shimmer-android/javadoc/index.html

设置动画时间间隔

setDuration方法允许我们传入一个int值来对动画的时间间隔设置,单位是毫秒

设置动画重复类型

ShimmerFrameLayout之下的setRepeatMode方法可以允许我们设置动画的重复模式,有两种
REVERSE或者RESTART,REVERSE表示,闪光从左到右,之后在从右到左这样往复;而RESTART表示闪光每次总是从左到右。
为了更形象的说明,我们在代码中添加,

shimmerFrameLayout.setRepeatMode(ObjectAnimator.REVERSE);

可以看到如下效果:

Android开发--Facebook酷炫开源库Shimmer使用_第2张图片

设置闪光的倾斜角度

setTilt方法允许我们设置光的倾斜角度,传入参数是float类型,表示倾斜的角度,正值表示顺时针倾斜,负值表示逆时针倾斜。
setAngle方法,与其说是设置角度不如说是设置方向,因为该方法的传入参数只能被设置为以下四种之一,
ShimmerFrameLayout.MaskAngle.CW_0 表示从左到右的方向
ShimmerFrameLayout.MaskAngle.CW_90 表示从上到下的方向
ShimmerFrameLayout.MaskAngle.CW_180 表示从右到左的方向ShimmerFrameLayout.MaskAngle.CW_270 表示从下到上的方向

设置光的宽度

setDropoff方法可以设置光的宽度,该值表示的是一个相对的宽度,即表示整个ShimmerFrameLayout宽度的比例。即若设置该值为0.5f则表示光的宽度是ShimmerFrameLayout的一半。

设置透明度

setBaseAlpha方法允许我们设置没有光照的地方的透明度
setIntensity设置光的强度,根据测试来看,应该是被光照的边缘部分的透明度。

设置光的形状

setMaskShape方法可以允许我们设置光的形状,目前可以设置为线性ShimmerFrameLayout.MaskShape.LINEAR(默认),圆形或者叫辐射状ShimmerFrameLayout.MaskShape.RADIAL

你可能感兴趣的:(Android)