├── app
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── values
│ │ │ │ ├── strings.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── styles.xml
│ │ │ │ └── colors.xml
│ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── animator
│ │ │ │ ├── value.xml
│ │ │ │ ├── alpha.xml
│ │ │ │ ├── scale.xml
│ │ │ │ ├── rotate.xml
│ │ │ │ ├── translate.xml
│ │ │ │ └── zuhe.xml
│ │ │ ├── anim
│ │ │ │ ├── rotate.xml
│ │ │ │ ├── alpha.xml
│ │ │ │ ├── traslate.xml
│ │ │ │ ├── scale.xml
│ │ │ │ └── all.xml
│ │ │ ├── values-w820dp
│ │ │ │ └── dimens.xml
│ │ │ └── layout
│ │ │ │ ├── activity_xml.xml
│ │ │ │ ├── activity_xmlanimator.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_code.xml
│ │ │ │ └── activity_object_anim.xml
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ │ └── com
│ │ │ └── husy
│ │ │ └── androidallanimation
│ │ │ ├── MainActivity.java
│ │ │ ├── XmlViewActivity.java
│ │ │ ├── XMLAnimatorActivity.java
│ │ │ ├── CodeObjectAnimActivity.java
│ │ │ └── CodeViewAnimation.java
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── husy
│ │ │ └── androidallanimation
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── husy
│ │ └── androidallanimation
│ │ └── ApplicationTest.java
├── proguard-rules.pro
├── build.gradle
└── app.iml
├── .idea
├── .name
├── copyright
│ └── profiles_settings.xml
├── dictionaries
│ └── 15361.xml
├── encodings.xml
├── vcs.xml
├── modules.xml
├── runConfigurations.xml
├── gradle.xml
├── compiler.xml
└── misc.xml
├── settings.gradle
├── result.gif
├── .gitignore
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── AndroidAllAnimation.iml
├── README.md
├── gradlew.bat
└── gradlew
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | AndroidAllAnimation
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/result.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/longyinzaitian/AndroidAllAnimation/HEAD/result.gif
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/dictionaries/15361.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | /.idea/libraries
5 | .DS_Store
6 | /build
7 | /captures
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AndroidAllAnimation
3 |
4 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/longyinzaitian/AndroidAllAnimation/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/longyinzaitian/AndroidAllAnimation/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/longyinzaitian/AndroidAllAnimation/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/longyinzaitian/AndroidAllAnimation/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/longyinzaitian/AndroidAllAnimation/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/longyinzaitian/AndroidAllAnimation/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Oct 20 10:15:40 CST 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/animator/value.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/animator/alpha.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/animator/scale.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/rotate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/alpha.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/traslate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/animator/rotate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/test/java/com/husy/androidallanimation/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.husy.androidallanimation;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * To work on unit tests, switch the Test Artifact in the Build Variants view.
9 | */
10 | public class ExampleUnitTest {
11 | @Test
12 | public void addition_isCorrect() throws Exception {
13 | assertEquals(4, 2 + 2);
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/husy/androidallanimation/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.husy.androidallanimation;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/app/src/main/res/anim/scale.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_xml.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_xmlanimator.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\AndroidStudioSDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 23
5 | buildToolsVersion "23.0.1"
6 |
7 | defaultConfig {
8 | applicationId "com.husy.androidallanimation"
9 | minSdkVersion 11
10 | targetSdkVersion 23
11 | versionCode 1
12 | versionName "1.0"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 | }
21 |
22 | dependencies {
23 | compile fileTree(dir: 'libs', include: ['*.jar'])
24 | testCompile 'junit:junit:4.12'
25 | compile 'com.android.support:appcompat-v7:23.1.0'
26 | compile 'com.jakewharton:butterknife:7.0.1'
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/res/animator/translate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/app/src/main/res/animator/zuhe.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
19 |
20 |
21 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/AndroidAllAnimation.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/all.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
21 |
29 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AndroidAllAnimation
2 | 安卓视图动画和属性动画集锦
3 |
4 | 
5 |
6 | 效果图中展示的是视图动画和属性动画
7 |
8 | 两种动画都分为代码控制和XML控制视图动画的效果。
9 |
10 | 代码控制视图动画
11 | XML控制视图动画
12 | 代码控制属性动画
13 | XML控制属性动画
14 | 总共这四部分。
15 |
16 | 每一部分都有旋转、缩放、平移、透明度、组合等几个部分。
17 | 非常适合初学者对于视图动画和属性动画的用法的掌握。
18 |
19 | 欢迎访问我的[博客](http://blog.csdn.net/u010156024/article/details/49281789)!
20 | 有什么问题,欢迎留言评论!【握手~】
21 | 欢迎关注[我的github](https://github.com/longyinzaitian)!
22 | Follow me!
23 |
24 | 另外,关于android动画部分,我的另一个
25 | [帧动画和布局动画](https://github.com/longyinzaitian/FrameAndLayoutAnimation)的小项目也给出了较为详细的用法。欢迎访问。
26 |
27 | License
28 |
29 | Copyright 2015 Héctor de Isidro - hrules6872
30 |
31 | Licensed under the Apache License, Version 2.0 (the "License");
32 | you may not use this file except in compliance with the License.
33 | You may obtain a copy of the License at
34 |
35 | http://www.apache.org/licenses/LICENSE-2.0
36 |
37 | Unless required by applicable law or agreed to in writing, software
38 | distributed under the License is distributed on an "AS IS" BASIS,
39 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40 | See the License for the specific language governing permissions and
41 | limitations under the License.
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/husy/androidallanimation/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.husy.androidallanimation;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.view.View;
7 | import android.widget.TextView;
8 |
9 | import butterknife.Bind;
10 | import butterknife.ButterKnife;
11 | import butterknife.OnClick;
12 |
13 | public class MainActivity extends AppCompatActivity {
14 |
15 | @Bind(R.id.code_animation)
16 | TextView codeAnimation;
17 | @Bind(R.id.xml_animation)
18 | TextView xmlAnimation;
19 | @Bind(R.id.object_animator)
20 | TextView objectAnimator;
21 | @Bind(R.id.xml_object_animator)
22 | TextView XMLObjectAnimator;
23 |
24 | @Override
25 | protected void onCreate(Bundle savedInstanceState) {
26 | super.onCreate(savedInstanceState);
27 | setContentView(R.layout.activity_main);
28 | ButterKnife.bind(this);
29 | }
30 |
31 | @OnClick({R.id.code_animation, R.id.xml_animation,
32 | R.id.object_animator,R.id.xml_object_animator})
33 | public void onclick(View v) {
34 | switch (v.getId()) {
35 | case R.id.code_animation:
36 | startActivity(new Intent(MainActivity.this
37 | , CodeViewAnimation.class));
38 | break;
39 | case R.id.xml_animation:
40 | startActivity(new Intent(MainActivity.this,
41 | XmlViewActivity.class));
42 | break;
43 | case R.id.object_animator:
44 | startActivity(new Intent(MainActivity.this,
45 | CodeObjectAnimActivity.class));
46 | break;
47 | case R.id.xml_object_animator:
48 | startActivity(new Intent(MainActivity.this,
49 | XMLAnimatorActivity.class));
50 | break;
51 | }
52 | }
53 |
54 | @Override
55 | protected void onDestroy() {
56 | super.onDestroy();
57 | ButterKnife.unbind(this);
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
24 |
34 |
44 |
54 |
55 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_code.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
23 |
32 |
41 |
50 |
59 |
60 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_object_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
22 |
31 |
40 |
49 |
58 |
67 |
68 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/app/src/main/java/com/husy/androidallanimation/XmlViewActivity.java:
--------------------------------------------------------------------------------
1 | package com.husy.androidallanimation;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.view.View;
6 | import android.view.animation.Animation;
7 | import android.view.animation.AnimationUtils;
8 | import android.widget.TextView;
9 | import android.widget.Toast;
10 |
11 | import butterknife.Bind;
12 | import butterknife.ButterKnife;
13 | import butterknife.OnClick;
14 |
15 | public class XmlViewActivity extends AppCompatActivity {
16 |
17 | @Bind(R.id.alpha)
18 | TextView alpha;
19 | @Bind(R.id.scale)
20 | TextView scale;
21 | @Bind(R.id.traslate)
22 | TextView traslate;
23 | @Bind(R.id.rotate)
24 | TextView rotate;
25 | @Bind(R.id.all_ani)
26 | TextView allAni;
27 |
28 | @Override
29 | protected void onCreate(Bundle savedInstanceState) {
30 | super.onCreate(savedInstanceState);
31 | setContentView(R.layout.activity_code);
32 | ButterKnife.bind(this);
33 | }
34 |
35 | @OnClick({R.id.alpha, R.id.scale, R.id.traslate, R.id.rotate, R.id.all_ani})
36 | public void onclick(View v) {
37 | switch (v.getId()) {
38 | case R.id.alpha:
39 | Animation alpha_animation = AnimationUtils
40 | .loadAnimation(XmlViewActivity.this, R.anim.alpha);
41 | alpha.startAnimation(alpha_animation);
42 | break;
43 | case R.id.scale:
44 | Animation scale_animation = AnimationUtils
45 | .loadAnimation(XmlViewActivity.this, R.anim.scale);
46 | scale.startAnimation(scale_animation);
47 | break;
48 | case R.id.traslate:
49 | Animation traslate_animation = AnimationUtils
50 | .loadAnimation(XmlViewActivity.this, R.anim.traslate);
51 | traslate.startAnimation(traslate_animation);
52 | break;
53 | case R.id.rotate:
54 | Animation rotate_animation = AnimationUtils
55 | .loadAnimation(XmlViewActivity.this, R.anim.rotate);
56 | rotate.startAnimation(rotate_animation);
57 | break;
58 | case R.id.all_ani:
59 | Animation all_animation = AnimationUtils
60 | .loadAnimation(XmlViewActivity.this,R.anim.all);
61 | allAni.startAnimation(all_animation);
62 | all_animation.setAnimationListener(new Animation.AnimationListener() {
63 | @Override
64 | public void onAnimationStart(Animation animation) {
65 | Toast.makeText(XmlViewActivity.this, "开始啦。", Toast.LENGTH_SHORT).show();
66 | }
67 |
68 | @Override
69 | public void onAnimationEnd(Animation animation) {
70 | Toast.makeText(XmlViewActivity.this,"结束啦。。。。。。",Toast.LENGTH_SHORT).show();
71 | }
72 |
73 | @Override
74 | public void onAnimationRepeat(Animation animation) {
75 |
76 | }
77 | });
78 | break;
79 | }
80 | }
81 |
82 | @Override
83 | protected void onDestroy() {
84 | super.onDestroy();
85 | ButterKnife.unbind(this);
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/app/src/main/java/com/husy/androidallanimation/XMLAnimatorActivity.java:
--------------------------------------------------------------------------------
1 | package com.husy.androidallanimation;
2 |
3 | import android.animation.Animator;
4 | import android.animation.AnimatorInflater;
5 | import android.animation.ValueAnimator;
6 | import android.os.Bundle;
7 | import android.support.v7.app.AppCompatActivity;
8 | import android.view.View;
9 | import android.widget.TextView;
10 |
11 | import butterknife.Bind;
12 | import butterknife.ButterKnife;
13 | import butterknife.OnClick;
14 |
15 | public class XMLAnimatorActivity extends AppCompatActivity {
16 |
17 | @Bind(R.id.traslate)
18 | TextView traslate;
19 | @Bind(R.id.rotate)
20 | TextView rotate;
21 | @Bind(R.id.alpha)
22 | TextView alpha;
23 | @Bind(R.id.scale)
24 | TextView scale;
25 | @Bind(R.id.zuhe1)
26 | TextView zuhe;
27 | @Bind(R.id.zuhe2)
28 | TextView value;
29 |
30 | @Override
31 | protected void onCreate(Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 | setContentView(R.layout.activity_object_anim);
34 | ButterKnife.bind(this);
35 | }
36 | @OnClick({R.id.traslate,R.id.rotate,R.id.alpha,
37 | R.id.scale,R.id.zuhe2,R.id.zuhe1})
38 | public void onclick(View v){
39 | switch (v.getId()){
40 | case R.id.traslate:
41 | Animator tra = AnimatorInflater
42 | .loadAnimator(XMLAnimatorActivity.this,
43 | R.animator.translate);
44 | tra.setTarget(traslate);
45 | tra.start();
46 | break;
47 | case R.id.rotate:
48 | Animator rota = AnimatorInflater
49 | .loadAnimator(XMLAnimatorActivity.this,
50 | R.animator.rotate);
51 | rota.setTarget(rotate);
52 | rota.start();
53 | break;
54 | case R.id.alpha:
55 | Animator alph = AnimatorInflater
56 | .loadAnimator(XMLAnimatorActivity.this,
57 | R.animator.alpha);
58 | alph.setTarget(alpha);
59 | alph.start();
60 | break;
61 | case R.id.scale:
62 | Animator sca = AnimatorInflater
63 | .loadAnimator(XMLAnimatorActivity.this,
64 | R.animator.scale);
65 | sca.setTarget(scale);
66 | sca.start();
67 | break;
68 | case R.id.zuhe1:
69 | Animator zuhea = AnimatorInflater
70 | .loadAnimator(XMLAnimatorActivity.this,
71 | R.animator.zuhe);
72 | zuhea.setTarget(zuhe);
73 | zuhea.start();
74 | break;
75 | case R.id.zuhe2:
76 | ValueAnimator valuea = (ValueAnimator)AnimatorInflater
77 | .loadAnimator(XMLAnimatorActivity.this,
78 | R.animator.value);
79 | valuea.setTarget(value);
80 | valuea.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
81 | @Override
82 | public void onAnimationUpdate(ValueAnimator animation) {
83 | value.setText(""+animation.getAnimatedValue());
84 | }
85 | });
86 | valuea.start();
87 | break;
88 | }
89 | }
90 | @Override
91 | protected void onDestroy() {
92 | super.onDestroy();
93 | ButterKnife.unbind(this);
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/app/src/main/java/com/husy/androidallanimation/CodeObjectAnimActivity.java:
--------------------------------------------------------------------------------
1 | package com.husy.androidallanimation;
2 |
3 | import android.animation.Animator;
4 | import android.animation.ObjectAnimator;
5 | import android.animation.PropertyValuesHolder;
6 | import android.animation.ValueAnimator;
7 | import android.os.Bundle;
8 | import android.support.v7.app.AppCompatActivity;
9 | import android.view.View;
10 | import android.widget.TextView;
11 | import android.widget.Toast;
12 |
13 | import butterknife.Bind;
14 | import butterknife.ButterKnife;
15 | import butterknife.OnClick;
16 |
17 | public class CodeObjectAnimActivity extends AppCompatActivity {
18 |
19 | @Bind(R.id.traslate)
20 | TextView traslate;
21 | @Bind(R.id.rotate)
22 | TextView rotate;
23 | @Bind(R.id.alpha)
24 | TextView alpha;
25 | @Bind(R.id.zuhe1)
26 | TextView zuhe1;
27 | @Bind(R.id.zuhe2)
28 | TextView value;
29 | @Bind(R.id.scale)
30 | TextView scale;
31 |
32 | @Override
33 | protected void onCreate(Bundle savedInstanceState) {
34 | super.onCreate(savedInstanceState);
35 | setContentView(R.layout.activity_object_anim);
36 | ButterKnife.bind(this);
37 |
38 | }
39 |
40 | @OnClick({R.id.traslate, R.id.alpha, R.id.rotate,R.id.scale, R.id.zuhe1, R.id.zuhe2})
41 | public void onclick(View v) {
42 | switch (v.getId()) {
43 | case R.id.traslate:
44 | ObjectAnimator translateA =
45 | ObjectAnimator.ofFloat(traslate, "translationX", 300, -200);
46 | translateA.setDuration(2000);
47 | translateA.setRepeatCount(1);
48 | translateA.addListener(new Animator.AnimatorListener() {
49 | @Override
50 | public void onAnimationStart(Animator animation) {
51 | Toast.makeText(CodeObjectAnimActivity.this, "开始啦", Toast.LENGTH_SHORT).show();
52 | }
53 |
54 | @Override
55 | public void onAnimationEnd(Animator animation) {
56 | Toast.makeText(CodeObjectAnimActivity.this, "结束啦", Toast.LENGTH_SHORT).show();
57 | }
58 |
59 | @Override
60 | public void onAnimationCancel(Animator animation) {
61 |
62 | }
63 |
64 | @Override
65 | public void onAnimationRepeat(Animator animation) {
66 |
67 | }
68 | });
69 | translateA.start();
70 | break;
71 | case R.id.alpha:
72 | ObjectAnimator alphaA =
73 | ObjectAnimator.ofFloat(alpha, "alpha", 0.2f, 1);
74 | alphaA.setDuration(3000);
75 | alphaA.start();
76 | break;
77 | case R.id.rotate:
78 | ObjectAnimator rotateA =
79 | ObjectAnimator.ofFloat(rotate, "rotation", 20, 180);
80 | rotateA.setDuration(3000);
81 | rotateA.start();
82 | break;
83 | case R.id.scale:
84 | ObjectAnimator scaleA =
85 | ObjectAnimator.ofFloat(scale,"scaleX",0.2f,1);
86 | scaleA.start();
87 | break;
88 | case R.id.zuhe1:
89 | PropertyValuesHolder tx =
90 | PropertyValuesHolder.ofFloat("translationX", 300, -200);
91 | PropertyValuesHolder ty =
92 | PropertyValuesHolder.ofFloat("translationY", 50, -10);
93 | PropertyValuesHolder sx =
94 | PropertyValuesHolder.ofFloat("scaleX", 0.1f, 1);
95 | ObjectAnimator.ofPropertyValuesHolder(zuhe1, tx, ty, sx)
96 | .setDuration(3000).start();
97 |
98 | break;
99 | case R.id.zuhe2:
100 | final ValueAnimator valueAnimator = ValueAnimator
101 | .ofInt(20, 100);
102 | valueAnimator.setDuration(5000);
103 | valueAnimator.setTarget(value);
104 | valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
105 | @Override
106 | public void onAnimationUpdate(ValueAnimator animation) {
107 | value.setText(""+(int)animation.getAnimatedValue());
108 | }
109 | });
110 | valueAnimator.start();
111 | break;
112 | }
113 | }
114 |
115 | @Override
116 | protected void onDestroy() {
117 | super.onDestroy();
118 | ButterKnife.unbind(this);
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # For Cygwin, ensure paths are in UNIX format before anything is touched.
46 | if $cygwin ; then
47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
48 | fi
49 |
50 | # Attempt to set APP_HOME
51 | # Resolve links: $0 may be a link
52 | PRG="$0"
53 | # Need this for relative symlinks.
54 | while [ -h "$PRG" ] ; do
55 | ls=`ls -ld "$PRG"`
56 | link=`expr "$ls" : '.*-> \(.*\)$'`
57 | if expr "$link" : '/.*' > /dev/null; then
58 | PRG="$link"
59 | else
60 | PRG=`dirname "$PRG"`"/$link"
61 | fi
62 | done
63 | SAVED="`pwd`"
64 | cd "`dirname \"$PRG\"`/" >&-
65 | APP_HOME="`pwd -P`"
66 | cd "$SAVED" >&-
67 |
68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
69 |
70 | # Determine the Java command to use to start the JVM.
71 | if [ -n "$JAVA_HOME" ] ; then
72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
73 | # IBM's JDK on AIX uses strange locations for the executables
74 | JAVACMD="$JAVA_HOME/jre/sh/java"
75 | else
76 | JAVACMD="$JAVA_HOME/bin/java"
77 | fi
78 | if [ ! -x "$JAVACMD" ] ; then
79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
80 |
81 | Please set the JAVA_HOME variable in your environment to match the
82 | location of your Java installation."
83 | fi
84 | else
85 | JAVACMD="java"
86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
87 |
88 | Please set the JAVA_HOME variable in your environment to match the
89 | location of your Java installation."
90 | fi
91 |
92 | # Increase the maximum file descriptors if we can.
93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
94 | MAX_FD_LIMIT=`ulimit -H -n`
95 | if [ $? -eq 0 ] ; then
96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
97 | MAX_FD="$MAX_FD_LIMIT"
98 | fi
99 | ulimit -n $MAX_FD
100 | if [ $? -ne 0 ] ; then
101 | warn "Could not set maximum file descriptor limit: $MAX_FD"
102 | fi
103 | else
104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
105 | fi
106 | fi
107 |
108 | # For Darwin, add options to specify how the application appears in the dock
109 | if $darwin; then
110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
111 | fi
112 |
113 | # For Cygwin, switch paths to Windows format before running java
114 | if $cygwin ; then
115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
158 | function splitJvmOpts() {
159 | JVM_OPTS=("$@")
160 | }
161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
163 |
164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165 |
--------------------------------------------------------------------------------
/app/src/main/java/com/husy/androidallanimation/CodeViewAnimation.java:
--------------------------------------------------------------------------------
1 | package com.husy.androidallanimation;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.util.Log;
6 | import android.view.View;
7 | import android.view.animation.AccelerateDecelerateInterpolator;
8 | import android.view.animation.AccelerateInterpolator;
9 | import android.view.animation.AlphaAnimation;
10 | import android.view.animation.Animation;
11 | import android.view.animation.AnimationSet;
12 | import android.view.animation.RotateAnimation;
13 | import android.view.animation.ScaleAnimation;
14 | import android.view.animation.TranslateAnimation;
15 | import android.widget.TextView;
16 | import android.widget.Toast;
17 |
18 | import butterknife.Bind;
19 | import butterknife.ButterKnife;
20 | import butterknife.OnClick;
21 |
22 | public class CodeViewAnimation extends AppCompatActivity implements View.OnClickListener {
23 |
24 | @Bind(R.id.alpha)
25 | TextView alpha;
26 | @Bind(R.id.scale)
27 | TextView scale;
28 | @Bind(R.id.traslate)
29 | TextView traslate;
30 | @Bind(R.id.rotate)
31 | TextView rotate;
32 | @Bind(R.id.all_ani)
33 | TextView allAni;
34 |
35 | @Override
36 | protected void onCreate(Bundle savedInstanceState) {
37 | super.onCreate(savedInstanceState);
38 | setContentView(R.layout.activity_code);
39 | ButterKnife.bind(this);
40 |
41 | }
42 |
43 | @OnClick({R.id.alpha, R.id.scale, R.id.traslate, R.id.rotate,R.id.all_ani})
44 | public void onClick(View v) {
45 | Log.i("dd", "onclick");
46 | switch (v.getId()) {
47 | case R.id.alpha:
48 | AlphaAnimation alphaAnimation = new AlphaAnimation(0.2f, 1);
49 | alphaAnimation.setDuration(3000);
50 | //加减速差值器
51 | alphaAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
52 | alpha.startAnimation(alphaAnimation);
53 | break;
54 | case R.id.rotate:
55 | //不指定中心,则默认组件原点为中心
56 | // RotateAnimation rotateAnimation = new RotateAnimation(0,360);
57 | //指定中心。
58 | // RotateAnimation rotateAnimation = new RotateAnimation(0,360,rotate.getWidth()/2,rotate.getHeight()/2);
59 | //指定旋转中心的类型
60 | RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
61 | rotateAnimation.setDuration(2000);
62 | //加速差值器
63 | rotateAnimation.setInterpolator(new AccelerateInterpolator());
64 | rotate.startAnimation(rotateAnimation);
65 | break;
66 | case R.id.traslate:
67 | TranslateAnimation translateAnimation = new TranslateAnimation(30, 90, 30, 90);
68 | translateAnimation.setDuration(2000);
69 | traslate.startAnimation(translateAnimation);
70 | break;
71 | case R.id.scale:
72 | //默认组件原点为中心
73 | // ScaleAnimation scaleAnimation = new ScaleAnimation(0.2f,1,0.2f,1);
74 |
75 | //指定为组件的中心
76 | ScaleAnimation scaleAnimation = new ScaleAnimation(0.2f, 1, 0.2f, 1, scale.getWidth() / 2, scale.getHeight() / 2);
77 | scaleAnimation.setDuration(2000);
78 | scaleAnimation.setAnimationListener(new Animation.AnimationListener() {
79 | @Override
80 | public void onAnimationStart(Animation animation) {
81 | Toast.makeText(CodeViewAnimation.this,"开始啦。",Toast.LENGTH_SHORT).show();
82 | }
83 |
84 | @Override
85 | public void onAnimationEnd(Animation animation) {
86 | Toast.makeText(CodeViewAnimation.this,"结束啦。",Toast.LENGTH_SHORT).show();
87 | }
88 |
89 | @Override
90 | public void onAnimationRepeat(Animation animation) {
91 |
92 | }
93 | });
94 | scale.startAnimation(scaleAnimation);
95 | break;
96 | case R.id.all_ani:
97 | Log.i("dd", "allani");
98 | AlphaAnimation alphaAnimation1 = new AlphaAnimation(0.3f,1f);
99 | alphaAnimation1.setDuration(2000);
100 | ScaleAnimation scaleAnimation1 = new ScaleAnimation(0,1,0,1,allAni.getWidth()/2,allAni.getHeight()/2);
101 | scaleAnimation1.setDuration(2000);
102 | RotateAnimation rotateAnimation1 = new RotateAnimation(0,360,allAni.getWidth()/2,allAni.getHeight()/2);
103 | rotateAnimation1.setDuration(2000);
104 | AnimationSet set = new AnimationSet(true);
105 | set.addAnimation(alphaAnimation1);
106 | set.addAnimation(scaleAnimation1);
107 | set.addAnimation(rotateAnimation1);
108 | set.setFillEnabled(true);
109 | set.setDuration(2000);
110 | set.setRepeatCount(0);
111 | allAni.startAnimation(set);
112 | set.setAnimationListener(new Animation.AnimationListener() {
113 | @Override
114 | public void onAnimationStart(Animation animation) {
115 | Toast.makeText(CodeViewAnimation.this,"开始啦。",Toast.LENGTH_SHORT).show();
116 | }
117 |
118 | @Override
119 | public void onAnimationEnd(Animation animation) {
120 | Toast.makeText(CodeViewAnimation.this,"结束啦。.。。",Toast.LENGTH_SHORT).show();
121 | }
122 |
123 | @Override
124 | public void onAnimationRepeat(Animation animation) {
125 |
126 | }
127 | });
128 | break;
129 | }
130 | }
131 |
132 | @Override
133 | protected void onDestroy() {
134 | super.onDestroy();
135 | ButterKnife.unbind(this);
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/app/app.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | generateDebugAndroidTestSources
19 | generateDebugSources
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 | #ffffffff
7 |
8 |
9 |
10 |
11 | #fffff6
12 |
13 |
14 |
15 |
16 | #ffffe0
17 |
18 |
19 |
20 |
21 | #ffff00
22 |
23 |
24 |
25 |
26 | #fffafa
27 |
28 |
29 |
30 |
31 | #fffaf0
32 |
33 |
34 |
35 |
36 | #fffacd
37 |
38 |
39 |
40 |
41 | #fff8dc
42 |
43 |
44 |
45 |
46 | #fff5ee
47 |
48 |
49 |
50 |
51 | #fff0f5
52 |
53 |
54 |
55 |
56 | #ffefd5
57 |
58 |
59 |
60 |
61 | #ffebcd
62 |
63 |
64 |
65 |
66 | #ffe4e1
67 |
68 |
69 |
70 |
71 | #ffe4c4
72 |
73 |
74 |
75 |
76 | #ffe4b5
77 |
78 |
79 |
80 |
81 | #ffdead
82 |
83 |
84 |
85 |
86 | #ffdab9
87 |
88 |
89 |
90 |
91 | #ffd700
92 |
93 |
94 |
95 |
96 | #ffc0cb
97 |
98 |
99 |
100 |
101 | #ffb6c1
102 |
103 |
104 |
105 |
106 | #ffa500
107 |
108 |
109 |
110 |
111 | #ffa07a
112 |
113 |
114 |
115 |
116 | #ff8c00
117 |
118 |
119 |
120 |
121 | #ff7f50
122 |
123 |
124 |
125 |
126 | #ff69b4
127 |
128 |
129 |
130 |
131 | #ff6347
132 |
133 |
134 |
135 |
136 | #ff4500
137 |
138 |
139 |
140 |
141 | #ff1493
142 |
143 |
144 |
145 |
146 | #ff00ff
147 |
148 |
149 |
150 |
151 | #ff00ff
152 |
153 |
154 |
155 |
156 | #ff0000
157 |
158 |
159 |
160 |
161 | #fdf5e6
162 |
163 |
164 |
165 |
166 | #fafad2
167 |
168 |
169 |
170 |
171 | #faf0e6
172 |
173 |
174 |
175 |
176 | #faebd7
177 |
178 |
179 |
180 |
181 | #fa8072
182 |
183 |
184 |
185 |
186 | #f8f8ff
187 |
188 |
189 |
190 |
191 | #f5fffa
192 |
193 |
194 |
195 |
196 | #f5f5f5
197 |
198 |
199 |
200 |
201 | #f5f5dc
202 |
203 |
204 |
205 |
206 | #f5deb3
207 |
208 |
209 |
210 |
211 | #f4a460
212 |
213 |
214 |
215 |
216 | #f0ffff
217 |
218 |
219 |
220 |
221 | #f0fff0
222 |
223 |
224 |
225 |
226 | #f0f8ff
227 |
228 |
229 |
230 |
231 | #f0e68c
232 |
233 |
234 |
235 |
236 | #f08080
237 |
238 |
239 |
240 |
241 | #eee8aa
242 |
243 |
244 |
245 |
246 | #ee82ee
247 |
248 |
249 |
250 |
251 | #e9967a
252 |
253 |
254 |
255 |
256 | #e6e6fa
257 |
258 |
259 |
260 |
261 | #e0ffff
262 |
263 |
264 |
265 |
266 | #deb887
267 |
268 |
269 |
270 |
271 | #dda0dd
272 |
273 |
274 |
275 |
276 | #dcdcdc
277 |
278 |
279 |
280 |
281 | #dc143c
282 |
283 |
284 |
285 |
286 | #db7093
287 |
288 |
289 |
290 |
291 | #daa520
292 |
293 |
294 |
295 |
296 | #da70d6
297 |
298 |
299 |
300 |
301 | #d8bfd8
302 |
303 |
304 |
305 |
306 | #d3d3d3
307 |
308 |
309 |
310 |
311 | #d3d3d3
312 |
313 |
314 |
315 |
316 | #d2b48c
317 |
318 |
319 |
320 |
321 | #d2691e
322 |
323 |
324 |
325 |
326 | #cd853f
327 |
328 |
329 |
330 |
331 | #cd5c5c
332 |
333 |
334 |
335 |
336 | #c71585
337 |
338 |
339 |
340 |
341 | #c0c0c0
342 |
343 |
344 |
345 |
346 | #bdb76b
347 |
348 |
349 |
350 |
351 | #bc8f8f
352 |
353 |
354 |
355 |
356 | #ba55d3
357 |
358 |
359 |
360 |
361 | #b8860b
362 |
363 |
364 |
365 |
366 | #b22222
367 |
368 |
369 |
370 |
371 | #b0e0e6
372 |
373 |
374 |
375 |
376 | #b0c4de
377 |
378 |
379 |
380 |
381 | #afeeee
382 |
383 |
384 |
385 |
386 | #adff2f
387 |
388 |
389 |
390 |
391 | #add8e6
392 |
393 |
394 |
395 |
396 | #a9a9a9
397 |
398 |
399 |
400 |
401 | #a9a9a9
402 |
403 |
404 |
405 |
406 | #a52a2a
407 |
408 |
409 |
410 |
411 | #a0522d
412 |
413 |
414 |
415 |
416 | #9932cc
417 |
418 |
419 |
420 |
421 | #98fb98
422 |
423 |
424 |
425 |
426 | #9400d3
427 |
428 |
429 |
430 |
431 | #9370db
432 |
433 |
434 |
435 |
436 | #90ee90
437 |
438 |
439 |
440 |
441 | #8fbc8f
442 |
443 |
444 |
445 |
446 | #8b4513
447 |
448 |
449 |
450 |
451 | #8b008b
452 |
453 |
454 |
455 |
456 | #8b0000
457 |
458 |
459 |
460 |
461 | #8a2be2
462 |
463 |
464 |
465 |
466 | #87cefa
467 |
468 |
469 |
470 |
471 | #87ceeb
472 |
473 |
474 |
475 |
476 | #EBEBEB
477 |
478 |
479 |
480 |
481 | #ff808080
482 |
483 |
484 |
485 |
486 | #808000
487 |
488 |
489 |
490 |
491 | #800080
492 |
493 |
494 |
495 |
496 | #800000
497 |
498 |
499 |
500 |
501 | #7fffd4
502 |
503 |
504 |
505 |
506 | #7fff00
507 |
508 |
509 |
510 |
511 | #7cfc00
512 |
513 |
514 |
515 |
516 | #7b68ee
517 |
518 |
519 |
520 |
521 | #778899
522 |
523 |
524 |
525 |
526 | #778899
527 |
528 |
529 |
530 |
531 | #708090
532 |
533 |
534 |
535 |
536 | #708090
537 |
538 |
539 |
540 |
541 | #6b8e23
542 |
543 |
544 |
545 |
546 | #6a5acd
547 |
548 |
549 |
550 |
551 | #696969
552 |
553 |
554 |
555 |
556 | #696969
557 |
558 |
559 |
560 |
561 | #66cdaa
562 |
563 |
564 |
565 |
566 | #6495ed
567 |
568 |
569 |
570 |
571 | #5f9ea0
572 |
573 |
574 |
575 |
576 | #556b2f
577 |
578 |
579 |
580 |
581 | #4b0082
582 |
583 |
584 |
585 |
586 | #48d1cc
587 |
588 |
589 |
590 |
591 | #483d8b
592 |
593 |
594 |
595 |
596 | #4682b4
597 |
598 |
599 |
600 |
601 | #4169e1
602 |
603 |
604 |
605 |
606 | #40e0d0
607 |
608 |
609 |
610 |
611 | #3cb371
612 |
613 |
614 |
615 |
616 | #32cd32
617 |
618 |
619 |
620 |
621 | #CCCCCC
622 |
623 |
624 |
625 |
626 | #2f4f4f
627 |
628 |
629 |
630 |
631 | #2e8b57
632 |
633 |
634 |
635 |
636 | #228b22
637 |
638 |
639 |
640 |
641 | #20b2aa
642 |
643 |
644 |
645 |
646 | #1e90ff
647 |
648 |
649 |
650 |
651 | #191970
652 |
653 |
654 |
655 |
656 | #00ffff
657 |
658 |
659 |
660 |
661 | #00ffff
662 |
663 |
664 |
665 |
666 | #00ff7f
667 |
668 |
669 |
670 |
671 | #00ff00
672 |
673 |
674 |
675 |
676 | #00fa9a
677 |
678 |
679 |
680 |
681 | #00ced1
682 |
683 |
684 |
685 |
686 | #00bfff
687 |
688 |
689 |
690 |
691 | #008b8b
692 |
693 |
694 |
695 |
696 | #008080
697 |
698 |
699 |
700 |
701 | #008000
702 |
703 |
704 |
705 |
706 | #006400
707 |
708 |
709 |
710 |
711 | #0000ff
712 |
713 |
714 |
715 |
716 | #0000cd
717 |
718 |
719 |
720 |
721 | #00008b
722 |
723 |
724 |
725 |
726 | #000080
727 |
728 |
729 |
730 |
731 | #000000
732 |
733 |
734 |
735 |
736 | #ff3e3e3e
737 |
738 | #00b8ee
739 |
740 |
741 |
742 |
743 | #ff495a
744 |
745 |
746 |
747 |
748 | #f56252
749 |
750 |
751 |
752 |
753 | #fa7868
754 |
755 |
756 |
757 |
758 | #8862b6
759 |
760 |
761 |
762 |
763 | #9d79c1
764 |
765 |
766 |
767 |
768 | #d18a26
769 |
770 |
771 |
772 |
773 | #f8aa3a
774 |
775 |
776 |
777 |
778 | #5eb59d
779 |
780 |
781 |
782 |
783 | #85d0bc
784 |
785 |
786 |
787 |
788 | #dddddd
789 |
790 |
791 |
792 |
793 | #b5b4b4
794 |
795 |
796 |
797 |
798 | #ff00ddff
799 |
800 | #ff99cc00
801 |
802 | #ffffbb33
803 |
804 | #ffff4444
805 |
806 |
807 |
808 |
809 | #4ebcd3
810 |
811 | #00acff
812 |
813 | #46678d
814 |
815 | #d33f3f
816 |
817 | #DA5A4D
818 |
819 | #ffffff
820 |
821 | #00acff
822 |
823 | #2d2f31
824 |
825 | #161718
826 |
827 | #2ea7e0
828 |
829 | #fcfcfc
830 |
831 | #B6DA53
832 |
833 | #d4d4d4
834 |
835 | #FF09D7E5
836 |
837 | #F6EBE6
838 |
839 | #2D2F31
840 |
841 | #ffffff
842 |
843 | #f7f8f8
844 |
845 | #b5b5b6
846 |
847 | #68C270
848 |
849 | #6FCD78
850 |
851 | #c0c0c0
852 |
853 | #b5b5b6
854 |
855 | #666667
856 |
857 | #1e90ff
858 |
859 | #0066FF
860 |
861 |
862 |
863 |
864 | #b5b5b6
865 |
866 | #666667
867 |
868 | #1Affffff
869 |
870 | #80000000
871 |
872 | #bababa
873 |
874 | #FF000000
875 |
876 | #4ebcd3
877 |
878 | #2dafa3
879 |
880 | #ff1FBAF3
881 |
882 |
--------------------------------------------------------------------------------