Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/UFreedom/FloatingText
[DEPRECATED] FloatingText is a text widget that can floating above view with animation
https://github.com/UFreedom/FloatingText
Last synced: about 1 month ago
JSON representation
[DEPRECATED] FloatingText is a text widget that can floating above view with animation
- Host: GitHub
- URL: https://github.com/UFreedom/FloatingText
- Owner: UFreedom
- Created: 2016-03-23T07:28:34.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-11-07T03:35:22.000Z (about 8 years ago)
- Last Synced: 2024-08-02T01:22:51.235Z (4 months ago)
- Language: Java
- Homepage:
- Size: 3.87 MB
- Stars: 701
- Watchers: 22
- Forks: 109
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-github-android-ui - FloatingText - 执行漂浮效果动画的控件 (TextView)
README
# DEPRECATED
I have developed the [FloatingView](https://github.com/UFreedom/FloatingView) ,FloatingView can make the target view floating above the anchor view with cool animation.FloatingText do the same thing, FloatingView can do, and FloatingView more convenient and powerful.so you can use FloatingView instead of FloatingText.
# FloatingText
[![Build Status](https://travis-ci.org/UFreedom/FloatingText.svg?branch=master)](https://travis-ci.org/UFreedom/FloatingText) [ [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-FloatingText-green.svg?style=true)](https://android-arsenal.com/details/1/3360) ![Download](https://api.bintray.com/packages/ufreedom/maven/FloatingTextLibrary/images/download.svg) ](https://bintray.com/ufreedom/maven/FloatingTextLibrary/_latestVersion)
FloatingText is a text widget that can floating above view with animation .
Now we have 'Scale Floating','Scale Floating','Curve Floating',and you can also design custom a animation.
[中文说明](https://github.com/UFreedom/FloatingText/blob/master/README_CN.md)
# Compatibility ![Requirements](https://img.shields.io/badge/Requirements-Android%203.0%2B-green.svg)
* Library - Android Honeycomb 3.0+
* Sample - Android Honeycomb 3.0+## Usage:
1.Add Snapshot repository and add to dependencies:
```groovy
dependencies {compile 'com.ufreedom.uikit:FloatingTextLibrary:0.2.0'
}```
2. Use FloatingText.FloatingTextBuilder to create a FloatingText:
```java
FloatingText floatingText = new FloatingText.FloatingTextBuilder(Activity)
.textColor(Color.RED) // floating text color
.textSize(100) // floating text size
.textContent("+1000") // floating text content
.offsetX(100) // the x offset relate to the attached view
.offsetY(100) // the y offset relate to the attached view
.floatingAnimatorEffect(FloatingAnimator) // floating animation
.floatingPathEffect(FloatingPathEffect) // floating path
.build();floatingText.attach2Window(); // let FloatingText attached to the Window
```3.Start floating
```java
floatingText.startFloating(View); // FloatingText do floating animation relate to the view
```## Customisation:
#### 1.Coordinates
#### 2.Floating Animation
Implements `FloatingAnimator` interface and do animation in the `applyFloatingAnimation` method:
```java
public interface FloatingAnimator {
public void applyFloatingAnimation(FloatingTextView view);
}
```**[ReboundFloatingAnimator](https://github.com/UFreedom/FloatingText/blob/master/FloatingTextLibrary%2Fsrc%2Fmain%2Fjava%2Fcom%2Fufreedom%2Feffect%2FReboundFloatingAnimator.java)**
`ReboundFloatingAnimator` implements FloatingAnimator and support rebound animation.The rebound animation is Facebook's library [Rebound](https://github.com/facebook/rebound)。
There are three help methods;
- `createSpringByBouncinessAndSpeed` : config rebound width bounciness and speed
- `createSpringByTensionAndFriction` : config rebound width tension and friction
- `transition(float progress, float startValue, float endValue)`: use the method to get animated value .progress : the progress of current animation
startValue : the start value of your animation
endValue : the end value of your animationIn this library : [ScaleFloatingAnimator](https://github.com/UFreedom/FloatingText/blob/master/FloatingTextLibrary%2Fsrc%2Fmain%2Fjava%2Fcom%2Fufreedom%2Feffect%2FScaleFloatingAnimator.java) ,[TranslateFloatingAnimator](https://github.com/UFreedom/FloatingText/blob/master/FloatingTextLibrary%2Fsrc%2Fmain%2Fjava%2Fcom%2Fufreedom%2Feffect%2FTranslateFloatingAnimator.java),[BaseFloatingPathAnimator](https://github.com/UFreedom/FloatingText/blob/master/FloatingTextLibrary%2Fsrc%2Fmain%2Fjava%2Fcom%2Fufreedom%2FBaseFloatingPathAnimator.java) all implements `ReboundFloatingAnimator` interface。
For example : `ScaleFloatingAnimator`
```java
public class ScaleFloatingAnimator extends ReboundFloatingAnimator {public long duration;
public ScaleFloatingAnimator() {
duration = 1000;
}public ScaleFloatingAnimator(long duration) {
this.duration = duration;
}@Override
public void applyFloatingAnimation(final FloatingTextView view) {
Spring scaleAnim = createSpringByBouncinessAndSpeed(10, 15)
.addListener(new SimpleSpringListener() {
@Override
public void onSpringUpdate(Spring spring) {
float transition = transition((float) spring.getCurrentValue(), 0.0f, 1.0f);
view.setScaleX(transition);
view.setScaleY(transition);
}
});
ValueAnimator alphaAnimator = ObjectAnimator.ofFloat(1.0f, 0.0f);
alphaAnimator.setDuration(duration);
alphaAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setAlpha((Float) valueAnimator.getAnimatedValue());
}
});
scaleAnim.setEndValue(1f);
alphaAnimator.start();
}}
```#### 3.Floating Path
Implements `FloatingPathEffect` and `FloatingPathAnimator` interface can custom you own floating path animation.
- `FloatingPath` is the floating path
```java
public interface FloatingPathEffect {abstract FloatingPath getFloatingPath(FloatingTextView floatingTextView);
}
```create a path and then use `FloatingPath.create(Path path, boolean forceClose)` to create FloatingPath.
if the forceClose's value is true,the path will be forced to close .For example:CurveFloatingPathEffect :
```java
public class CurveFloatingPathEffect implements FloatingPathEffect {@Override
public FloatingPath getFloatingPath(FloatingTextView floatingTextView) {
Path path = new Path();
path.moveTo(0, 0);
path.quadTo(-100, -200, 0, -300);
path.quadTo(200, -400, 0, -500);
return FloatingPath.create(path, false);
}
}
```#### 4.Floating Path Animation
After use `FloatingPathEffect` to define the path,Then you should implements the `BaseFloatingPathAnimator` interface and do path animation.
For example: `CurvePathFloatingAnimator` :
```java
public class CurvePathFloatingAnimator extends BaseFloatingPathAnimator {@Override
public void applyFloatingPathAnimation(final FloatingTextView view, float start, float end) {ValueAnimator translateAnimator = ObjectAnimator.ofFloat(start, end);
translateAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) valueAnimator.getAnimatedValue();
float pos[] = getFloatingPosition(value);
float x = pos[0];
float y = pos[1];
view.setTranslationX(x);
view.setTranslationY(y);}
});translateAnimator.setDuration(3000);
translateAnimator.setStartDelay(50);
translateAnimator.start();}
}
```- `applyFloatingPathAnimation(final FloatingTextView view, float start, float end)` :
The param 'start' is the start value of the path,and the param 'end' is the end value of the path.
- `getFloatingPosition(float progress)` :
get the current animated path value ,[0] is x,[1] is y.
# Changelog
### Version: 0.2.0
* Fix the position bug - Thanks [MarsVard](https://github.com/MarsVard) contribution
### Version: 0.1.0
* Initial Build
License ![License](https://img.shields.io/hexpm/l/plug.svg)
--------Copyright 2015 UFreedom
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.