Android动画之ViewPropertyAnimator(专用于view的属性动画)

动画入门和进阶文章列表:

Animation动画概述和执行原理
Android动画之补间动画TweenAnimation
Android动画之逐帧动画FrameAnimation
Android动画之插值器简介和系统默认插值器
Android动画之插值器Interpolator自定义
Android动画之视图动画的缺点和属性动画的引入
Android动画之ValueAnimator用法和自定义估值器
Android动画之ObjectAnimator实现补间动画和ObjectAnimator自定义属性
Android动画之ObjectAnimator中ofXX函数全解析-自定义Property,TypeConverter,TypeEvaluator
Android动画之AnimatorSet联合动画用法
Android动画之LayoutTransition布局动画
Android动画之共享元素动画
Android动画之ViewPropertyAnimator(专用于view的属性动画)
Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现
Android动画之ActivityOptionsCompat概述
Android动画之场景变换Transition动画的使用
Android动画之Transition和TransitionManager使用
Android动画之圆形揭露动画Circular Reveal

1 ViewPropertyAnimator 概述

属性动画对比原来的视图动画有很多的优点,属性动画可以对所有的对象做动画操作,但Android开发中需要做动画最多的还是View,如果只是对一个view做动画,很少的几个属性还行,如果是对同一个view的十几个属性同时做动画,相信属性动画的写法是比较繁琐的。ViewPropertyAnimator从名字就可以看出是专用于View的属性动画,在API12被提供。ViewPropertyAnimator专用于操作View动画,语法更加简洁,使用更加方便。
developer:https://developer.android.google.cn/reference/android/view/ViewPropertyAnimator

如何获取ViewPropertyAnimator 对象:
ViewPropertyAnimator 没有构造函数,通过View.animate()方法可以方便的获取ViewPropertyAnimator 对象,此时获取的动画对象就专用于操作当前view。

public ViewPropertyAnimator animate() {
    if (mAnimator == null) {
        mAnimator = new ViewPropertyAnimator(this);
    }
    return mAnimator;
}

ViewPropertyAnimator原理简析
内部利用ValueAnimator实现动画。

用ViewPropertyAnimator 还是ObjectAnimator(ValueAnimator)
如果ViewPropertyAnimator 可以实现的功能尽量用ViewPropertyAnimator ,因为简单快捷。

2 ViewPropertyAnimator基本用法

基本函数

setDuration(); //设置动画时长
setInterpolator(); //设置插值器
setStartDelay(); //设置延迟开始时间
start(); //立刻开始动画
cancel(); //取消动画

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate();
viewPropertyAnimator.setDuration(2000);
viewPropertyAnimator.alpha(0);

在这里插入图片描述

没有调用开始,如果强制调用开始呢?
没有设置start开始动画,动画依然执行了,说明设置完所有动画之后,动画会自动开始执行,也可以手动调用start函数强制动画立刻执行,后面再添加动画也会执行,只不过会稍晚点。

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate();
viewPropertyAnimator.setDuration(2000);
viewPropertyAnimator.translationY(300);
viewPropertyAnimator.start();
viewPropertyAnimator.translationX(300);

在这里插入图片描述
明显看到图片先往下走了一段,然后向左的动画才开始执行。

链式操作
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).translationY(300).scaleX(0.5f);

3 ViewPropertyAnimator 支持的View动画

ViewPropertyAnimator支持的动画:
alpha(float value) 设置View的透明度,value最终值
alphaBy(float value) 设置View的透明度,value是在view当前值的基础上的偏移量,rotation(float value):旋转View,正值顺时针,负值逆时针,value最终值
rotationBy(float value):旋转,在当前值得基础上偏移量
rotationX(float value):绕x轴旋转
rotationXBy(float value):当View旋转的基础上以value为偏移量绕X轴旋转
rotationY(float value):绕Y轴旋转
rotationYBy(float value):在当前旋转的基础上绕Y轴旋转
scaleX(float value):缩放view的X轴方向上的大小
scaleXBy(float value):当前View缩放的基础上,在X轴方向上对view进行缩放
scaleY(float value):缩放view的Y轴方向上的大小
scaleYBy(float value):当前View缩放的基础上,对view的Y轴方向进行缩放
translationX(float value):沿X轴方向平移,value大于0,X轴正方向
translationXBy(float value):带有偏移量的平移
translationY(float value):沿Y轴方向平移,value大于0,沿Y轴正方向平移
translationYBy(float value) :在当前值的基础上,在Y轴方向上平移
x(float value):在当前值的基础上,修改view 的X坐标
xBy(float value):在当前值的基础上,修改view 的X坐标
y(float value):在当前值的基础上,修改View的Y的坐标
yBy(float value):在当前值的基础上,修改View的Y的坐标
z(float value):在当前值的基础上,修改View的Z的坐标
zBy(float value):在当前值的基础上,修改View的Z的坐标

以上函数的执行,会导致相同动画的cancle,以上函数都是除了坐标相关都是以view左上角为坐标原点。

方法都比较简单,下面距几个列子:

首先利用translationX,translationXBy来区分By的意义:
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationY(300);
在这里插入图片描述

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationYBy(300);
在这里插入图片描述

translationYBy 可以多次移动View,translationY多次执行没有效果。

x,y修改在屏幕上的坐标

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).x(100).y(100);
在这里插入图片描述

rotation ,rotationX,rotationY

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).rotation(270);
在这里插入图片描述

4 ViewPropertyAnimator 添加监听

监听函数:
withEndAction:指定一个操作在下一个动画结束的时候发生。
withStartAction:指定一个操作在下一个动画开始的时候发生。
setUpdateListener:添加动画属性变化监听
setListener:添加动画状态监听

据观察withEndAction相当于动画开始,withStartAction相当于动画结束。

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).x(700).y(700).rotation(270).alpha(0.5f).withEndAction(new Runnable() {
    @Override
    public void run() {
        System.out.println("=========withEndAction=======");
    }
}).withStartAction(new Runnable() {
    @Override
    public void run() {
        System.out.println("=========withStartAction=======");
    }
}).setUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        );
    }
}).setListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationCancel(Animator animation) {
        super.onAnimationCancel(animation);
    }

    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
        System.out.println("=========onAnimationEnd=======");
    }

    @Override
    public void onAnimationRepeat(Animator animation) {
        super.onAnimationRepeat(animation);
    }

    @Override
    public void onAnimationStart(Animator animation) {
        super.onAnimationStart(animation);
        System.out.println("=========onAnimationStart=======");

    }

    @Override
    public void onAnimationPause(Animator animation) {
        super.onAnimationPause(animation);
    }

    @Override
    public void onAnimationResume(Animator animation) {
        super.onAnimationResume(animation);
    }
});

在这里插入图片描述
可以看到可以添加setUpdateListener监听,但无法通过这个监听函数监听到当前动画的信息,所以这个监听函数可能用处不大。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包括Android布局,弹窗,配色,单击事件,UI,精美炫酷的activity切换动画和空间动画,是新手必备的源码,内含相关的Dome 25件。 - - 文件夹 PATH 列表 卷序列号为 4E8D-6931 C:. │ .txt │ Android-UI-新手必备源码master.zip │ └─Android-UI │ README.md │ ├─ArcLayout(弧形(或者圆形)布局菜单) │ │ .gitignore │ │ ArcLayout.iml │ │ build.gradle │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ README.md │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─bob │ │ │ └─arclayout │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─bob │ │ │ └─arclayout │ │ │ │ AnimatorUtils.java │ │ │ │ Demo.java │ │ │ │ DemoActivity.java │ │ │ │ DemoFreeAngleActivity.java │ │ │ │ DemoLikePathActivity.java │ │ │ │ DemoLikeTumblrActivity.java │ │ │ │ MainActivity.java │ │ │ │ TestActivity.java │ │ │ │ │ │ │ └─widget │ │ │ ClipRevealFrame.java │ │ │ │ │ └─res │ │ ├─drawable │ │ │ cyan_oval.xml │ │ │ cyan_oval_pressed.xml │ │ │ cyan_oval_selector.xml │ │ │ green_oval.xml │ │ │ green_oval_pressed.xml │ │ │ green_oval_selector.xml │ │ │ light_blue_oval.xml │ │ │ light_blue_oval_pressed.xml │ │ │ light_blue_oval_selector.xml │ │ │ light_green_oval.xml │ │ │ light_green_oval_pressed.xml │ │ │ light_green_oval_selector.xml │ │ │ path_fab.xml │ │ │ path_white_oval.xml │ │ │ teal_oval.xml │ │ │ teal_oval_pressed.xml │ │ │ teal_oval_selector.xml │ │ │ tumblr_blue_oval.xml │ │ │ tumblr_green_oval.xml │ │ │ tumblr_grey_oval.xml │ │ │ tumblr_menu_oval.xml │ │ │ tumblr_orange_oval.xml │ │ │ tumblr_red_oval.xml │ │ │ tumblr_white_oval.xml │ │ │ │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ activity_main.xml │ │ │ arc_free_angle.xml │ │ │ arc_large.xml │ │ │ arc_medium.xml │ │ │ arc_small.xml │ │ │ like_a_path.xml │ │ │ like_a_tumblr.xml │ │ │ text.xml │ │ │ │ │ ├─menu │ │ │ menu_demo.xml │ │ │ menu_main.xml │ │ │ │ │ └─values │ │ colors.xml │ │ dimens.xml │ │ ids.xml │ │ strings.xml │ │ styles.xml │ │ │ ├─art │ │ attrs.png │ │ demo1.gif │ │ demo2.gif │ │ icon.png │ │ Thumbs.db │ │ │ ├─gradle │ │ └─wrapper │ │ gradle-wrapper.jar │ │ gradle-wrapper.properties │ │ │ └─library │ │ .gitignore │ │ build.gradle │ │ library.iml │ │ proguard-rules.pro │ │ │ └─src │ ├─androidTest │ │ └─java │ │ └─com │ │ └─bob │ │ └─library │ │ ApplicationTest.java │ │ │ └─main │ │ AndroidManifest.xml │ │ │ ├─java │ │ └─com │ │ └─bob │ │ └─library │ │ Arc.java │ │ ArcDrawable.java │ │ ArcLayout.java │ │ ArcOrigin.java │ │ Utils.java │ │ │ └─res │ └─values │ attrs.xml │ ├─BeautifulDialog(一些比较漂亮的对话框) │ │ .gitignore │ │ BeautifulDialog.iml │ │ build.gradle │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ 样列1.png │ │ │ 样列2.png │ │ │ 样列3.png │ │ │ 样列4.png │ │ │ 样列5.png │ │ │ 样列6.png │ │ │ 样列7.png │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─my │ │ │ └─beautifuldialog │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─my │ │ │ └─beautifuldialog │ │ │ OptAnimationLoader.java │ │ │ Rotate3dAnimation.java │ │ │ SampleActivity.java │ │ │ SuccessTickView.java │ │ │ SweetAlertDialog.java │ │ │ │ │ └─res │ │ ├─anim │ │ │ error_frame_in.xml │ │ │ error_x_in.xml │ │ │ modal_in.xml │ │ │ modal_out.xml │ │ │ success_bow_roate.xml │ │ │ success_mask_layout.xml │ │ │ │ │ ├─drawable │ │ │ blue_button_background.xml │ │ │ dialog_background.xml │ │ │ error_center_x.xml │ │ │ error_circle.xml │ │ │ gray_button_background.xml │ │ │ red_button_background.xml │ │ │ success_bow.xml │ │ │ success_circle.xml │ │ │ warning_circle.xml │ │ │ warning_sigh.xml │ │ │ │ │ ├─drawable-hdpi │ │ │ custom_img.jpg │ │ │ ic_launcher.png │ │ │ logo_big.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ alert_dialog.xml │ │ │ sample_activity.xml │ │ │ │ │ └─values │ │ attrs.xml │ │ colors.xml │ │ strings.xml │ │ styles.xml │ │ │ └─gradle │ └─wrapper │ gradle-wrapper.jar │ gradle-wrapper.properties │ ├─beautifulLoading(小树叶行的Loading对话框) │ │ .gitignore │ │ beautifulLoading.iml │ │ build.gradle │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ 样列1.png │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─my │ │ │ └─beautifulloading │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─my │ │ │ └─beautifulloading │ │ │ AnimationUtils.java │ │ │ LeafLoadingActivity.java │ │ │ LeafLoadingView.java │ │ │ UiUtils.java │ │ │ │ │ └─res │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ fengshan.png │ │ │ ic_launcher.png │ │ │ leaf.png │ │ │ leaf_kuang.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ fragment_main.xml │ │ │ leaf_loading_layout.xml │ │ │ │ │ └─values │ │ dimens.xml │ │ strings.xml │ │ styles.xml │ │ │ └─gradle │ └─wrapper │ gradle-wrapper.jar │ gradle-wrapper.properties │ ├─BezierView(实现仿QQ未读消息效果) │ │ .gitignore │ │ bezier.gif │ │ BezierView.iml │ │ build.gradle │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ README.md │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ ├─inspectionProfiles │ │ │ profiles_settings.xml │ │ │ Project_Default.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─bob │ │ │ └─bezierview │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─bob │ │ │ └─bezierview │ │ │ BezierView.java │ │ │ MainActivity.java │ │ │ │ │ └─res │ │ ├─drawable │ │ │ tip_anim.xml │ │ │ │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ idp.png │ │ │ idq.png │ │ │ idr.png │ │ │ ids.png │ │ │ idt.png │ │ │ skin_tips_new.png │ │ │ skin_tips_newmessage.9.png │ │ │ skin_tips_newmessage_ninetynine.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ activity_main.xml │ │ │ │ │ └─values │ │ strings.xml │ │ styles.xml │ │ │ └─gradle │ └─wrapper │ gradle-wrapper.jar │ gradle-wrapper.properties │ ├─CrossView(加号变叉号) │ │ .gitignore │ │ build.gradle │ │ cross.gif │ │ CrossView.iml │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ README.md │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─bob │ │ │ └─crossview │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─bob │ │ │ └─crossview │ │ │ SampleActivity.java │ │ │ │ │ └─res │ │ ├─drawable │ │ │ cross_view_selector.xml │ │ │ │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-v21 │ │ │ cross_view_selector.xml │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ activity_sample.xml │ │ │ │ │ ├─menu │ │ │ menu_sample.xml │ │ │ │ │ └─values │ │ colors.xml │ │ dimens.xml │ │ strings.xml │ │ styles.xml │ │ │ ├─gradle │ │ └─wrapper │ │ gradle-wrapper.jar │ │ gradle-wrapper.properties │ │ │ └─library │ │ .gitignore │ │ build.gradle │ │ library.iml │ │ proguard-rules.pro │ │ │ └─src │ ├─androidTest │ │ └─java │ │ └─com │ │ └─bob │ │ └─library │ │ ApplicationTest.java │ │ │ └─main │ │ AndroidManifest.xml │ │ │ ├─java │ │ └─com │ │ └─bob │ │ └─library │ │ CrossView.java │ │ │ └─res │ └─values │ attrs.xml │ ├─DateTimeDialog(时间控件UI) │ │ .gitignore │ │ build.gradle │ │ DateTimeDialog.iml │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ 样列1.png │ │ │ 样列2.png │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─my │ │ │ └─datetimedialog │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─my │ │ │ └─datetimedialog │ │ │ MainActivity.java │ │ │ │ │ └─res │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ activity_main.xml │ │ │ │ │ ├─values │ │ │ dimens.xml │ │ │ strings.xml │ │ │ styles.xml │ │ │ │ │ ├─values-v11 │ │ │ styles.xml │ │ │ │ │ └─values-v14 │ │ styles.xml │ │ │ ├─datetimelibrary │ │ │ .gitignore │ │ │ build.gradle │ │ │ datetimelibrary.iml │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─my │ │ │ └─datetimelibrary │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ └─java │ │ └─com │ │ └─my │ │ └─datetimelibrary │ │ ├─animation │ │ │ Animator.java │ │ │ AnimatorInflater.java │ │ │ AnimatorListenerAdapter.java │ │ │ AnimatorSet.java │ │ │ ArgbEvaluator.java │ │ │ FloatEvaluator.java │ │ │ FloatKeyframeSet.java │ │ │ IntEvaluator.java │ │ │ IntKeyframeSet.java │ │ │ Keyframe.java │ │ │ KeyframeSet.java │ │ │ ObjectAnimator.java │ │ │ PreHoneycombCompat.java │ │ │ PropertyValuesHolder.java │ │ │ TimeAnimator.java │ │ │ TypeEvaluator.java │ │ │ ValueAnimator.java │ │ │ │ │ ├─util │ │ │ FloatProperty.java │ │ │ IntProperty.java │ │ │ NoSuchPropertyException.java │ │ │ Property.java │ │ │ ReflectiveProperty.java │ │ │ │ │ └─view │ │ │ ViewHelper.java │ │ │ ViewPropertyAnimator.java │ │ │ ViewPropertyAnimatorHC.java │ │ │ ViewPropertyAnimatorICS.java │ │ │ ViewPropertyAnimatorPreHC.java │ │ │ │ │ └─animation │ │ AnimatorProxy.java │ │ │ ├─datetimepicker │ │ │ .gitignore │ │ │ build.gradle │ │ │ datetimepicker.iml │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─my │ │ │ └─datetimepicker │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─my │ │ │ └─datetimepicker │ │ │ │ AccessibleTextView.java │ │ │ │ Utils.java │ │ │ │ │ │ │ ├─date │ │ │ │ DatePickerController.java │ │ │ │ DatePickerDialog.java │ │ │ │ DayPickerView.java │ │ │ │ SimpleMonthAdapter.java │ │ │ │ SimpleMonthView.java │ │ │ │ TextViewWithCircularIndicator.java │ │ │ │ YearPickerView.java │ │ │ │ │ │ │ └─time │ │ │ AmPmCirclesView.java │ │ │ CircleView.java │ │ │ RadialPickerLayout.java │ │ │ RadialSelectorView.java │ │ │ RadialTextsView.java │ │ │ TimePickerDialog.java │ │ │ │ │ └─res │ │ ├─color │ │ │ date_picker_selector.xml │ │ │ date_picker_year_selector.xml │ │ │ done_text_color.xml │ │ │ │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ date_picker_dialog.xml │ │ │ date_picker_done_button.xml │ │ │ date_picker_header_view.xml │ │ │ date_picker_selected_date.xml │ │ │ date_picker_view_animator.xml │ │ │ time_header_label.xml │ │ │ time_picker_dialog.xml │ │ │ year_label_text_view.xml │ │ │ │ │ ├─layout-land │ │ │ date_picker_dialog.xml │ │ │ time_picker_dialog.xml │ │ │ │ │ ├─layout-sw600dp │ │ │ date_picker_dialog.xml │ │ │ │ │ ├─layout-sw600dp-land │ │ │ date_picker_dialog.xml │ │ │ │ │ ├─layout-w270dp-h560dp │ │ │ date_picker_dialog.xml │ │ │ │ │ ├─values │ │ │ colors.xml │ │ │ dimens.xml │ │ │ ids.xml │ │ │ strings.xml │ │ │ styles.xml │ │ │ │ │ ├─values-af │ │ │ strings.xml │ │ │ │ │ ├─values-am │ │ │ strings.xml │ │ │ │ │ ├─values-ar │ │ │ strings.xml │ │ │ │ │ ├─values-be │ │ │ strings.xml │ │ │ │ │ ├─values-bg │ │ │ strings.xml │ │ │ │ │ ├─values-ca │ │ │ strings.xml │ │ │ │ │ ├─values-cs │ │ │ strings.xml │ │ │ │ │ ├─values-da │ │ │ strings.xml │ │ │ │ │ ├─values-de │ │ │ strings.xml │ │ │ │ │ ├─values-el │ │ │ strings.xml │ │ │ │ │ ├─values-en-rGB │ │ │ strings.xml │ │ │ │ │ ├─values-en-rGB-v16 │ │ │ strings.xml │ │ │ │ │ ├─values-es │ │ │ strings.xml │ │ │ │ │ ├─values-es-rUS │ │ │ strings.xml │ │ │ │ │ ├─values-et │ │ │ strings.xml │ │ │ │ │ ├─values-fa │ │ │ strings.xml │ │ │ │ │ ├─values-fi │ │ │ strings.xml │ │ │ │ │ ├─values-fr │ │ │ strings.xml │ │ │ │ │ ├─values-hi │ │ │ strings.xml │ │ │ │ │ ├─values-hr │ │ │ strings.xml │ │ │ │ │ ├─values-hu │ │ │ strings.xml │ │ │ │ │ ├─values-in │ │ │ strings.xml │ │ │ │ │ ├─values-it │ │ │ strings.xml │ │ │ │ │ ├─values-iw │ │ │ strings.xml │ │ │ │ │ ├─values-ja │ │ │ strings.xml │ │ │ │ │ ├─values-ko │ │ │ strings.xml │ │ │ │ │ ├─values-land │ │ │ dimens.xml │ │ │ │ │ ├─values-lt │ │ │ strings.xml │ │ │ │ │ ├─values-lv │ │ │ strings.xml │ │ │ │ │ ├─values-mcc262 │ │ │ strings.xml │ │ │ │ │ ├─values-ms │ │ │ strings.xml │ │ │ │ │ ├─values-nb │ │ │ strings.xml │ │ │ │ │ ├─values-nl │ │ │ strings.xml │ │ │ │ │ ├─values-pl │ │ │ strings.xml │ │ │ │ │ ├─values-pt │ │ │ strings.xml │ │ │ │ │ ├─values-pt-rBR │ │ │ strings.xml │ │ │ │ │ ├─values-pt-rPT │ │ │ strings.xml │ │ │ │ │ ├─values-ro │ │ │ strings.xml │ │ │ │ │ ├─values-ru │ │ │ strings.xml │ │ │ │ │ ├─values-sk │ │ │ strings.xml │ │ │ │ │ ├─values-sl │ │ │ strings.xml │ │ │ │ │ ├─values-small │ │ │ dimens.xml │ │ │ │ │ ├─values-sr │ │ │ strings.xml │ │ │ │ │ ├─values-sv │ │ │ strings.xml │ │ │ │ │ ├─values-sw │ │ │ strings.xml │ │ │ │ │ ├─values-sw600dp │ │ │ dimens.xml │ │ │ │ │ ├─values-sw600dp-land │ │ │ dimens.xml │ │ │ │ │ ├─values-th │ │ │ strings.xml │ │ │ │ │ ├─values-tl │ │ │ strings.xml │ │ │ │ │ ├─values-tr │ │ │ strings.xml │ │ │ │ │ ├─values-uk │ │ │ strings.xml │ │ │ │ │ ├─values-v11 │ │ │ styles.xml │ │ │ │ │ ├─values-v14 │ │ │ styles.xml │ │ │ │ │ ├─values-v16 │ │ │ strings.xml │ │ │ styles.xml │ │ │ │ │ ├─values-vi │ │ │ strings.xml │ │ │ │ │ ├─values-w270dp-h560dp │ │ │ dimens.xml │ │ │ │ │ ├─values-zh-rCN │ │ │ strings.xml │ │ │ │ │ ├─values-zh-rTW │ │ │ strings.xml │ │ │ │ │ └─values-zu │ │ strings.xml │ │ │ └─gradle │ └─wrapper │ gradle-wrapper.jar │ gradle-wrapper.properties │ ├─Dialog(特效对话框) │ │ .gitignore │ │ build.gradle │ │ Dialog.iml │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ dilog.gif │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─my │ │ │ └─dialog │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─my │ │ │ └─dialog │ │ │ MainActivity.java │ │ │ │ │ └─res │ │ ├─drawable-hdpi │ │ │ icon.png │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ activity_main.xml │ │ │ │ │ ├─values │ │ │ strings.xml │ │ │ styles.xml │ │ │ │ │ ├─values-v11 │ │ │ styles.xml │ │ │ │ │ ├─values-v14 │ │ │ styles.xml │ │ │ │ │ ├─values-w360dp │ │ │ dimens.xml │ │ │ │ │ ├─values-w480dp │ │ │ dimens.xml │ │ │ │ │ ├─values-w500dp │ │ │ dimens.xml │ │ │ │ │ ├─values-w600dp │ │ │ dimens.xml │ │ │ │ │ └─values-w720dp │ │ dimens.xml │ │ │ ├─gradle │ │ └─wrapper │ │ gradle-wrapper.jar │ │ gradle-wrapper.properties │ │ │ └─lib │ │ .gitignore │ │ build.gradle │ │ lib.iml │ │ library.iml │ │ proguard-rules.pro │ │ │ └─src │ ├─androidTest │ │ └─java │ │ └─com │ │ └─my │ │ └─lib │ │ ApplicationTest.java │ │ │ └─main │ │ AndroidManifest.xml │ │ │ ├─java │ │ └─com │ │ └─my │ │ └─lib │ │ │ Effectstype.java │ │ │ NiftyDialogBuilder.java │ │ │ │ │ └─core │ │ BaseEffects.java │ │ FadeIn.java │ │ Fall.java │ │ FlipH.java │ │ FlipV.java │ │ NewsPaper.java │ │ RotateBottom.java │ │ RotateLeft.java │ │ Shake.java │ │ SideFall.java │ │ SlideBottom.java │ │ SlideLeft.java │ │ SlideRight.java │ │ SlideTop.java │ │ Slit.java │ │ │ └─res │ ├─drawable │ │ btn_press.xml │ │ btn_selector.xml │ │ btn_unpress.xml │ │ dialog_bg.xml │ │ │ ├─drawable-hdpi │ │ ic_launcher.png │ │ │ ├─drawable-mdpi │ │ ic_launcher.png │ │ │ ├─drawable-xhdpi │ │ ic_launcher.png │ │ │ ├─drawable-xxhdpi │ │ ic_launcher.png │ │ │ ├─layout │ │ custom_view.xml │ │ dialog_layout.xml │ │ │ └─values │ colors.xml │ dimens.xml │ strings.xml │ styles.xml │ ├─DialogPlusDemo(对话框组件,可做上下弹出布局) │ │ .gitignore │ │ build.gradle │ │ dialogplus.gif │ │ dialogplusanim.gif │ │ DialogPlusDemo.iml │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ README.md │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─bob │ │ │ └─dialogplusdemo │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─bob │ │ │ └─dialogplusdemo │ │ │ MainActivity.java │ │ │ SimpleAdapter.java │ │ │ │ │ └─res │ │ ├─drawable │ │ │ selector_bg_button.xml │ │ │ │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_google_maps_icon.png │ │ │ ic_google_messenger_icon.png │ │ │ ic_google_plus_icon.png │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ activity_main.xml │ │ │ content.xml │ │ │ content2.xml │ │ │ footer.xml │ │ │ header.xml │ │ │ simple_grid_item.xml │ │ │ simple_list_item.xml │ │ │ │ │ └─values │ │ colors.xml │ │ dimens.xml │ │ strings.xml │ │ styles.xml │ │ │ └─gradle │ └─wrapper │ gradle-wrapper.jar │ gradle-wrapper.properties │ ├─DragTopLayout(360软件详情页特效) │ │ .gitignore │ │ build.gradle │ │ DragTopLayout.iml │ │ dragtop_1.1.0.gif │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ README.md │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─bob │ │ │ └─dragtoplayout │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─github │ │ │ └─chenupt │ │ │ └─dragtoplayout │ │ │ └─demo │ │ │ │ AboutActivity.java │ │ │ │ CustomView.java │ │ │ │ DataService.java │ │ │ │ MainActivity.java │ │ │ │ │ │ │ ├─fragments │ │ │ │ GridViewFragment.java │ │ │ │ ListViewFragment.java │ │ │ │ RecyclerFragment.java │ │ │ │ ScrollViewFragment.java │ │ │ │ WebViewFragment.java │ │ │ │ │ │ │ ├─pulltorefresh │ │ │ │ PullToRefreshActivity.java │ │ │ │ PullToRefreshTopLayout.java │ │ │ │ │ │ │ └─utils │ │ │ DebugLog.java │ │ │ │ │ └─res │ │ ├─drawable-hdpi │ │ │ icon.png │ │ │ ic_fab_star.png │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_fab_star.png │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ avatar.png │ │ │ ic_fab_star.png │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_fab_star.png │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ activity_about.xml │ │ │ activity_main.xml │ │ │ activity_pulltorefresh.xml │ │ │ fragment_gridview.xml │ │ │ fragment_list.xml │ │ │ fragment_recycler.xml │ │ │ fragment_scrollview.xml │ │ │ fragment_webview.xml │ │ │ view_item_custom.xml │ │ │ │ │ ├─menu │ │ │ menu_main.xml │ │ │ │ │ ├─values │ │ │ colors.xml │ │ │ dimens.xml │ │ │ strings.xml │ │ │ styles.xml │ │ │ │ │ └─values-w820dp │ │ dimens.xml │ │ │ ├─gradle │ │ └─wrapper │ │ gradle-wrapper.jar │ │ gradle-wrapper.properties │ │ │ ├─library │ │ │ .gitignore │ │ │ build.gradle │ │ │ library.iml │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─bob │ │ │ └─library │ │ │ AttachUtil.java │ │ │ DragTopLayout.java │ │ │ │ │ └─res │ │ └─values │ │ attrs.xml │ │ │ └─sample │ │ .gitignore │ │ build.gradle │ │ proguard-rules.pro │ │ sample.iml │ │ │ └─src │ └─main │ │ AndroidManifest.xml │ │ │ ├─java │ │ └─com │ │ └─bob │ │ └─sample │ │ │ DragTopLayoutEvent.java │ │ │ │ │ ├─activity │ │ │ MainAcitivity.java │ │ │ │ │ ├─fragment │ │ │ GridViewFragment.java │ │ │ ListViewFragment.java │ │ │ RecyclerViewFragment.java │ │ │ ScrollViewFragment.java │ │ │ WebViewFragment.java │ │ │ │ │ └─widget │ │ PagerSlidingTabStrip.java │ │ │ └─res │ ├─drawable │ │ avatar.png │ │ │ ├─drawable-hdpi │ │ image_sliding_block.9.png │ │ sliding_tab_strip_background.9.png │ │ tubiao.jpg │ │ │ ├─drawable-xhdpi │ │ ic_launcher.png │ │ │ ├─layout │ │ fragment_scrollview.xml │ │ fragment_webview.xml │ │ grid_view_fragment.xml │ │ list_view_fragment.xml │ │ main.xml │ │ recycler_view_fragment.xml │ │ sliding_tab_item.xml │ │ │ └─values │ attrs.xml │ strings.xml │ styles.xml │ ├─ExpandableSelector(可扩展的选择器(底部绝对定位菜单)) │ │ .gitignore │ │ build.gradle │ │ ExpandableSelector.iml │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ README.md │ │ settings.gradle │ │ shili.png │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ scope_settings.xml │ │ │ ├─app │ │ │ .gitignore │ │ │ app.iml │ │ │ build.gradle │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─bob │ │ │ └─expandableselector │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─bob │ │ │ └─expandableselector │ │ │ MainActivity.java │ │ │ │ │ └─res │ │ ├─drawable │ │ │ bg_expandable_selector.xml │ │ │ bg_expandable_selector_dark.xml │ │ │ bg_item_with_title.xml │ │ │ item_brown.xml │ │ │ item_green.xml │ │ │ item_orange.xml │ │ │ item_pink.xml │ │ │ │ │ ├─drawable-hdpi │ │ │ ic_device_hub_black.png │ │ │ ic_gamepad_black.png │ │ │ ic_keyboard_arrow_down_black.png │ │ │ ic_keyboard_arrow_up_black.png │ │ │ ic_launcher.png │ │ │ ic_logo_karumi.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-v21 │ │ │ bg_item_with_title.xml │ │ │ item_brown.xml │ │ │ item_green.xml │ │ │ item_orange.xml │ │ │ item_pink.xml │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_device_hub_black.png │ │ │ ic_gamepad_black.png │ │ │ ic_keyboard_arrow_down_black.png │ │ │ ic_keyboard_arrow_up_black.png │ │ │ ic_launcher.png │ │ │ ic_logo_karumi.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ main_activity.xml │ │ │ │ │ └─values │ │ colors.xml │ │ dimens.xml │ │ integers.xml │ │ strings.xml │ │ styles.xml │ │ themes.xml │ │ │ ├─component │ │ │ .gitignore │ │ │ build.gradle │ │ │ component.iml │ │ │ proguard-rules.pro │ │ │ │ │ └─src │ │ ├─androidTest │ │ │ └─java │ │ │ └─com │ │ │ └─bob │ │ │ └─component │ │ │ ApplicationTest.java │ │ │ │ │ └─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─com │ │ │ └─bob │ │ │ └─component │ │ │ │ ExpandableItem.java │ │ │ │ ExpandableSelector.java │ │ │ │ ExpandableSelectorListener.java │ │ │ │ OnExpandableItemClickListener.java │ │ │ │ │ │ │ └─animation │ │ │ AbstractAnimationListener.java │ │ │ ExpandableSelectorAnimator.java │ │ │ ResizeAnimation.java │ │ │ │ │ └─res │ │ ├─drawable-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─layout │ │ │ expandable_item_button.xml │ │ │ expandable_item_image_button.xml │ │ │ │ │ └─values │ │ attrs.xml │ │ │ └─gradle │ └─wrapper │ gradle-wrapper.jar │ gradle-wrapper.properties │ ├─FragmentBasicsDemo(多视图布局) │ │ .gitignore │ │ build.gradle │ │ FragmentBasicsDemo.iml │ │ gradle.properties │ │ gradlew │ │ gradlew.bat │ │ settings.gradle │ │ │ ├─.idea │ │ │ .name │ │ │ compiler.xml │ │ │ encodings.xml │ │ │ gradle.xml │ │ │ misc.xml │ │ │ modules.xml │ │ │ vcs.xml │ │ │ │ │ ├─copyright │ │ │ profiles_settings.xml │ │ │ │ │ └─scopes │ │ sco

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值