Skip to content

Commit 6419f7c

Browse files
authored
Merge pull request #2 from renanrhoden/fix-gradient-color-update-text
adding behavior to recalc gradiente when size changes
2 parents d38f601 + 870623d commit 6419f7c

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

app/src/main/java/com/opencraft/android/gradienttextview/sample/MainActivity.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ class MainActivity : AppCompatActivity() {
1414
val vm = MainViewModel(this)
1515
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
1616
binding.vm = vm
17-
// binding.gradient.postDelayed({
18-
// binding.gradient.gradientColors = intArrayOf(Color.BLUE, Color.GREEN)
19-
// }, 1000)
17+
binding.gradient.postDelayed({
18+
vm.text.set("aaaaaa\naaaaaa\naaaaaaa\naaaaaaaa")
19+
}, 1000)
20+
21+
2022
}
2123
}

app/src/main/java/com/opencraft/android/gradienttextview/sample/MainViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import android.databinding.ObservableField
55
import com.opencraft.android.gradienttextview.R
66

77
class MainViewModel(context: Context) {
8-
val text = ObservableField<String>("aaaaaaaaaa\naaaaaaaaaa\naaaaaaaaaa\naaaaaaaaaa\naaaaaaaaaa")
8+
val text = ObservableField<String>()
99
val colors = context.resources.getIntArray(R.array.gradient_2)
1010
val colorsSpan = context.resources.getIntArray(R.array.gradient_color_span_2)
1111
}

library/src/main/java/com/opencraft/library/GradientTextView.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class GradientTextView constructor(context: Context, attrs: AttributeSet?, defSt
1616
private var startOption = -1
1717
private var endOption = -1
1818
private var changedColors = true
19+
private var changedSize = false
1920

2021
var gradientColors = intArrayOf(Color.BLACK, Color.WHITE)
2122
set(value) {
@@ -93,10 +94,14 @@ class GradientTextView constructor(context: Context, attrs: AttributeSet?, defSt
9394
}
9495

9596
override fun onDraw(canvas: Canvas?) {
96-
if (changedColors) {
97+
if (changedColors ) {
9798
changedColors = false
9899
paint.shader = getLinearGradient()
99100
}
101+
if (changedSize) {
102+
changedSize = false
103+
paint.shader = getLinearGradient()
104+
}
100105
super.onDraw(canvas)
101106
}
102107

@@ -151,6 +156,11 @@ class GradientTextView constructor(context: Context, attrs: AttributeSet?, defSt
151156
return Point(startX.toInt(), startY.toInt())
152157
}
153158

159+
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
160+
super.onSizeChanged(w, h, oldw, oldh)
161+
changedColors = true
162+
}
163+
154164
companion object {
155165
const val TOP_LEFT = 0
156166
const val TOP_CENTER = 1

0 commit comments

Comments
 (0)