From 870623d3964f004649ffb76531749333087e065a Mon Sep 17 00:00:00 2001 From: Renan Rhoden Date: Fri, 26 Oct 2018 20:11:06 -0300 Subject: [PATCH] adding behavior to recalc gradiente when size changes --- .../android/gradienttextview/sample/MainActivity.kt | 8 +++++--- .../android/gradienttextview/sample/MainViewModel.kt | 2 +- .../java/com/opencraft/library/GradientTextView.kt | 12 +++++++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainActivity.kt b/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainActivity.kt index 1c60b24..1435b82 100644 --- a/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainActivity.kt +++ b/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainActivity.kt @@ -14,8 +14,10 @@ class MainActivity : AppCompatActivity() { val vm = MainViewModel(this) val binding = DataBindingUtil.setContentView(this, R.layout.activity_main) binding.vm = vm -// binding.gradient.postDelayed({ -// binding.gradient.gradientColors = intArrayOf(Color.BLUE, Color.GREEN) -// }, 1000) + binding.gradient.postDelayed({ + vm.text.set("aaaaaa\naaaaaa\naaaaaaa\naaaaaaaa") + }, 1000) + + } } diff --git a/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainViewModel.kt b/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainViewModel.kt index c105954..99061eb 100644 --- a/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainViewModel.kt +++ b/app/src/main/java/com/opencraft/android/gradienttextview/sample/MainViewModel.kt @@ -5,7 +5,7 @@ import android.databinding.ObservableField import com.opencraft.android.gradienttextview.R class MainViewModel(context: Context) { - val text = ObservableField("aaaaaaaaaa\naaaaaaaaaa\naaaaaaaaaa\naaaaaaaaaa\naaaaaaaaaa") + val text = ObservableField() val colors = context.resources.getIntArray(R.array.gradient_2) val colorsSpan = context.resources.getIntArray(R.array.gradient_color_span_2) } \ No newline at end of file diff --git a/library/src/main/java/com/opencraft/library/GradientTextView.kt b/library/src/main/java/com/opencraft/library/GradientTextView.kt index f6ec704..89e66da 100644 --- a/library/src/main/java/com/opencraft/library/GradientTextView.kt +++ b/library/src/main/java/com/opencraft/library/GradientTextView.kt @@ -16,6 +16,7 @@ class GradientTextView constructor(context: Context, attrs: AttributeSet?, defSt private var startOption = -1 private var endOption = -1 private var changedColors = true + private var changedSize = false var gradientColors = intArrayOf(Color.BLACK, Color.WHITE) set(value) { @@ -93,10 +94,14 @@ class GradientTextView constructor(context: Context, attrs: AttributeSet?, defSt } override fun onDraw(canvas: Canvas?) { - if (changedColors) { + if (changedColors ) { changedColors = false paint.shader = getLinearGradient() } + if (changedSize) { + changedSize = false + paint.shader = getLinearGradient() + } super.onDraw(canvas) } @@ -151,6 +156,11 @@ class GradientTextView constructor(context: Context, attrs: AttributeSet?, defSt return Point(startX.toInt(), startY.toInt()) } + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + changedColors = true + } + companion object { const val TOP_LEFT = 0 const val TOP_CENTER = 1