Skip to content

Commit

Permalink
add AlignAnimationStrategy
Browse files Browse the repository at this point in the history
  • Loading branch information
YvesCheung committed Apr 29, 2019
1 parent 07e8505 commit 744f912
Show file tree
Hide file tree
Showing 9 changed files with 105 additions and 63 deletions.

This file was deleted.

20 changes: 17 additions & 3 deletions app/src/main/java/com/yy/mobile/rollingtext/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

import com.yy.mobile.rollingtextview.CharOrder;
import com.yy.mobile.rollingtextview.RollingTextView;
import com.yy.mobile.rollingtextview.strategy.AlignAnimationStrategy;
import com.yy.mobile.rollingtextview.strategy.AlignAnimationStrategy.TextAlignment;
import com.yy.mobile.rollingtextview.strategy.Direction;
import com.yy.mobile.rollingtextview.strategy.Strategy;

Expand All @@ -23,8 +25,8 @@ public class MainActivity extends AppCompatActivity {

private Handler handler = new Handler();

private List<String> list = Arrays.asList("1", "9", "12", "19", "24", "36", "47",
"56", "63", "78", "89", "95", "132", "289", "312", "400");
private List<String> list = Arrays.asList("1", "21339", "12", "123319", "24", "6", "247",
"5226", "63", "378", "234389", "12395", "2", "1289", "32212", "400");
private int idx = 0;

@Override
Expand Down Expand Up @@ -62,7 +64,19 @@ public void run() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
carryBit.setText(list.get(idx++ % list.size()));
carryBit.setText(list.get(idx % list.size()));
handler.postDelayed(this, 3000L);
}
}, 2000L);

final RollingTextView alignLeft = findViewById(R.id.rollingTextView4);
alignLeft.addCharOrder(CharOrder.Number);
alignLeft.setAnimationDuration(2000L);
alignLeft.setCharStrategy(new AlignAnimationStrategy(TextAlignment.Left));
handler.postDelayed(new Runnable() {
@Override
public void run() {
alignLeft.setText(list.get(idx++ % list.size()));
handler.postDelayed(this, 3000L);
}
}, 2000L);
Expand Down
37 changes: 31 additions & 6 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@
android:id="@+id/rollingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/alphaBetView"
android:layout_centerHorizontal="true"
android:layout_marginRight="100dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="0"
Expand All @@ -59,8 +60,9 @@
android:id="@+id/rollingTextView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/rollingTextView"
android:layout_centerHorizontal="true"
android:layout_marginRight="100dp"
android:gravity="center"
android:text="0"
android:textColor="#ffff00ff"
Expand All @@ -83,8 +85,9 @@
android:id="@+id/rollingTextView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/rollingTextView2"
android:layout_centerHorizontal="true"
android:layout_marginRight="100dp"
android:gravity="center"
android:text="0"
android:textColor="#ffff00ff"
Expand All @@ -103,11 +106,33 @@
android:text="CarryBit"
android:textSize="14sp" />

<com.yy.mobile.rollingtextview.RollingTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/rollingTextView3"
android:layout_marginLeft="50dp"
android:gravity="start|center_vertical"
android:padding="10dp"
android:text="AlignLeft"
android:textSize="14sp" />

<com.yy.mobile.rollingtextview.RollingTextView
android:id="@+id/rollingTextView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/rollingTextView3"
android:layout_marginLeft="140dp"
android:text="0"
android:textColor="#ffff00ff"
android:textSize="35sp"
android:textStyle="italic" />

<RelativeLayout
android:id="@+id/stickyLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/rollingTextView3"
android:layout_below="@id/rollingTextView4"
android:layout_marginTop="10dp">

<com.yy.mobile.rollingtextview.RollingTextView
Expand Down Expand Up @@ -162,15 +187,15 @@
android:layout_height="wrap_content"
android:layout_below="@+id/stickyLayout2"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_marginTop="10dp"
android:textSize="30sp" />

<LinearLayout
android:id="@+id/charOrderExampleLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/carryTextView"
android:layout_marginTop="20dp">
android:layout_marginTop="10dp">

<com.yy.mobile.rollingtextview.RollingTextView
android:layout_width="0dp"
Expand Down
17 changes: 0 additions & 17 deletions app/src/test/java/com/yy/mobile/rollingtext/ExampleUnitTest.java

This file was deleted.

3 changes: 0 additions & 3 deletions rollingtextview/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ android {
targetSdkVersion 26
versionCode 1
versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,13 @@ internal class TextManager(

fun setText(targetText: CharSequence) {

val itr = textColumns.iterator()
while (itr.hasNext()) {
val column = itr.next()
if (column.currentWidth.isZero()) {
itr.remove()
}
}
// val itr = textColumns.iterator()
// while (itr.hasNext()) {
// val column = itr.next()
// if (column.currentWidth.isZero()) {
// itr.remove()
// }
// }

val sourceText = String(currentText)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.yy.mobile.rollingtextview.strategy

import com.yy.mobile.rollingtextview.TextManager

/**
* Created by 张宇 on 2019/4/29.
* E-mail: [email protected]
* YY: 909017428
*/
@Suppress("MemberVisibilityCanBePrivate")
open class AlignAnimationStrategy(val alignment: TextAlignment) : NormalAnimationStrategy() {

override fun findCharOrder(
sourceText: CharSequence,
targetText: CharSequence,
index: Int,
charPool: CharPool
): Pair<List<Char>, Direction> {
val maxLen = Math.max(sourceText.length, targetText.length)
var srcChar = TextManager.EMPTY
var tgtChar = TextManager.EMPTY

val srcRange = getTextRange(sourceText, maxLen)
val tgtRange = getTextRange(targetText, maxLen)
if (index in srcRange) {
srcChar = sourceText[index - srcRange.first]
}
if (index in tgtRange) {
tgtChar = targetText[index - tgtRange.first]
}

return findCharOrder(srcChar, tgtChar, index, charPool)
}

private fun getTextRange(text: CharSequence, maxLen: Int): IntRange {
val from: Int = when (alignment) {
TextAlignment.Left -> 0
TextAlignment.Center -> Math.round((maxLen - text.length) / 2f)
TextAlignment.Right -> maxLen - text.length
}
val to: Int = from + text.length
return from until to
}

enum class TextAlignment {
Left, Right, Center
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ typealias CharPool = List<Collection<Char>>
*
* [SCROLL_DOWN] 向下滚动
*/
enum class Direction(var value: Int) {
enum class Direction(val value: Int) {
SCROLL_UP(-1),
SCROLL_DOWN(1)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.yy.mobile.rollingtextview.PreviousProgress
* E-mail: [email protected]
* YY: 909017428
*/
@Suppress("MemberVisibilityCanBePrivate")
class StickyStrategy(val factor: Double) : NormalAnimationStrategy() {

init {
Expand Down

0 comments on commit 744f912

Please sign in to comment.