Skip to content

Commit 3af5434

Browse files
authored
Merge pull request #203 from fatihergin/feature/migrating-to-viewbinding
Feature/migrating to viewbinding
2 parents 7d3c398 + bc7e028 commit 3af5434

File tree

6 files changed

+215
-147
lines changed

6 files changed

+215
-147
lines changed

app/build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
apply plugin: 'com.android.application'
22
apply plugin: 'kotlin-android'
3-
apply plugin: 'kotlin-android-extensions'
43

54
def keystorePropertiesFile = rootProject.file("keystore.properties")
65
def keystoreProperties = new Properties()
@@ -31,6 +30,11 @@ android {
3130
}
3231
}
3332

33+
buildFeatures {
34+
buildConfig true
35+
viewBinding true
36+
}
37+
3438
buildTypes {
3539
debug {
3640
applicationIdSuffix ".debug"

app/src/main/kotlin/com/simplemobiletools/flashlight/activities/BrightDisplayActivity.kt

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ import android.view.WindowManager
77
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
88
import com.simplemobiletools.commons.extensions.applyColorFilter
99
import com.simplemobiletools.commons.extensions.getContrastColor
10-
import com.simplemobiletools.flashlight.R
10+
import com.simplemobiletools.flashlight.databinding.ActivityBrightDisplayBinding
1111
import com.simplemobiletools.flashlight.extensions.config
12-
import kotlinx.android.synthetic.main.activity_bright_display.*
1312

1413
class BrightDisplayActivity : SimpleActivity() {
14+
private lateinit var binding: ActivityBrightDisplayBinding
15+
1516
override fun onCreate(savedInstanceState: Bundle?) {
1617
window.addFlags(
1718
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
@@ -22,20 +23,23 @@ class BrightDisplayActivity : SimpleActivity() {
2223

2324
useDynamicTheme = false
2425
super.onCreate(savedInstanceState)
25-
setContentView(R.layout.activity_bright_display)
26+
binding = ActivityBrightDisplayBinding.inflate(layoutInflater)
27+
setContentView(binding.root)
2628
supportActionBar?.hide()
2729
setBackgroundColor(config.brightDisplayColor)
2830

29-
bright_display_change_color.setOnClickListener {
31+
binding.brightDisplayChangeColor.setOnClickListener {
3032
ColorPickerDialog(this, config.brightDisplayColor, true, currentColorCallback = {
3133
setBackgroundColor(it)
3234
}) { wasPositivePressed, color ->
3335
if (wasPositivePressed) {
3436
config.brightDisplayColor = color
3537

3638
val contrastColor = color.getContrastColor()
37-
bright_display_change_color.setTextColor(contrastColor)
38-
bright_display_change_color.background.applyColorFilter(contrastColor)
39+
binding.brightDisplayChangeColor.apply {
40+
setTextColor(contrastColor)
41+
background.applyColorFilter(contrastColor)
42+
}
3943
} else {
4044
setBackgroundColor(config.brightDisplayColor)
4145
}
@@ -57,11 +61,15 @@ class BrightDisplayActivity : SimpleActivity() {
5761
}
5862

5963
private fun setBackgroundColor(color: Int) {
60-
bright_display.background = ColorDrawable(color)
64+
binding.apply {
65+
brightDisplay.background = ColorDrawable(color)
6166

62-
val contrastColor = config.brightDisplayColor.getContrastColor()
63-
bright_display_change_color.setTextColor(contrastColor)
64-
bright_display_change_color.background.applyColorFilter(contrastColor)
67+
val contrastColor = config.brightDisplayColor.getContrastColor()
68+
brightDisplayChangeColor.apply {
69+
setTextColor(contrastColor)
70+
background.applyColorFilter(contrastColor)
71+
}
72+
}
6573
}
6674

6775
private fun toggleBrightness(increase: Boolean) {

app/src/main/kotlin/com/simplemobiletools/flashlight/activities/MainActivity.kt

Lines changed: 77 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ import com.simplemobiletools.commons.helpers.isNougatPlus
1717
import com.simplemobiletools.commons.models.FAQItem
1818
import com.simplemobiletools.flashlight.BuildConfig
1919
import com.simplemobiletools.flashlight.R
20+
import com.simplemobiletools.flashlight.databinding.ActivityMainBinding
2021
import com.simplemobiletools.flashlight.extensions.config
2122
import com.simplemobiletools.flashlight.helpers.CameraTorchListener
2223
import com.simplemobiletools.flashlight.helpers.MIN_BRIGHTNESS_LEVEL
2324
import com.simplemobiletools.flashlight.helpers.MyCameraImpl
2425
import com.simplemobiletools.flashlight.models.Events
25-
import kotlinx.android.synthetic.main.activity_main.*
2626
import org.greenrobot.eventbus.EventBus
2727
import org.greenrobot.eventbus.Subscribe
2828
import java.util.*
@@ -33,6 +33,7 @@ class MainActivity : SimpleActivity() {
3333
private val FLASHLIGHT_STATE = "flashlight_state"
3434
private val STROBOSCOPE_STATE = "stroboscope_state"
3535

36+
private lateinit var binding: ActivityMainBinding
3637
private var mBus: EventBus? = null
3738
private var mCameraImpl: MyCameraImpl? = null
3839
private var mIsFlashlightOn = false
@@ -41,32 +42,36 @@ class MainActivity : SimpleActivity() {
4142
override fun onCreate(savedInstanceState: Bundle?) {
4243
isMaterialActivity = true
4344
super.onCreate(savedInstanceState)
44-
setContentView(R.layout.activity_main)
45+
binding = ActivityMainBinding.inflate(layoutInflater)
46+
setContentView(binding.root)
4547
appLaunched(BuildConfig.APPLICATION_ID)
4648
setupOptionsMenu()
4749
refreshMenuItems()
4850

49-
updateMaterialActivityViews(main_coordinator, main_holder, useTransparentNavigation = true, useTopSearchMenu = false)
50-
setupMaterialScrollListener(main_nested_scrollview, main_toolbar)
51-
5251
mBus = EventBus.getDefault()
53-
changeIconColor(getContrastColor(), stroboscope_btn)
5452

55-
bright_display_btn.setOnClickListener {
56-
reTurnFlashlightOn = false
57-
startActivity(Intent(applicationContext, BrightDisplayActivity::class.java))
58-
}
53+
binding.apply {
54+
updateMaterialActivityViews(mainCoordinator, mainHolder, useTransparentNavigation = true, useTopSearchMenu = false)
55+
setupMaterialScrollListener(mainNestedScrollview, mainToolbar)
5956

60-
flashlight_btn.setOnClickListener {
61-
mCameraImpl!!.toggleFlashlight()
62-
}
57+
changeIconColor(getContrastColor(), stroboscopeBtn)
6358

64-
sos_btn.setOnClickListener {
65-
toggleStroboscope(true)
66-
}
59+
brightDisplayBtn.setOnClickListener {
60+
reTurnFlashlightOn = false
61+
startActivity(Intent(applicationContext, BrightDisplayActivity::class.java))
62+
}
6763

68-
stroboscope_btn.setOnClickListener {
69-
toggleStroboscope(false)
64+
flashlightBtn.setOnClickListener {
65+
mCameraImpl!!.toggleFlashlight()
66+
}
67+
68+
sosBtn.setOnClickListener {
69+
toggleStroboscope(true)
70+
}
71+
72+
stroboscopeBtn.setOnClickListener {
73+
toggleStroboscope(false)
74+
}
7075
}
7176

7277
setupStroboscope()
@@ -75,29 +80,32 @@ class MainActivity : SimpleActivity() {
7580

7681
override fun onResume() {
7782
super.onResume()
78-
setupToolbar(main_toolbar)
83+
setupToolbar(binding.mainToolbar)
7984
mCameraImpl!!.handleCameraSetup()
8085
checkState(MyCameraImpl.isFlashlightOn)
8186

8287
val contrastColor = getContrastColor()
83-
changeIconColor(contrastColor, bright_display_btn)
84-
bright_display_btn.beVisibleIf(config.brightDisplay)
85-
sos_btn.beVisibleIf(config.sos)
8688

87-
if (sos_btn.currentTextColor != getProperPrimaryColor()) {
88-
sos_btn.setTextColor(contrastColor)
89-
}
89+
binding.apply {
90+
changeIconColor(contrastColor, brightDisplayBtn)
91+
brightDisplayBtn.beVisibleIf(config.brightDisplay)
92+
sosBtn.beVisibleIf(config.sos)
93+
94+
if (sosBtn.currentTextColor != getProperPrimaryColor()) {
95+
sosBtn.setTextColor(contrastColor)
96+
}
9097

91-
stroboscope_btn.beVisibleIf(config.stroboscope)
98+
stroboscopeBtn.beVisibleIf(config.stroboscope)
9299

93-
if (!config.stroboscope) {
94-
mCameraImpl!!.stopStroboscope()
95-
stroboscope_bar.beInvisible()
96-
}
100+
if (!config.stroboscope) {
101+
mCameraImpl!!.stopStroboscope()
102+
stroboscopeBar.beInvisible()
103+
}
97104

98-
updateTextColors(main_holder)
99-
if (stroboscope_bar.isInvisible()) {
100-
changeIconColor(contrastColor, stroboscope_btn)
105+
updateTextColors(mainHolder)
106+
if (stroboscopeBar.isInvisible()) {
107+
changeIconColor(contrastColor, stroboscopeBtn)
108+
}
101109
}
102110

103111
requestedOrientation = if (config.forcePortraitMode) ActivityInfo.SCREEN_ORIENTATION_PORTRAIT else ActivityInfo.SCREEN_ORIENTATION_SENSOR
@@ -132,7 +140,7 @@ class MainActivity : SimpleActivity() {
132140
}
133141

134142
private fun setupOptionsMenu() {
135-
main_toolbar.setOnMenuItemClickListener { menuItem ->
143+
binding.mainToolbar.setOnMenuItemClickListener { menuItem ->
136144
when (menuItem.itemId) {
137145
R.id.more_apps_from_us -> launchMoreAppsFromUsIntent()
138146
R.id.settings -> launchSettings()
@@ -144,14 +152,14 @@ class MainActivity : SimpleActivity() {
144152
}
145153

146154
private fun refreshMenuItems() {
147-
main_toolbar.menu.apply {
155+
binding.mainToolbar.menu.apply {
148156
findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations)
149157
}
150158
}
151159

152160
override fun onSaveInstanceState(outState: Bundle) {
153161
outState.putBoolean(FLASHLIGHT_STATE, mIsFlashlightOn)
154-
outState.putBoolean(STROBOSCOPE_STATE, stroboscope_bar.isVisible())
162+
outState.putBoolean(STROBOSCOPE_STATE, binding.stroboscopeBar.isVisible())
155163
super.onSaveInstanceState(outState)
156164
}
157165

@@ -196,7 +204,7 @@ class MainActivity : SimpleActivity() {
196204
override fun onTorchEnabled(isEnabled: Boolean) {
197205
mCameraImpl!!.onTorchEnabled(isEnabled)
198206
if (mCameraImpl!!.supportsBrightnessControl()) {
199-
brightness_bar.beVisibleIf(isEnabled)
207+
binding.brightnessBar.beVisibleIf(isEnabled)
200208
}
201209
}
202210

@@ -211,13 +219,15 @@ class MainActivity : SimpleActivity() {
211219
}
212220

213221
private fun setupStroboscope() {
214-
stroboscope_bar.max = (MAX_STROBO_DELAY - MIN_STROBO_DELAY).toInt()
215-
stroboscope_bar.progress = config.stroboscopeProgress
216-
stroboscope_bar.onSeekBarChangeListener { progress ->
217-
val frequency = stroboscope_bar.max - progress + MIN_STROBO_DELAY
218-
mCameraImpl?.stroboFrequency = frequency
219-
config.stroboscopeFrequency = frequency
220-
config.stroboscopeProgress = progress
222+
binding.stroboscopeBar.apply {
223+
max = (MAX_STROBO_DELAY - MIN_STROBO_DELAY).toInt()
224+
progress = config.stroboscopeProgress
225+
onSeekBarChangeListener { progress ->
226+
val frequency = max - progress + MIN_STROBO_DELAY
227+
mCameraImpl?.stroboFrequency = frequency
228+
config.stroboscopeFrequency = frequency
229+
config.stroboscopeProgress = progress
230+
}
221231
}
222232
}
223233

@@ -237,22 +247,26 @@ class MainActivity : SimpleActivity() {
237247
}
238248

239249
private fun setupBrightness() {
240-
brightness_bar.max = mCameraImpl?.getMaximumBrightnessLevel() ?: MIN_BRIGHTNESS_LEVEL
241-
brightness_bar.progress = mCameraImpl?.getCurrentBrightnessLevel() ?: MIN_BRIGHTNESS_LEVEL
242-
brightness_bar.onSeekBarChangeListener { level ->
243-
val newLevel = level.coerceAtLeast(MIN_BRIGHTNESS_LEVEL)
244-
mCameraImpl?.updateBrightnessLevel(newLevel)
245-
config.brightnessLevel = newLevel
250+
binding.brightnessBar.apply {
251+
max = mCameraImpl?.getMaximumBrightnessLevel() ?: MIN_BRIGHTNESS_LEVEL
252+
progress = mCameraImpl?.getCurrentBrightnessLevel() ?: MIN_BRIGHTNESS_LEVEL
253+
onSeekBarChangeListener { level ->
254+
val newLevel = level.coerceAtLeast(MIN_BRIGHTNESS_LEVEL)
255+
mCameraImpl?.updateBrightnessLevel(newLevel)
256+
config.brightnessLevel = newLevel
257+
}
246258
}
247259
}
248260

249261
private fun cameraPermissionGranted(isSOS: Boolean) {
250262
if (isSOS) {
251263
val isSOSRunning = mCameraImpl!!.toggleSOS()
252-
sos_btn.setTextColor(if (isSOSRunning) getProperPrimaryColor() else getContrastColor())
264+
binding.sosBtn.setTextColor(if (isSOSRunning) getProperPrimaryColor() else getContrastColor())
253265
} else if (mCameraImpl!!.toggleStroboscope()) {
254-
stroboscope_bar.beInvisibleIf(stroboscope_bar.isVisible())
255-
changeIconColor(if (stroboscope_bar.isVisible()) getProperPrimaryColor() else getContrastColor(), stroboscope_btn)
266+
binding.apply {
267+
stroboscopeBar.beInvisibleIf(stroboscopeBar.isVisible())
268+
changeIconColor(if (stroboscopeBar.isVisible()) getProperPrimaryColor() else getContrastColor(), stroboscopeBtn)
269+
}
256270
}
257271
}
258272

@@ -270,13 +284,13 @@ class MainActivity : SimpleActivity() {
270284

271285
@Subscribe
272286
fun stopStroboscope(event: Events.StopStroboscope) {
273-
stroboscope_bar.beInvisible()
274-
changeIconColor(getContrastColor(), stroboscope_btn)
287+
binding.stroboscopeBar.beInvisible()
288+
changeIconColor(getContrastColor(), binding.stroboscopeBtn)
275289
}
276290

277291
@Subscribe
278292
fun stopSOS(event: Events.StopSOS) {
279-
sos_btn.setTextColor(getContrastColor())
293+
binding.sosBtn.setTextColor(getContrastColor())
280294
}
281295

282296
private fun checkState(isEnabled: Boolean) {
@@ -288,18 +302,20 @@ class MainActivity : SimpleActivity() {
288302
}
289303

290304
private fun enableFlashlight() {
291-
changeIconColor(getProperPrimaryColor(), flashlight_btn)
305+
changeIconColor(getProperPrimaryColor(), binding.flashlightBtn)
292306
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
293307
mIsFlashlightOn = true
294308

295-
sos_btn.setTextColor(getContrastColor())
309+
binding.apply {
310+
sosBtn.setTextColor(getContrastColor())
296311

297-
changeIconColor(getContrastColor(), stroboscope_btn)
298-
stroboscope_bar.beInvisible()
312+
changeIconColor(getContrastColor(), stroboscopeBtn)
313+
stroboscopeBar.beInvisible()
314+
}
299315
}
300316

301317
private fun disableFlashlight() {
302-
changeIconColor(getContrastColor(), flashlight_btn)
318+
changeIconColor(getContrastColor(), binding.flashlightBtn)
303319
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
304320
mIsFlashlightOn = false
305321
}

0 commit comments

Comments
 (0)