diff --git a/README.md b/README.md index ca0df7c..d137689 100644 --- a/README.md +++ b/README.md @@ -6,22 +6,21 @@ A little animation framework which could help you to show message in a nice look ### Usage -1. Create [`TextSurface`](library/src/main/java/su/levenetc/android/textsurface/TextSurface.java) instance or add it in your layout. -2. Create [`Text`](library/src/main/java/su/levenetc/android/textsurface/Text.java) instancies with [`TextBuilder`](library/src/main/java/su/levenetc/android/textsurface/TextBuilder.java) defining appearance of text and position: +1. Create [`TextSurface`](library/src/main/java/su/levenetc/android/textsurface/TextSurface.kt) instance or add it in your layout. +2. Create [`Text`](library/src/main/java/su/levenetc/android/textsurface/Text.kt) instancies with [`Text.Builder`](library/src/main/java/su/levenetc/android/textsurface/Text.kt) defining appearance of text and position: - ```Java - Text textDaai = TextBuilder - .create("Daai") + ```Kotlin + Text textDaai = Text.Builder("Daai") .setSize(64) .setAlpha(0) .setColor(Color.WHITE) .setPosition(Align.SURFACE_CENTER).build(); ``` -3. Create animations and pass them to the [`TextSurface`](library/src/main/java/su/levenetc/android/textsurface/TextSurface.java) instance: - ```Java +3. Create animations and pass them to the [`TextSurface`](library/src/main/java/su/levenetc/android/textsurface/TextSurface.kt) instance: + ```Kotlin textSurface.play( - new Sequential( + Sequential( Slide.showFrom(Side.TOP, textDaai, 500), Delay.duration(500), Alpha.hide(textDaai, 1500) @@ -29,23 +28,23 @@ A little animation framework which could help you to show message in a nice look ); ``` -See full sample [`here`](app/src/main/java/su/levenetc/android/textsurface/sample/checks/CookieThumperSample.java). +See full sample [`here`](app/src/main/java/su/levenetc/android/textsurface/sample/animations/complex.kt). ### Adjusting animations -- To play animations sequentially use [`Sequential.java`](library/src/main/java/su/levenetc/android/textsurface/animations/Sequential.java) -- To play animations simultaneously use [`Parallel.java`](library/src/main/java/su/levenetc/android/textsurface/animations/Parallel.java) +- To play animations sequentially use [`Sequential.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/sets/Sequential.kt) +- To play animations simultaneously use [`Parallel.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/sets/Parallel.kt) - Animations/effects could be combined like this: - ```Java - new Parallel(Alpha.show(textA, 500), ChangeColor.to(textA, 500, Color.RED)) + ```Kotlin + Parallel(Alpha.show(textA, 500), ChangeColor.to(textA, 500, Color.RED)) ``` i.e. alpha and color of text will be changed simultaneously in 500ms ### Adding your own animations/effects There're two basic classes which you could extend to add custom animation: -- [`AbstractSurfaceAnimation.java`](library/src/main/java/su/levenetc/android/textsurface/animations/AbstractSurfaceAnimation.java) to animate basic parameters like `alpha`, `translation`, `scale` and others. (See [`Alpha.java`](library/src/main/java/su/levenetc/android/textsurface/animations/Alpha.java) or [`ChangeColor.java`](library/src/main/java/su/levenetc/android/textsurface/animations/ChangeColor.java)) -- [`ITextEffect.java`](library/src/main/java/su/levenetc/android/textsurface/interfaces/ITextEffect.java) interface which could be used for more complex animations. (See [`Rotate3D.java`](library/src/main/java/su/levenetc/android/textsurface/animations/Rotate3D.java) or [`ShapeReveal.java`](library/src/main/java/su/levenetc/android/textsurface/animations/ShapeReveal.java)) +- [`AbstractSurfaceAnimation.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/AbstractSurfaceAnimation.kt) to animate basic parameters like `alpha`, `translation`, `scale` and others. (See [`Alpha.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/colors/Alpha.kt) or [`ChangeColor.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/colors/ChangeColor.kt)) +- [`TextEffect.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/effects/TextEffect.kt) interface which could be used for more complex animations. (See [`Rotate3D.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/effects/Rotate3D.kt) or [`ShapeReveal.kt`](library/src/main/java/su/levenetc/android/textsurface/animations/effects/reveal/ShapeRevealAnimation.kt)) ### Proguard configuration The framework is based on standard android animation classes which uses `reflection` extensively. To avoid obfuscation you need to exclude classes of the framework: @@ -61,7 +60,7 @@ repositories { //... dependencies { //... - compile 'com.github.elevenetc:textsurface:0.9.1' + compile 'com.github.elevenetc:textsurface:2.0.0' } ``` ### Licence diff --git a/app/build.gradle b/app/build.gradle index b6c7105..d9d50ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,9 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' repositories { maven { url "https://jitpack.io" } + mavenCentral() } android { @@ -28,4 +30,6 @@ dependencies { testImplementation 'junit:junit:4.13.1' implementation 'androidx.appcompat:appcompat:1.2.0' implementation project(':library') + implementation "androidx.core:core-ktx:+" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 14b1ce5..e5b8b49 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,10 +1,9 @@ - + + android:required="true" /> + android:name=".LauncherActivity" + android:label="@string/app_name"> - - + + + + diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/AnimationSamples.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/AnimationSamples.kt new file mode 100644 index 0000000..e6160ee --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/AnimationSamples.kt @@ -0,0 +1,36 @@ +package su.levenetc.android.textsurface.sample + +import android.os.Bundle +import android.view.View +import android.widget.CheckBox +import androidx.appcompat.app.AppCompatActivity +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.TextSurfaceDebug +import su.levenetc.android.textsurface.sample.animations.playCookieThumper + +/** + * Created by Eugene Levenetc. + */ +class AnimationSamples : AppCompatActivity() { + + private lateinit var textSurface: TextSurface + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.sample_activity) + textSurface = findViewById(R.id.text_surface) as TextSurface + textSurface.postDelayed({ show() }, 1000) + findViewById(R.id.btn_refresh).setOnClickListener { show() } + val checkDebug = findViewById(R.id.check_debug) as CheckBox + checkDebug.isChecked = TextSurfaceDebug.ENABLED + checkDebug.setOnCheckedChangeListener { _, isChecked -> + TextSurfaceDebug.ENABLED = isChecked + textSurface.invalidate() + } + } + + private fun show() { + textSurface.reset() + playCookieThumper(textSurface, assets) + } +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/LauncherActivity.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/LauncherActivity.kt new file mode 100644 index 0000000..e6a985f --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/LauncherActivity.kt @@ -0,0 +1,20 @@ +package su.levenetc.android.textsurface.sample + +import android.content.Intent +import android.os.Bundle +import android.view.View +import androidx.appcompat.app.AppCompatActivity + +class LauncherActivity : AppCompatActivity(R.layout.launcher_activity) { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + findViewById(R.id.btn_animations_samples).setOnClickListener { + startActivity(Intent(this, AnimationSamples::class.java)) + } + + findViewById(R.id.btn_scrollview).setOnClickListener { + startActivity(Intent(this, ScrollViewActivity::class.java)) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/SampleActivity.java b/app/src/main/java/su/levenetc/android/textsurface/sample/SampleActivity.java deleted file mode 100644 index cabbf24..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/SampleActivity.java +++ /dev/null @@ -1,52 +0,0 @@ -package su.levenetc.android.textsurface.sample; - -import android.os.Bundle; -import androidx.appcompat.app.AppCompatActivity; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; - -import su.levenetc.android.textsurface.Debug; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.sample.checks.CookieThumperSample; - -/** - * Created by Eugene Levenetc. - */ -public class SampleActivity extends AppCompatActivity { - - private TextSurface textSurface; - - @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sample_activity); - textSurface = (TextSurface) findViewById(R.id.text_surface); - - textSurface.postDelayed(new Runnable() { - @Override public void run() { - show(); - } - }, 1000); - - findViewById(R.id.btn_refresh).setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { - show(); - } - }); - - CheckBox checkDebug = (CheckBox) findViewById(R.id.check_debug); - checkDebug.setChecked(Debug.ENABLED); - checkDebug.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - Debug.ENABLED = isChecked; - textSurface.invalidate(); - } - }); - } - - private void show() { - textSurface.reset(); - CookieThumperSample.play(textSurface, getAssets()); - } - -} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/ScrollViewActivity.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/ScrollViewActivity.kt new file mode 100644 index 0000000..25a28e4 --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/ScrollViewActivity.kt @@ -0,0 +1,14 @@ +package su.levenetc.android.textsurface.sample + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.sample.animations.surfaceTransSample + +class ScrollViewActivity : AppCompatActivity(R.layout.scrollview_activity) { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val textSurface: TextSurface = findViewById(R.id.text_surface) + surfaceTransSample(textSurface) + } +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/3d.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/3d.kt new file mode 100644 index 0000000..830796b --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/3d.kt @@ -0,0 +1,30 @@ +package su.levenetc.android.textsurface.sample.animations + +import su.levenetc.android.textsurface.Text +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.animations.effects.Rotate3D +import su.levenetc.android.textsurface.animations.sets.Sequential +import su.levenetc.android.textsurface.constants.Align +import su.levenetc.android.textsurface.constants.Axis +import su.levenetc.android.textsurface.constants.Pivot + +fun rotation3DSample(textSurface: TextSurface) { + val textA = Text.Builder("How are you?").setPosition(Align.SURFACE_CENTER).build() + val textB = Text.Builder("I'm fine! And you?").setPosition(Align.SURFACE_CENTER, textA).build() + val textC = Text.Builder("Haaay!").setPosition(Align.SURFACE_CENTER, textB).build() + val duration = 2750 + textSurface.playSequential( + Sequential( + Rotate3D.showFromCenter(textA, duration.toLong(), Axis.X), + Rotate3D.hideFromCenter(textA, duration.toLong(), Axis.Y) + ), + Sequential( + Rotate3D.showFromSide(textB, duration.toLong(), Pivot.LEFT), + Rotate3D.hideFromSide(textB, duration.toLong(), Pivot.RIGHT) + ), + Sequential( + Rotate3D.showFromSide(textC, duration.toLong(), Pivot.TOP), + Rotate3D.hideFromSide(textC, duration.toLong(), Pivot.BOTTOM) + ) + ) +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/alignment.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/alignment.kt new file mode 100644 index 0000000..b137f49 --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/alignment.kt @@ -0,0 +1,61 @@ +package su.levenetc.android.textsurface.sample.animations + +import su.levenetc.android.textsurface.Text +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.animations.colors.Alpha +import su.levenetc.android.textsurface.constants.Align + +fun alignSample(textSurface: TextSurface) { + val textCenter = Text.Builder("Center") + .setPosition(Align.SURFACE_CENTER) + .setPadding(25f, 25f, 25f, 25f) + .build() + + // + val textLeft = Text.Builder("L") + .setPadding(20f, 20f, 20f, 20f) + .setPosition(Align.LEFT_OF or Align.CENTER_OF, textCenter) + .build() + val textRight = Text.Builder("R") + .setPadding(20f, 20f, 20f, 20f) + .setPosition(Align.RIGHT_OF or Align.CENTER_OF, textCenter) + .build() + val textTop = Text.Builder("T") + .setPosition(Align.TOP_OF or Align.CENTER_OF, textCenter) + .build() + val textBottom = Text.Builder("B") + .setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textCenter) + .build() + + // + val textBottomBottom = Text.Builder("BB") + .setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textBottom) + .build() + + // + val textLeftTop = Text.Builder("LT") + .setPosition(Align.LEFT_OF or Align.TOP_OF, textCenter) + .build() + val textRightTop = Text.Builder("RT") + .setPosition(Align.RIGHT_OF or Align.TOP_OF, textCenter) + .build() + val textLeftBottom = Text.Builder("LB") + .setPosition(Align.LEFT_OF or Align.BOTTOM_OF, textCenter) + .build() + val textRightBottom = Text.Builder("RB") + .setPosition(Align.BOTTOM_OF or Align.RIGHT_OF, textCenter) + .build() + val duration = 125 + textSurface.playSequential( + Alpha.show(textCenter, duration.toLong()), + Alpha.show(textRight, duration.toLong()), + Alpha.show(textTop, duration.toLong()), + Alpha.show(textLeft, duration.toLong()), + Alpha.show(textBottom, duration.toLong()), + Alpha.show(textLeftTop, duration.toLong()), + Alpha.show(textLeftBottom, duration.toLong()), + Alpha.show(textRightBottom, duration.toLong()), + Alpha.show(textRightTop, duration.toLong()), + Alpha.show(textBottomBottom, duration.toLong()) + ) +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/colors.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/colors.kt new file mode 100644 index 0000000..85c82e6 --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/colors.kt @@ -0,0 +1,2 @@ +package su.levenetc.android.textsurface.sample.animations + diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/complex.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/complex.kt new file mode 100644 index 0000000..1614002 --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/complex.kt @@ -0,0 +1,136 @@ +package su.levenetc.android.textsurface.sample.animations + +import android.content.res.AssetManager +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Typeface +import su.levenetc.android.textsurface.Text +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.animations.* +import su.levenetc.android.textsurface.constants.Align +import su.levenetc.android.textsurface.constants.Direction +import su.levenetc.android.textsurface.constants.Pivot +import su.levenetc.android.textsurface.constants.Side + +fun playCookieThumper(textSurface: TextSurface, assetManager: AssetManager) { + + val paint = Paint().apply { + isAntiAlias = true + typeface = Typeface.createFromAsset(assetManager, "fonts/Roboto-Black.ttf") + } + + val textDaai = Text.Builder("Daai") + .setPaint(paint) + .setSize(64f) + .setAlpha(0) + .setColor(Color.WHITE) + .setPosition(Align.SURFACE_CENTER).build() + val textBraAnies = Text.Builder("bra Anies") + .setPaint(paint) + .setSize(44f) + .setAlpha(0) + .setColor(Color.RED) + .setPosition(Align.BOTTOM_OF, textDaai).build() + val textFokkenGamBra = Text.Builder(" hy's n fokken gam bra.") + .setPaint(paint) + .setSize(44f) + .setAlpha(0) + .setColor(Color.RED) + .setPosition(Align.RIGHT_OF, textBraAnies).build() + val textHaai = Text.Builder("Haai!!") + .setPaint(paint) + .setSize(74f) + .setAlpha(0) + .setColor(Color.RED) + .setPosition(Align.BOTTOM_OF, textFokkenGamBra).build() + val textDaaiAnies = Text.Builder("Daai Anies") + .setPaint(paint) + .setSize(44f) + .setAlpha(0) + .setColor(Color.WHITE) + .setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textHaai).build() + val texThyLamInnie = Text.Builder(" hy lam innie mang ja.") + .setPaint(paint) + .setSize(44f) + .setAlpha(0) + .setColor(Color.WHITE) + .setPosition(Align.RIGHT_OF, textDaaiAnies).build() + val textThrowDamn = Text.Builder("Throw damn") + .setPaint(paint) + .setSize(44f) + .setAlpha(0) + .setColor(Color.RED) + .setPosition(Align.BOTTOM_OF or Align.CENTER_OF, texThyLamInnie).build() + val textDevilishGang = Text.Builder("devilish gang") + .setPaint(paint) + .setSize(44f) + .setAlpha(0) + .setColor(Color.RED) + .setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textThrowDamn).build() + val textSignsInTheAir = Text.Builder("signs in the air.") + .setPaint(paint) + .setSize(44f) + .setAlpha(0) + .setColor(Color.RED) + .setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textDevilishGang).build() + + val animation = sequential { + showSideCut(textDaai, 750, Side.LEFT) + parallel { + hideSideCut(textDaai, 600, Side.LEFT) + sequential { + delay(300) + showSideCut(textDaai, 600, Side.LEFT) + } + } + parallel { + showSideCut(textBraAnies, 1300, Side.LEFT) + transSurface(textBraAnies, 500, Pivot.CENTER) + } + delay(500) + parallel { + showSliding(textFokkenGamBra, 750, Side.LEFT) + transSurface(textFokkenGamBra, 750, Pivot.CENTER) + changeColor(textFokkenGamBra, 750, Color.WHITE) + } + delay(500) + parallel { + rotate3d(textHaai, 750, Pivot.TOP) + transSurfaceToCenterOf(textHaai, 500) + } + parallel { + showSliding(textDaaiAnies, 500, Pivot.TOP) + transSurfaceToCenterOf(textDaaiAnies, 500) + } + parallel { + showSliding(texThyLamInnie, 500, Side.LEFT) + transSurfaceToCenterOf(texThyLamInnie, 500) + } + delay(500) + parallel { + transSurface(textSignsInTheAir, 1500, Pivot.CENTER) + sequential { + showCircle(textThrowDamn, 500, Side.CENTER, Direction.OUT) + showCircle(textDevilishGang, 500, Side.CENTER, Direction.OUT) + showCircle(textSignsInTheAir, 500, Side.CENTER, Direction.OUT) + } + } + delay(200) + parallel { + removeSideCut(textThrowDamn, 1500, Side.LEFT) + sequential { + delay(250) + removeSideCut(textDevilishGang, 1500, Side.LEFT) + } + sequential { + delay(500) + removeSideCut(textSignsInTheAir, 1500, Side.LEFT) + } + hide(textHaai, 1500) + hide(texThyLamInnie, 1500) + hide(textDaaiAnies, 1500) + } + } + + textSurface.play(animation) +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/reveals.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/reveals.kt new file mode 100644 index 0000000..832b65d --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/reveals.kt @@ -0,0 +1,92 @@ +package su.levenetc.android.textsurface.sample.animations + +import su.levenetc.android.textsurface.Text +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.animations.camera.TransSurface +import su.levenetc.android.textsurface.animations.colors.Alpha +import su.levenetc.android.textsurface.animations.effects.Rotate3D +import su.levenetc.android.textsurface.animations.effects.Slide +import su.levenetc.android.textsurface.animations.effects.reveal.Circle +import su.levenetc.android.textsurface.animations.effects.reveal.ShapeReveal +import su.levenetc.android.textsurface.animations.effects.reveal.SideCut +import su.levenetc.android.textsurface.animations.generic.Delay +import su.levenetc.android.textsurface.animations.sets.Loop +import su.levenetc.android.textsurface.animations.sets.Parallel +import su.levenetc.android.textsurface.animations.sets.Sequential +import su.levenetc.android.textsurface.constants.* + +fun shapeRevealSample(textSurface: TextSurface) { + val textA = Text.Builder("Now why you loer en kyk gelyk?").setPosition(Align.SURFACE_CENTER).build() + val textB = Text.Builder("Is ek miskien van goud gemake?").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textA).build() + val textC = Text.Builder("You want to fight, you come tonight.").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textB).build() + val textD = Text.Builder("Ek moer jou sleg! So jy hardloop weg.").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textC).build() + val flash = 1500 + textSurface.playSequential( + Rotate3D.showFromCenter(textA, 500, Axis.X), + Parallel( + ShapeReveal.reveal(textA, flash.toLong(), SideCut.hideSideCut(Side.LEFT), false), + Sequential(Delay.delay((flash / 4).toLong()), ShapeReveal.reveal(textA, flash.toLong(), SideCut.showSideCut(Side.LEFT), false)) + ), + Parallel( + Rotate3D.showFromSide(textB, 500, Pivot.TOP), + TransSurface(500, textB, Pivot.CENTER) + ), + Delay.delay(500), + Parallel( + Slide.showFrom(Side.TOP, textC, 500), + TransSurface(1000, textC, Pivot.CENTER) + ), + Delay.delay(500), + Parallel( + ShapeReveal.reveal(textD, 500, Circle.show(Side.CENTER, Direction.OUT), false), + TransSurface(1500, textD, Pivot.CENTER) + ), + Delay.delay(500), + Parallel( + Parallel(Alpha.hide(textD, 700), ShapeReveal.reveal(textD, 1000, SideCut.hideSideCut(Side.LEFT), true)), + Sequential(Delay.delay(500), Parallel(Alpha.hide(textC, 700), ShapeReveal.reveal(textC, 1000, SideCut.hideSideCut(Side.LEFT), true))), + Sequential(Delay.delay(1000), Parallel(Alpha.hide(textB, 700), ShapeReveal.reveal(textB, 1000, SideCut.hideSideCut(Side.LEFT), true))), + Sequential(Delay.delay(1500), Parallel(Alpha.hide(textA, 700), ShapeReveal.reveal(textA, 1000, SideCut.hideSideCut(Side.LEFT), true))), + TransSurface(4000, textA, Pivot.CENTER) + ) + ) +} + +fun shapeRevealLoopSample(textSurface: TextSurface) { + val textA = Text.Builder("Now why you loer en kyk gelyk?").setPosition(Align.SURFACE_CENTER).build() + val textB = Text.Builder("Is ek miskien van goud gemake?").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textA).build() + val textC = Text.Builder("You want to fight, you come tonight.").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textB).build() + val textD = Text.Builder("Ek moer jou sleg! So jy hardloop weg.").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textC).build() + val flash = 1500 + textSurface.play( + Loop( + Rotate3D.showFromCenter(textA, 500, Axis.X), + Parallel( + ShapeReveal.reveal(textA, flash.toLong(), SideCut.hideSideCut(Side.LEFT), false), + Sequential(Delay.delay((flash / 4).toLong()), ShapeReveal.reveal(textA, flash.toLong(), SideCut.showSideCut(Side.LEFT), false)) + ), + Parallel( + Rotate3D.showFromSide(textB, 500, Pivot.TOP), + TransSurface(500, textB, Pivot.CENTER) + ), + Delay.delay(500), + Parallel( + Slide.showFrom(Side.TOP, textC, 500), + TransSurface(1000, textC, Pivot.CENTER) + ), + Delay.delay(500), + Parallel( + ShapeReveal.reveal(textD, 500, Circle.show(Side.CENTER, Direction.OUT), false), + TransSurface(1500, textD, Pivot.CENTER) + ), + Delay.delay(500), + Parallel( + Parallel(Alpha.hide(textD, 700), ShapeReveal.reveal(textD, 1000, SideCut.hideSideCut(Side.LEFT), true)), + Sequential(Delay.delay(500), Parallel(Alpha.hide(textC, 700), ShapeReveal.reveal(textC, 1000, SideCut.hideSideCut(Side.LEFT), true))), + Sequential(Delay.delay(1000), Parallel(Alpha.hide(textB, 700), ShapeReveal.reveal(textB, 1000, SideCut.hideSideCut(Side.LEFT), true))), + Sequential(Delay.delay(1500), Parallel(Alpha.hide(textA, 700), ShapeReveal.reveal(textA, 1000, SideCut.hideSideCut(Side.LEFT), true))), + TransSurface(4000, textA, Pivot.CENTER) + ) + ) + ) +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/scale.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/scale.kt new file mode 100644 index 0000000..f046c85 --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/scale.kt @@ -0,0 +1,33 @@ +package su.levenetc.android.textsurface.sample.animations + +import su.levenetc.android.textsurface.Text +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.animations.generic.Just +import su.levenetc.android.textsurface.animations.generic.Scale +import su.levenetc.android.textsurface.animations.sets.Sequential +import su.levenetc.android.textsurface.constants.Align +import su.levenetc.android.textsurface.constants.Pivot + +fun scaleTextSample(textSurface: TextSurface) { + val textA = Text.Builder("textA") + .build() + val textB = Text.Builder("textB") + .setPosition(Align.LEFT_OF, textA) + .build() + val textC = Text.Builder("textC") + .setPosition(Align.RIGHT_OF, textA) + .build() + val textD = Text.Builder("textD") + .setPosition(Align.LEFT_OF, textB) + .build() + val textE = Text.Builder("textE") + .setPosition(Align.RIGHT_OF, textC) + .build() + textSurface.playParallel( + Just.show(textA, textB), + Sequential(Scale(textA, 1000, 1f, 2f, Pivot.CENTER), Scale(textA, 1000, 2f, 1f, Pivot.CENTER)) // new Parallel(new Scale(textA, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textA, 500, 1, 1.5f, Pivot.LEFT)), + // new Sequential(Delay.duration(250), new Parallel(new Scale(textB, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textB, 500, 1, 1.5f, Pivot.LEFT))), + // new Sequential(Delay.duration(500), new Parallel(new Scale(textC, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textC, 500, 1, 1.5f, Pivot.LEFT))), + // new Sequential(Delay.duration(750), new Parallel(new Scale(textD, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textD, 500, 1, 1.5f, Pivot.LEFT))) + ) +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/sliding.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/sliding.kt new file mode 100644 index 0000000..162d655 --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/sliding.kt @@ -0,0 +1,37 @@ +package su.levenetc.android.textsurface.sample.animations + +import su.levenetc.android.textsurface.Text +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.animations.camera.TransSurface +import su.levenetc.android.textsurface.animations.effects.Slide +import su.levenetc.android.textsurface.animations.sets.Parallel +import su.levenetc.android.textsurface.animations.sets.Sequential +import su.levenetc.android.textsurface.constants.Align +import su.levenetc.android.textsurface.constants.Pivot +import su.levenetc.android.textsurface.constants.Side + +fun slideSample(textSurface: TextSurface) { + val textA = Text.Builder(" How are you?").build() + val textB = Text.Builder("I'm fine! ").setPosition(Align.LEFT_OF, textA).build() + val textC = Text.Builder("Are you sure?").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textB).build() + val textD = Text.Builder("Totally!").setPadding(10f, 10f, 10f, 10f).setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textC).build() + val duration = 1250L + textSurface.playSequential( + Parallel( + Sequential( + Parallel(Slide.showFrom(Side.LEFT, textA, duration), Slide.showFrom(Side.RIGHT, textB, duration)), + Slide.showFrom(Side.TOP, textC, duration), + Slide.showFrom(Side.BOTTOM, textD, duration) + ), + TransSurface(duration * 3, textD, Pivot.CENTER) + ), + Parallel( + Sequential( + Parallel(Slide.hideFrom(Side.LEFT, textD, duration), Slide.hideFrom(Side.RIGHT, textC, duration)), + Slide.hideFrom(Side.TOP, textB, duration), + Slide.hideFrom(Side.BOTTOM, textA, duration) + ), + TransSurface(duration * 3, textA, Pivot.CENTER) + ) + ) +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/animations/surface.kt b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/surface.kt new file mode 100644 index 0000000..d292949 --- /dev/null +++ b/app/src/main/java/su/levenetc/android/textsurface/sample/animations/surface.kt @@ -0,0 +1,47 @@ +package su.levenetc.android.textsurface.sample.animations + +import su.levenetc.android.textsurface.Text +import su.levenetc.android.textsurface.TextSurface +import su.levenetc.android.textsurface.animations.camera.ScaleSurface +import su.levenetc.android.textsurface.animations.camera.TransSurface +import su.levenetc.android.textsurface.animations.colors.Alpha +import su.levenetc.android.textsurface.animations.generic.Delay +import su.levenetc.android.textsurface.animations.sets.Parallel +import su.levenetc.android.textsurface.constants.Align +import su.levenetc.android.textsurface.constants.Fit +import su.levenetc.android.textsurface.constants.Pivot + +fun surfaceScaleSample(textSurface: TextSurface) { + val textA = Text.Builder("How are you?").setPosition(Align.SURFACE_CENTER).build() + val textB = Text.Builder("Would you mind?").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textA).build() + val textC = Text.Builder("Yes!").setPosition(Align.BOTTOM_OF or Align.CENTER_OF, textB).build() + textSurface.playSequential( + Alpha.show(textA, 500), + Parallel( + Parallel(Alpha.show(textB, 500), Alpha.hide(textA, 500)), + ScaleSurface(500, textB, Fit.WIDTH) + ), + Delay.delay(1000), + Parallel( + Parallel(Alpha.show(textC, 500), Alpha.hide(textB, 500)), + ScaleSurface(500, textC, Fit.HEIGHT) + ) + ) +} + +fun surfaceTransSample(textSurface: TextSurface) { + val textA = Text.Builder("TextA").setPosition(Align.SURFACE_CENTER).build() + val textB = Text.Builder("TextB").setPosition(Align.RIGHT_OF or Align.BOTTOM_OF, textA).build() + val textC = Text.Builder("TextC").setPosition(Align.LEFT_OF or Align.BOTTOM_OF, textB).build() + val textD = Text.Builder("TextD").setPosition(Align.RIGHT_OF or Align.BOTTOM_OF, textC).build() + val duration = 500L + textSurface.playSequential( + Alpha.show(textA, duration), + Parallel(Alpha.show(textB, duration), TransSurface(duration, textB, Pivot.CENTER)), + Parallel(Alpha.show(textC, duration), TransSurface(duration, textC, Pivot.CENTER)), + Parallel(Alpha.show(textD, duration), TransSurface(duration, textD, Pivot.CENTER)), + TransSurface(duration, textC, Pivot.CENTER), + TransSurface(duration, textB, Pivot.CENTER), + TransSurface(duration, textA, Pivot.CENTER) + ) +} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/AlignSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/AlignSample.java deleted file mode 100644 index c74908a..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/AlignSample.java +++ /dev/null @@ -1,82 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Alpha; - -/** - * Created by Eugene Levenetc. - */ -public class AlignSample { - public static void play(TextSurface textSurface) { - - Text textCenter = TextBuilder.create("Center") - .setPosition(Align.SURFACE_CENTER) - .setPadding(25, 25, 25, 25) - .build(); - - // - - Text textLeft = TextBuilder.create("L") - .setPadding(20, 20, 20, 20) - .setPosition(Align.LEFT_OF | Align.CENTER_OF, textCenter) - .build(); - - Text textRight = TextBuilder.create("R") - .setPadding(20, 20, 20, 20) - .setPosition(Align.RIGHT_OF | Align.CENTER_OF, textCenter) - .build(); - - Text textTop = TextBuilder.create("T") - .setPosition(Align.TOP_OF | Align.CENTER_OF, textCenter) - .build(); - - Text textBottom = TextBuilder.create("B") - .setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textCenter) - .build(); - - // - - Text textBottomBottom = TextBuilder.create("BB") - .setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textBottom) - .build(); - - // - - Text textLeftTop = TextBuilder.create("LT") - .setPosition(Align.LEFT_OF | Align.TOP_OF, textCenter) - .build(); - - Text textRightTop = TextBuilder.create("RT") - .setPosition(Align.RIGHT_OF | Align.TOP_OF, textCenter) - .build(); - - Text textLeftBottom = TextBuilder.create("LB") - .setPosition(Align.LEFT_OF | Align.BOTTOM_OF, textCenter) - .build(); - - Text textRightBottom = TextBuilder.create("RB") - .setPosition(Align.BOTTOM_OF | Align.RIGHT_OF, textCenter) - .build(); - - final int duration = 125; - - textSurface.play(TYPE.SEQUENTIAL, - Alpha.show(textCenter, duration), - Alpha.show(textRight, duration), - Alpha.show(textTop, duration), - Alpha.show(textLeft, duration), - Alpha.show(textBottom, duration), - - Alpha.show(textLeftTop, duration), - Alpha.show(textLeftBottom, duration), - Alpha.show(textRightBottom, duration), - Alpha.show(textRightTop, duration), - - Alpha.show(textBottomBottom, duration) - ); - } -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ColorSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ColorSample.java deleted file mode 100644 index 8460d75..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ColorSample.java +++ /dev/null @@ -1,33 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import android.graphics.Color; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Alpha; -import su.levenetc.android.textsurface.animations.ChangeColor; - -/** - * Created by Eugene Levenetc. - */ -public class ColorSample { - public static void play(TextSurface textSurface) { - - Text textA = TextBuilder - .create("Now why you loer en kyk gelyk?") - .setPosition(Align.SURFACE_CENTER) - .setSize(100) - .setAlpha(0) - .build(); - - textSurface.play(TYPE.SEQUENTIAL, - Alpha.show(textA, 1000), - ChangeColor.to(textA, 1000, Color.RED), - ChangeColor.fromTo(textA, 1000, Color.BLUE, Color.CYAN), - Alpha.hide(textA, 1000) - ); - } -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/CookieThumperSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/CookieThumperSample.java deleted file mode 100644 index 9deedfa..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/CookieThumperSample.java +++ /dev/null @@ -1,144 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import android.content.res.AssetManager; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Typeface; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Alpha; -import su.levenetc.android.textsurface.animations.ChangeColor; -import su.levenetc.android.textsurface.animations.Circle; -import su.levenetc.android.textsurface.animations.Delay; -import su.levenetc.android.textsurface.animations.Parallel; -import su.levenetc.android.textsurface.animations.Rotate3D; -import su.levenetc.android.textsurface.animations.Sequential; -import su.levenetc.android.textsurface.animations.ShapeReveal; -import su.levenetc.android.textsurface.animations.SideCut; -import su.levenetc.android.textsurface.animations.Slide; -import su.levenetc.android.textsurface.animations.TransSurface; -import su.levenetc.android.textsurface.contants.Direction; -import su.levenetc.android.textsurface.contants.Pivot; -import su.levenetc.android.textsurface.contants.Side; - -/** - * Created by Eugene Levenetc. - */ -public class CookieThumperSample { - - public static void play(TextSurface textSurface, AssetManager assetManager) { - - final Typeface robotoBlack = Typeface.createFromAsset(assetManager, "fonts/Roboto-Black.ttf"); - Paint paint = new Paint(); - paint.setAntiAlias(true); - paint.setTypeface(robotoBlack); - - Text textDaai = TextBuilder - .create("Daai") - .setPaint(paint) - .setSize(64) - .setAlpha(0) - .setColor(Color.WHITE) - .setPosition(Align.SURFACE_CENTER).build(); - - Text textBraAnies = TextBuilder - .create("bra Anies") - .setPaint(paint) - .setSize(44) - .setAlpha(0) - .setColor(Color.RED) - .setPosition(Align.BOTTOM_OF, textDaai).build(); - - Text textFokkenGamBra = TextBuilder - .create(" hy's n fokken gam bra.") - .setPaint(paint) - .setSize(44) - .setAlpha(0) - .setColor(Color.RED) - .setPosition(Align.RIGHT_OF, textBraAnies).build(); - - Text textHaai = TextBuilder - .create("Haai!!") - .setPaint(paint) - .setSize(74) - .setAlpha(0) - .setColor(Color.RED) - .setPosition(Align.BOTTOM_OF, textFokkenGamBra).build(); - - Text textDaaiAnies = TextBuilder - .create("Daai Anies") - .setPaint(paint) - .setSize(44) - .setAlpha(0) - .setColor(Color.WHITE) - .setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textHaai).build(); - - Text texThyLamInnie = TextBuilder - .create(" hy lam innie mang ja.") - .setPaint(paint) - .setSize(44) - .setAlpha(0) - .setColor(Color.WHITE) - .setPosition(Align.RIGHT_OF, textDaaiAnies).build(); - - Text textThrowDamn = TextBuilder - .create("Throw damn") - .setPaint(paint) - .setSize(44) - .setAlpha(0) - .setColor(Color.RED) - .setPosition(Align.BOTTOM_OF | Align.CENTER_OF, texThyLamInnie).build(); - - Text textDevilishGang = TextBuilder - .create("devilish gang") - .setPaint(paint) - .setSize(44) - .setAlpha(0) - .setColor(Color.RED) - .setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textThrowDamn).build(); - - Text textSignsInTheAir = TextBuilder - .create("signs in the air.") - .setPaint(paint) - .setSize(44) - .setAlpha(0) - .setColor(Color.RED) - .setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textDevilishGang).build(); - - textSurface.play( - new Sequential( - ShapeReveal.create(textDaai, 750, SideCut.show(Side.LEFT), false), - new Parallel(ShapeReveal.create(textDaai, 600, SideCut.hide(Side.LEFT), false), new Sequential(Delay.duration(300), ShapeReveal.create(textDaai, 600, SideCut.show(Side.LEFT), false))), - new Parallel(new TransSurface(500, textBraAnies, Pivot.CENTER), ShapeReveal.create(textBraAnies, 1300, SideCut.show(Side.LEFT), false)), - Delay.duration(500), - new Parallel(new TransSurface(750, textFokkenGamBra, Pivot.CENTER), Slide.showFrom(Side.LEFT, textFokkenGamBra, 750), ChangeColor.to(textFokkenGamBra, 750, Color.WHITE)), - Delay.duration(500), - new Parallel(TransSurface.toCenter(textHaai, 500), Rotate3D.showFromSide(textHaai, 750, Pivot.TOP)), - new Parallel(TransSurface.toCenter(textDaaiAnies, 500), Slide.showFrom(Side.TOP, textDaaiAnies, 500)), - new Parallel(TransSurface.toCenter(texThyLamInnie, 750), Slide.showFrom(Side.LEFT, texThyLamInnie, 500)), - Delay.duration(500), - new Parallel( - new TransSurface(1500, textSignsInTheAir, Pivot.CENTER), - new Sequential( - new Sequential(ShapeReveal.create(textThrowDamn, 500, Circle.show(Side.CENTER, Direction.OUT), false)), - new Sequential(ShapeReveal.create(textDevilishGang, 500, Circle.show(Side.CENTER, Direction.OUT), false)), - new Sequential(ShapeReveal.create(textSignsInTheAir, 500, Circle.show(Side.CENTER, Direction.OUT), false)) - ) - ), - Delay.duration(200), - new Parallel( - ShapeReveal.create(textThrowDamn, 1500, SideCut.hide(Side.LEFT), true), - new Sequential(Delay.duration(250), ShapeReveal.create(textDevilishGang, 1500, SideCut.hide(Side.LEFT), true)), - new Sequential(Delay.duration(500), ShapeReveal.create(textSignsInTheAir, 1500, SideCut.hide(Side.LEFT), true)), - Alpha.hide(texThyLamInnie, 1500), - Alpha.hide(textDaaiAnies, 1500) - ) - ) - ); - - } - -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/Rotation3DSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/Rotation3DSample.java deleted file mode 100644 index e4754b1..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/Rotation3DSample.java +++ /dev/null @@ -1,39 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.animations.AnimationsSet; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Rotate3D; -import su.levenetc.android.textsurface.contants.Axis; -import su.levenetc.android.textsurface.contants.Direction; -import su.levenetc.android.textsurface.contants.Pivot; - -/** - * Created by Eugene Levenetc. - */ -public class Rotation3DSample { - public static void play(TextSurface textSurface) { - Text textA = TextBuilder.create("How are you?").setPosition(Align.SURFACE_CENTER).build(); - Text textB = TextBuilder.create("I'm fine! And you?").setPosition(Align.SURFACE_CENTER, textA).build(); - Text textC = TextBuilder.create("Haaay!").setPosition(Align.SURFACE_CENTER, textB).build(); - int duration = 2750; - - textSurface.play(TYPE.SEQUENTIAL, - new AnimationsSet(TYPE.SEQUENTIAL, - Rotate3D.showFromCenter(textA, duration, Direction.CLOCK, Axis.X), - Rotate3D.hideFromCenter(textA, duration, Direction.CLOCK, Axis.Y) - ), - new AnimationsSet(TYPE.SEQUENTIAL, - Rotate3D.showFromSide(textB, duration, Pivot.LEFT), - Rotate3D.hideFromSide(textB, duration, Pivot.RIGHT) - ), - new AnimationsSet(TYPE.SEQUENTIAL, - Rotate3D.showFromSide(textC, duration, Pivot.TOP), - Rotate3D.hideFromSide(textC, duration, Pivot.BOTTOM) - ) - ); - } -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ScaleTextSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ScaleTextSample.java deleted file mode 100644 index 39ea837..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ScaleTextSample.java +++ /dev/null @@ -1,56 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.animations.Sequential; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Just; -import su.levenetc.android.textsurface.animations.Scale; -import su.levenetc.android.textsurface.contants.Pivot; - -/** - * Created by Eugene Levenetc. - */ -public class ScaleTextSample { - public static void run(TextSurface textSurface) { -// Text textA = TextBuilder.create("oat cake") -//// .setScale(2.0f, Pivot.RIGHT) -// .build(); -// -// textSurface.play(TYPE.SEQUENTIAL, -// //Just.show(textA) -// new Scale(textA, 1000, 0.1f, 1.5f, Pivot.RIGHT) -// ); - - Text textA = TextBuilder.create("textA") -// .setPosition(Align.SURFACE_CENTER) - .build(); - - Text textB = TextBuilder.create("textB") - .setPosition(Align.LEFT_OF, textA) - .build(); - - Text textC = TextBuilder.create("textC") - .setPosition(Align.RIGHT_OF, textA) - .build(); - - Text textD = TextBuilder.create("textD") - .setPosition(Align.LEFT_OF, textB) - .build(); - - Text textE = TextBuilder.create("textE") - .setPosition(Align.RIGHT_OF, textC) - .build(); - - textSurface.play(TYPE.PARALLEL, - Just.show(textA, textB), - new Sequential(new Scale(textA, 1000, 1, 2, Pivot.CENTER), new Scale(textA, 1000, 2, 1, Pivot.CENTER)) -// new Parallel(new Scale(textA, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textA, 500, 1, 1.5f, Pivot.LEFT)), -// new Sequential(Delay.duration(250), new Parallel(new Scale(textB, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textB, 500, 1, 1.5f, Pivot.LEFT))), -// new Sequential(Delay.duration(500), new Parallel(new Scale(textC, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textC, 500, 1, 1.5f, Pivot.LEFT))), -// new Sequential(Delay.duration(750), new Parallel(new Scale(textD, 500, 1.5f, 1f, Pivot.LEFT), new Scale(textD, 500, 1, 1.5f, Pivot.LEFT))) - ); - } -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ShapeRevealLoopSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ShapeRevealLoopSample.java deleted file mode 100644 index 2551659..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ShapeRevealLoopSample.java +++ /dev/null @@ -1,68 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Alpha; -import su.levenetc.android.textsurface.animations.AnimationsSet; -import su.levenetc.android.textsurface.animations.Circle; -import su.levenetc.android.textsurface.animations.Delay; -import su.levenetc.android.textsurface.animations.Loop; -import su.levenetc.android.textsurface.animations.Rotate3D; -import su.levenetc.android.textsurface.animations.ShapeReveal; -import su.levenetc.android.textsurface.animations.SideCut; -import su.levenetc.android.textsurface.animations.Slide; -import su.levenetc.android.textsurface.animations.TransSurface; -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.contants.Axis; -import su.levenetc.android.textsurface.contants.Direction; -import su.levenetc.android.textsurface.contants.Pivot; -import su.levenetc.android.textsurface.contants.Side; -import su.levenetc.android.textsurface.contants.TYPE; - -/** - * Created by Eugene Levenetc. - */ -public class ShapeRevealLoopSample { - public static void play(TextSurface textSurface) { - - Text textA = TextBuilder.create("Now why you loer en kyk gelyk?").setPosition(Align.SURFACE_CENTER).build(); - Text textB = TextBuilder.create("Is ek miskien van goud gemake?").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textA).build(); - Text textC = TextBuilder.create("You want to fight, you come tonight.").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textB).build(); - Text textD = TextBuilder.create("Ek moer jou sleg! So jy hardloop weg.").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textC).build(); - - final int flash = 1500; - - textSurface.play( - new Loop( - Rotate3D.showFromCenter(textA, 500, Direction.CLOCK, Axis.X), - new AnimationsSet(TYPE.PARALLEL, - ShapeReveal.create(textA, flash, SideCut.hide(Side.LEFT), false), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(flash / 4), ShapeReveal.create(textA, flash, SideCut.show(Side.LEFT), false)) - ), - new AnimationsSet(TYPE.PARALLEL, - Rotate3D.showFromSide(textB, 500, Pivot.TOP), - new TransSurface(500, textB, Pivot.CENTER) - ), - Delay.duration(500), - new AnimationsSet(TYPE.PARALLEL, - Slide.showFrom(Side.TOP, textC, 500), - new TransSurface(1000, textC, Pivot.CENTER) - ), - Delay.duration(500), - new AnimationsSet(TYPE.PARALLEL, - ShapeReveal.create(textD, 500, Circle.show(Side.CENTER, Direction.OUT), false), - new TransSurface(1500, textD, Pivot.CENTER) - ), - Delay.duration(500), - new AnimationsSet(TYPE.PARALLEL, - new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textD, 700), ShapeReveal.create(textD, 1000, SideCut.hide(Side.LEFT), true)), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(500), new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textC, 700), ShapeReveal.create(textC, 1000, SideCut.hide(Side.LEFT), true))), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(1000), new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textB, 700), ShapeReveal.create(textB, 1000, SideCut.hide(Side.LEFT), true))), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(1500), new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textA, 700), ShapeReveal.create(textA, 1000, SideCut.hide(Side.LEFT), true))), - new TransSurface(4000, textA, Pivot.CENTER) - ) - ) - ); - } -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ShapeRevealSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ShapeRevealSample.java deleted file mode 100644 index 88c1adc..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/ShapeRevealSample.java +++ /dev/null @@ -1,66 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.animations.AnimationsSet; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Alpha; -import su.levenetc.android.textsurface.animations.Circle; -import su.levenetc.android.textsurface.animations.Delay; -import su.levenetc.android.textsurface.animations.Rotate3D; -import su.levenetc.android.textsurface.animations.ShapeReveal; -import su.levenetc.android.textsurface.animations.SideCut; -import su.levenetc.android.textsurface.animations.Slide; -import su.levenetc.android.textsurface.animations.TransSurface; -import su.levenetc.android.textsurface.contants.Axis; -import su.levenetc.android.textsurface.contants.Direction; -import su.levenetc.android.textsurface.contants.Pivot; -import su.levenetc.android.textsurface.contants.Side; - -/** - * Created by Eugene Levenetc. - */ -public class ShapeRevealSample { - public static void play(TextSurface textSurface) { - - Text textA = TextBuilder.create("Now why you loer en kyk gelyk?").setPosition(Align.SURFACE_CENTER).build(); - Text textB = TextBuilder.create("Is ek miskien van goud gemake?").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textA).build(); - Text textC = TextBuilder.create("You want to fight, you come tonight.").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textB).build(); - Text textD = TextBuilder.create("Ek moer jou sleg! So jy hardloop weg.").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textC).build(); - - final int flash = 1500; - - textSurface.play(TYPE.SEQUENTIAL, - Rotate3D.showFromCenter(textA, 500, Direction.CLOCK, Axis.X), - new AnimationsSet(TYPE.PARALLEL, - ShapeReveal.create(textA, flash, SideCut.hide(Side.LEFT), false), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(flash / 4), ShapeReveal.create(textA, flash, SideCut.show(Side.LEFT), false)) - ), - new AnimationsSet(TYPE.PARALLEL, - Rotate3D.showFromSide(textB, 500, Pivot.TOP), - new TransSurface(500, textB, Pivot.CENTER) - ), - Delay.duration(500), - new AnimationsSet(TYPE.PARALLEL, - Slide.showFrom(Side.TOP, textC, 500), - new TransSurface(1000, textC, Pivot.CENTER) - ), - Delay.duration(500), - new AnimationsSet(TYPE.PARALLEL, - ShapeReveal.create(textD, 500, Circle.show(Side.CENTER, Direction.OUT), false), - new TransSurface(1500, textD, Pivot.CENTER) - ), - Delay.duration(500), - new AnimationsSet(TYPE.PARALLEL, - new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textD, 700), ShapeReveal.create(textD, 1000, SideCut.hide(Side.LEFT), true)), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(500), new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textC, 700), ShapeReveal.create(textC, 1000, SideCut.hide(Side.LEFT), true))), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(1000), new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textB, 700), ShapeReveal.create(textB, 1000, SideCut.hide(Side.LEFT), true))), - new AnimationsSet(TYPE.SEQUENTIAL, Delay.duration(1500), new AnimationsSet(TYPE.PARALLEL, Alpha.hide(textA, 700), ShapeReveal.create(textA, 1000, SideCut.hide(Side.LEFT), true))), - new TransSurface(4000, textA, Pivot.CENTER) - ) - - ); - } -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SlideSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SlideSample.java deleted file mode 100644 index 03610db..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SlideSample.java +++ /dev/null @@ -1,47 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.animations.AnimationsSet; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Slide; -import su.levenetc.android.textsurface.animations.TransSurface; -import su.levenetc.android.textsurface.contants.Pivot; -import su.levenetc.android.textsurface.contants.Side; - -/** - * Created by Eugene Levenetc. - */ -public class SlideSample { - public static void play(TextSurface textSurface) { - - Text textA = TextBuilder.create(" How are you?").build(); - Text textB = TextBuilder.create("I'm fine! ").setPosition(Align.LEFT_OF, textA).build(); - Text textC = TextBuilder.create("Are you sure?").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textB).build(); - Text textD = TextBuilder.create("Totally!").setPadding(10, 10, 10, 10).setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textC).build(); - int duration = 1250; - - textSurface.play( - TYPE.SEQUENTIAL, - new AnimationsSet(TYPE.PARALLEL, - new AnimationsSet(TYPE.SEQUENTIAL, - new AnimationsSet(TYPE.PARALLEL, Slide.showFrom(Side.LEFT, textA, duration), Slide.showFrom(Side.RIGHT, textB, duration)), - Slide.showFrom(Side.TOP, textC, duration), - Slide.showFrom(Side.BOTTOM, textD, duration) - ), - new TransSurface(duration * 3, textD, Pivot.CENTER) - ), - new AnimationsSet(TYPE.PARALLEL, - new AnimationsSet(TYPE.SEQUENTIAL, - new AnimationsSet(TYPE.PARALLEL, Slide.hideFrom(Side.LEFT, textD, duration), Slide.hideFrom(Side.RIGHT, textC, duration)), - Slide.hideFrom(Side.TOP, textB, duration), - Slide.hideFrom(Side.BOTTOM, textA, duration) - ), - new TransSurface(duration * 3, textA, Pivot.CENTER) - ) - - ); - } -} diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SurfaceScaleSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SurfaceScaleSample.java deleted file mode 100644 index 2eb127b..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SurfaceScaleSample.java +++ /dev/null @@ -1,38 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.animations.AnimationsSet; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Alpha; -import su.levenetc.android.textsurface.animations.Delay; -import su.levenetc.android.textsurface.animations.ScaleSurface; -import su.levenetc.android.textsurface.contants.Fit; - -/** - * Created by Eugene Levenetc. - */ -public class SurfaceScaleSample { - public static void play(TextSurface textSurface) { - - Text textA = TextBuilder.create("How are you?").setPosition(Align.SURFACE_CENTER).build(); - Text textB = TextBuilder.create("Would you mind?").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textA).build(); - Text textC = TextBuilder.create("Yes!").setPosition(Align.BOTTOM_OF | Align.CENTER_OF, textB).build(); - - - textSurface.play(TYPE.SEQUENTIAL, - Alpha.show(textA, 500), - new AnimationsSet(TYPE.PARALLEL, - new AnimationsSet(TYPE.PARALLEL, Alpha.show(textB, 500), Alpha.hide(textA, 500)), - new ScaleSurface(500, textB, Fit.WIDTH) - ), - Delay.duration(1000), - new AnimationsSet(TYPE.PARALLEL, - new AnimationsSet(TYPE.PARALLEL, Alpha.show(textC, 500), Alpha.hide(textB, 500)), - new ScaleSurface(500, textC, Fit.WIDTH) - ) - ); - } -} \ No newline at end of file diff --git a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SurfaceTransSample.java b/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SurfaceTransSample.java deleted file mode 100644 index d43cfc1..0000000 --- a/app/src/main/java/su/levenetc/android/textsurface/sample/checks/SurfaceTransSample.java +++ /dev/null @@ -1,35 +0,0 @@ -package su.levenetc.android.textsurface.sample.checks; - -import su.levenetc.android.textsurface.contants.Align; -import su.levenetc.android.textsurface.animations.AnimationsSet; -import su.levenetc.android.textsurface.contants.Pivot; -import su.levenetc.android.textsurface.contants.TYPE; -import su.levenetc.android.textsurface.Text; -import su.levenetc.android.textsurface.TextBuilder; -import su.levenetc.android.textsurface.TextSurface; -import su.levenetc.android.textsurface.animations.Alpha; -import su.levenetc.android.textsurface.animations.TransSurface; - -/** - * Created by Eugene Levenetc. - */ -public class SurfaceTransSample { - public static void play(TextSurface textSurface) { - Text textA = TextBuilder.create("TextA").setPosition(Align.SURFACE_CENTER).build(); - Text textB = TextBuilder.create("TextB").setPosition(Align.RIGHT_OF | Align.BOTTOM_OF, textA).build(); - Text textC = TextBuilder.create("TextC").setPosition(Align.LEFT_OF | Align.BOTTOM_OF, textB).build(); - Text textD = TextBuilder.create("TextD").setPosition(Align.RIGHT_OF | Align.BOTTOM_OF, textC).build(); - - int duration = 500; - - textSurface.play(TYPE.SEQUENTIAL, - Alpha.show(textA, duration), - new AnimationsSet(TYPE.PARALLEL, Alpha.show(textB, duration), new TransSurface(duration, textB, Pivot.CENTER)), - new AnimationsSet(TYPE.PARALLEL, Alpha.show(textC, duration), new TransSurface(duration, textC, Pivot.CENTER)), - new AnimationsSet(TYPE.PARALLEL, Alpha.show(textD, duration), new TransSurface(duration, textD, Pivot.CENTER)), - new TransSurface(duration, textC, Pivot.CENTER), - new TransSurface(duration, textB, Pivot.CENTER), - new TransSurface(duration, textA, Pivot.CENTER) - ); - } -} diff --git a/app/src/main/res/layout/generic_activity.xml b/app/src/main/res/layout/generic_activity.xml new file mode 100644 index 0000000..c1660fa --- /dev/null +++ b/app/src/main/res/layout/generic_activity.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/launcher_activity.xml b/app/src/main/res/layout/launcher_activity.xml new file mode 100644 index 0000000..9521d56 --- /dev/null +++ b/app/src/main/res/layout/launcher_activity.xml @@ -0,0 +1,20 @@ + + + +