Skip to content
This repository was archived by the owner on Mar 8, 2024. It is now read-only.

Commit d16454f

Browse files
Merge pull request #47 from brightec/task/remove-synthetics
Task/remove synthetics
2 parents 1b33a40 + 193e84a commit d16454f

File tree

6 files changed

+65
-37
lines changed

6 files changed

+65
-37
lines changed

app/build.gradle

Lines changed: 4 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
apply plugin: "kotlin-allopen"
54
apply plugin: "com.google.gms.google-services"
65
apply from: "$project.rootDir/config/quality/quality.gradle"
@@ -34,6 +33,10 @@ android {
3433
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
3534
}
3635

36+
buildFeatures {
37+
viewBinding true
38+
}
39+
3740
lintOptions {
3841
lintConfig file("$project.rootDir/config/quality/lint.xml")
3942
}

app/src/main/java/uk/co/brightec/kbarcode/app/MainActivity.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,37 @@ package uk.co.brightec.kbarcode.app
22

33
import android.os.Bundle
44
import androidx.appcompat.app.AppCompatActivity
5-
import kotlinx.android.synthetic.main.activity_main.*
65
import uk.co.brightec.kbarcode.app.camerax.CameraXActivity
6+
import uk.co.brightec.kbarcode.app.databinding.ActivityMainBinding
77
import uk.co.brightec.kbarcode.app.viewfinder.ViewfinderActivity
88

99
class MainActivity : AppCompatActivity() {
1010

11+
private lateinit var binding: ActivityMainBinding
12+
1113
override fun onCreate(savedInstanceState: Bundle?) {
1214
super.onCreate(savedInstanceState)
13-
setContentView(R.layout.activity_main)
15+
binding = ActivityMainBinding.inflate(layoutInflater)
16+
val view = binding.root
17+
setContentView(view)
1418

15-
button_xml.setOnClickListener {
19+
binding.buttonXml.setOnClickListener {
1620
val intent = XmlActivity.getStartingIntent(this)
1721
startActivity(intent)
1822
}
19-
button_xml_java.setOnClickListener {
23+
binding.buttonXmlJava.setOnClickListener {
2024
val intent = XmlJavaActivity.getStartingIntent(this)
2125
startActivity(intent)
2226
}
23-
button_programmatic.setOnClickListener {
27+
binding.buttonProgrammatic.setOnClickListener {
2428
val intent = ProgrammaticActivity.getStartingIntent(this)
2529
startActivity(intent)
2630
}
27-
button_viewfinder.setOnClickListener {
31+
binding.buttonViewfinder.setOnClickListener {
2832
val intent = ViewfinderActivity.getStartingIntent(this)
2933
startActivity(intent)
3034
}
31-
button_camerax.setOnClickListener {
35+
binding.buttonCamerax.setOnClickListener {
3236
val intent = CameraXActivity.getStartingIntent(this)
3337
startActivity(intent)
3438
}

app/src/main/java/uk/co/brightec/kbarcode/app/ProgrammaticActivity.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,22 @@ import androidx.appcompat.app.AlertDialog
1212
import androidx.appcompat.app.AppCompatActivity
1313
import androidx.core.app.ActivityCompat
1414
import androidx.core.content.ContextCompat
15-
import kotlinx.android.synthetic.main.activity_programmatic.*
1615
import uk.co.brightec.kbarcode.Barcode
1716
import uk.co.brightec.kbarcode.BarcodeView
1817
import uk.co.brightec.kbarcode.Options
18+
import uk.co.brightec.kbarcode.app.databinding.ActivityProgrammaticBinding
1919

2020
internal class ProgrammaticActivity :
2121
AppCompatActivity(), ActivityCompat.OnRequestPermissionsResultCallback {
2222

23+
private lateinit var binding: ActivityProgrammaticBinding
2324
private lateinit var barcodeView: BarcodeView
2425

2526
override fun onCreate(savedInstanceState: Bundle?) {
2627
super.onCreate(savedInstanceState)
27-
setContentView(R.layout.activity_programmatic)
28+
binding = ActivityProgrammaticBinding.inflate(layoutInflater)
29+
val view = binding.root
30+
setContentView(view)
2831
window.decorView.setBackgroundColor(ContextCompat.getColor(this, R.color.black))
2932
setTitle(R.string.title_programmatic)
3033

@@ -44,7 +47,7 @@ internal class ProgrammaticActivity :
4447
.clearFocusDelay(BarcodeView.CLEAR_FOCUS_DELAY_DEFAULT)
4548
.build()
4649
)
47-
frame_container.addView(barcodeView)
50+
binding.frameContainer.addView(barcodeView)
4851

4952
lifecycle.addObserver(barcodeView)
5053

@@ -53,7 +56,7 @@ internal class ProgrammaticActivity :
5356
for (barcode in barcodes) {
5457
builder.append(barcode.displayValue).append("\n")
5558
}
56-
text_barcodes.text = builder.toString()
59+
binding.textBarcodes.text = builder.toString()
5760
}
5861

5962
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)

app/src/main/java/uk/co/brightec/kbarcode/app/XmlActivity.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,29 @@ import androidx.appcompat.app.AlertDialog
1010
import androidx.appcompat.app.AppCompatActivity
1111
import androidx.core.app.ActivityCompat
1212
import androidx.core.content.ContextCompat
13-
import kotlinx.android.synthetic.main.activity_xml.*
13+
import uk.co.brightec.kbarcode.app.databinding.ActivityXmlBinding
1414

1515
internal class XmlActivity :
1616
AppCompatActivity(), ActivityCompat.OnRequestPermissionsResultCallback {
1717

18+
private lateinit var binding: ActivityXmlBinding
19+
1820
override fun onCreate(savedInstanceState: Bundle?) {
1921
super.onCreate(savedInstanceState)
20-
setContentView(R.layout.activity_xml)
22+
binding = ActivityXmlBinding.inflate(layoutInflater)
23+
val view = binding.root
24+
setContentView(view)
2125
window.decorView.setBackgroundColor(ContextCompat.getColor(this, R.color.black))
2226
setTitle(R.string.title_xml)
2327

24-
lifecycle.addObserver(view_barcode)
28+
lifecycle.addObserver(binding.viewBarcode)
2529

26-
view_barcode.barcodes.observe(this) { barcodes ->
30+
binding.viewBarcode.barcodes.observe(this) { barcodes ->
2731
val builder = StringBuilder()
2832
for (barcode in barcodes) {
2933
builder.append(barcode.displayValue).append("\n")
3034
}
31-
text_barcodes.text = builder.toString()
35+
binding.textBarcodes.text = builder.toString()
3236
}
3337

3438
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
@@ -47,7 +51,7 @@ internal class XmlActivity :
4751
REQUEST_PERMISSION_CAMERA -> if (
4852
grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED
4953
) {
50-
view_barcode.start()
54+
binding.viewBarcode.start()
5155
}
5256
else ->
5357
super.onRequestPermissionsResult(requestCode, permissions, grantResults)

app/src/main/java/uk/co/brightec/kbarcode/app/camerax/CameraXActivity.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ import androidx.camera.core.Preview
1919
import androidx.camera.lifecycle.ProcessCameraProvider
2020
import androidx.core.app.ActivityCompat
2121
import androidx.core.content.ContextCompat
22-
import kotlinx.android.synthetic.main.activity_camerax.*
23-
import kotlinx.android.synthetic.main.activity_camerax.text_barcodes
24-
import kotlinx.android.synthetic.main.activity_programmatic.*
2522
import uk.co.brightec.kbarcode.app.R
23+
import uk.co.brightec.kbarcode.app.databinding.ActivityCameraxBinding
2624
import java.util.concurrent.ExecutionException
2725
import java.util.concurrent.ExecutorService
2826
import java.util.concurrent.Executors
@@ -32,12 +30,15 @@ internal class CameraXActivity :
3230

3331
private val tag = CameraXActivity::class.simpleName ?: "CameraXActivity"
3432

33+
private lateinit var binding: ActivityCameraxBinding
3534
private lateinit var cameraExecutor: ExecutorService
3635
private lateinit var camera: Camera
3736

3837
override fun onCreate(savedInstanceState: Bundle?) {
3938
super.onCreate(savedInstanceState)
40-
setContentView(R.layout.activity_camerax)
39+
binding = ActivityCameraxBinding.inflate(layoutInflater)
40+
val view = binding.root
41+
setContentView(view)
4142
setTitle(R.string.title_camerax)
4243

4344
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
@@ -105,7 +106,7 @@ internal class CameraXActivity :
105106
val previewUseCase = Preview.Builder()
106107
.build()
107108
.also {
108-
it.setSurfaceProvider(preview.surfaceProvider)
109+
it.setSurfaceProvider(binding.preview.surfaceProvider)
109110
}
110111
val imageAnalyzerUseCase = ImageAnalysis.Builder()
111112
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
@@ -118,7 +119,7 @@ internal class CameraXActivity :
118119
for (barcode in barcodes) {
119120
builder.append(barcode.displayValue).append("\n")
120121
}
121-
text_barcodes.text = builder.toString()
122+
binding.textBarcodes.text = builder.toString()
122123
}
123124
)
124125
}
@@ -135,7 +136,7 @@ internal class CameraXActivity :
135136
}
136137

137138
private fun setupTapToFocus() {
138-
preview.setOnTouchListener { view, event ->
139+
binding.preview.setOnTouchListener { view, event ->
139140
val actionMasked = event.actionMasked
140141
if (actionMasked == MotionEvent.ACTION_UP) {
141142
view.performClick()
@@ -146,7 +147,7 @@ internal class CameraXActivity :
146147
}
147148

148149
val cameraControl = camera.cameraControl
149-
val factory = preview.meteringPointFactory
150+
val factory = binding.preview.meteringPointFactory
150151
val point = factory.createPoint(event.x, event.y)
151152
val action = FocusMeteringAction.Builder(point, FocusMeteringAction.FLAG_AF)
152153
.addPoint(point, FocusMeteringAction.FLAG_AE)

app/src/main/java/uk/co/brightec/kbarcode/app/viewfinder/ViewfinderFragment.kt

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,16 @@ import androidx.core.app.ActivityCompat
1414
import androidx.core.content.ContextCompat
1515
import androidx.fragment.app.Fragment
1616
import androidx.lifecycle.ViewModelProvider
17-
import kotlinx.android.synthetic.main.fragment_viewfinder.*
1817
import uk.co.brightec.kbarcode.app.R
18+
import uk.co.brightec.kbarcode.app.databinding.FragmentViewfinderBinding
1919

2020
internal class ViewfinderFragment : Fragment() {
2121

22+
private var _binding: FragmentViewfinderBinding? = null
23+
24+
// This property is only valid between onCreateView and onDestroyView.
25+
private val binding get() = _binding!!
26+
2227
@VisibleForTesting
2328
lateinit var viewModel: ViewfinderViewModel
2429

@@ -35,35 +40,38 @@ internal class ViewfinderFragment : Fragment() {
3540
inflater: LayoutInflater,
3641
container: ViewGroup?,
3742
savedInstanceState: Bundle?
38-
): View? = inflater.inflate(R.layout.fragment_viewfinder, container, false)
43+
): View {
44+
_binding = FragmentViewfinderBinding.inflate(inflater, container, false)
45+
return binding.root
46+
}
3947

4048
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
4149
requireActivity().setTitle(R.string.title_viewfinder)
4250

43-
lifecycle.addObserver(view_barcode)
51+
lifecycle.addObserver(binding.viewBarcode)
4452

45-
viewModel.setData(view_barcode.barcode)
53+
viewModel.setData(binding.viewBarcode.barcode)
4654
viewModel.barcode.observe(viewLifecycleOwner) { resource ->
4755
when (resource) {
4856
is Resource.Success -> {
49-
progress.visibility = View.GONE
57+
binding.progress.visibility = View.GONE
5058
val barcode = resource.data
5159
Toast.makeText(
5260
requireContext(), barcode.displayValue, Toast.LENGTH_SHORT
5361
).show()
54-
view_barcode.resume()
62+
binding.viewBarcode.resume()
5563
}
5664
is Resource.Error -> {
57-
progress.visibility = View.GONE
65+
binding.progress.visibility = View.GONE
5866
Toast.makeText(
5967
requireContext(),
6068
R.string.error_processing_barcode, Toast.LENGTH_SHORT
6169
).show()
62-
view_barcode.resume()
70+
binding.viewBarcode.resume()
6371
}
6472
is Resource.Loading -> {
65-
view_barcode.pause()
66-
progress.visibility = View.VISIBLE
73+
binding.viewBarcode.pause()
74+
binding.progress.visibility = View.VISIBLE
6775
}
6876
}
6977
}
@@ -75,6 +83,11 @@ internal class ViewfinderFragment : Fragment() {
7583
}
7684
}
7785

86+
override fun onDestroyView() {
87+
_binding = null
88+
super.onDestroyView()
89+
}
90+
7891
override fun onRequestPermissionsResult(
7992
requestCode: Int,
8093
permissions: Array<String>,
@@ -84,7 +97,7 @@ internal class ViewfinderFragment : Fragment() {
8497
REQUEST_PERMISSION_CAMERA -> if (
8598
grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED
8699
) {
87-
view_barcode.start()
100+
binding.viewBarcode.start()
88101
}
89102
else ->
90103
super.onRequestPermissionsResult(requestCode, permissions, grantResults)

0 commit comments

Comments
 (0)