Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

View tramite binding #27

Merged
merged 1 commit into from
Jul 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions app/src/main/java/com/example/hueharvester/LineGraphFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import com.example.hueharvester.database.ColorData
import com.example.hueharvester.databinding.FragmentLineGraphBinding
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
Expand All @@ -33,23 +34,22 @@ import com.github.mikephil.charting.data.LineDataSet
*/
class LineGraphFragment : Fragment() {

private lateinit var lineChart: LineChart
private var _binding: FragmentLineGraphBinding? = null
private val binding get() = _binding!!
private var redData: List<Entry> = emptyList()
private var greenData: List<Entry> = emptyList()
private var blueData: List<Entry> = emptyList()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
): View {
//Log.d(TAG, "$TAG onCreateView")
_binding = FragmentLineGraphBinding.inflate(inflater, container, false)

val view = inflater.inflate(R.layout.fragment_line_graph, container, false)

lineChart = view.findViewById(R.id.line_chart)
val textColor = ContextCompat.getColor(requireContext(), R.color.chart_text)

lineChart.apply {
binding.lineChart.apply {
setNoDataText(getString(R.string.no_data_text))
setTouchEnabled(true)
setScaleEnabled(true)
Expand All @@ -71,7 +71,7 @@ class LineGraphFragment : Fragment() {

drawGraph()

return view
return binding.root
}

/**
Expand Down Expand Up @@ -110,8 +110,8 @@ class LineGraphFragment : Fragment() {
setDrawCircles(false)
}
LineData(redDataSet, greenDataSet, blueDataSet).apply {
lineChart.data = this
lineChart.moveViewToX(this.entryCount.toFloat())
binding.lineChart.data = this
binding.lineChart.moveViewToX(this.entryCount.toFloat())
}
//Log.d(TAG, "$TAG updateGraph")
}
Expand Down Expand Up @@ -163,6 +163,11 @@ class LineGraphFragment : Fragment() {
return Entry(bundle.getFloat("x"), bundle.getFloat("y"))
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}

companion object {
private const val TAG = "LineGraphFragment"
}
Expand Down
29 changes: 11 additions & 18 deletions app/src/main/java/com/example/hueharvester/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import androidx.viewpager.widget.ViewPager
import com.example.hueharvester.database.ColorData
import com.example.hueharvester.database.ColorDataViewModel
import com.example.hueharvester.database.ColorDataViewModelFactory
import com.google.android.material.tabs.TabLayout
import com.example.hueharvester.databinding.ActivityMainBinding
import org.opencv.android.OpenCVLoader
import org.opencv.core.CvType
import org.opencv.core.Mat
Expand All @@ -31,11 +31,9 @@ import java.lang.NullPointerException
*/
class MainActivity : AppCompatActivity() {

private lateinit var viewPager: ViewPager
private lateinit var tabLayout: TabLayout
private lateinit var binding: ActivityMainBinding
private lateinit var realTimeRGBFragment: RealTimeRGBFragment
private lateinit var lineGraphFragment: LineGraphFragment
private lateinit var cameraPreview: SurfaceView
private var camera: Camera? = null

private var isCameraReleased = true
Expand All @@ -56,22 +54,19 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
//Log.d(MAIN, "onCreate")

setContentView(R.layout.activity_main)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

// Initialize OpenCV
if (!OpenCVLoader.initDebug())
Log.e(MAIN, "Unable to load OpenCV!")
else
Log.d(MAIN, "OpenCV loaded Successfully!")

cameraPreview = findViewById(R.id.camera_preview)
viewPager = findViewById(R.id.view_pager)
tabLayout = findViewById(R.id.tab_layout)
setupViewPager(binding.viewPager)
binding.tabLayout.setupWithViewPager(binding.viewPager, true)

setupViewPager(viewPager)
tabLayout.setupWithViewPager(viewPager, true)

val adapter = viewPager.adapter as ViewPagerAdapter
val adapter = binding.viewPager.adapter as ViewPagerAdapter
realTimeRGBFragment = adapter.getFragment(0) as RealTimeRGBFragment
lineGraphFragment = adapter.getFragment(1) as LineGraphFragment

Expand Down Expand Up @@ -163,8 +158,7 @@ class MainActivity : AppCompatActivity() {
*/
private fun setupCameraPreview() {
//Log.v(MAIN, "Setting up camera preview")
val holder: SurfaceHolder = cameraPreview.holder

val holder: SurfaceHolder = binding.cameraPreview.holder
holder.addCallback(object : SurfaceHolder.Callback {
override fun surfaceCreated(holder: SurfaceHolder) {
//Log.i(MAIN, "Surface created")
Expand All @@ -179,9 +173,8 @@ class MainActivity : AppCompatActivity() {
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
if (isSurfaceCreated) { // possible calling of surfaceChanged before surfaceCreated
//Log.i(MAIN, "Surface changed from [${savedPreviewSize?.get(0)} x ${savedPreviewSize?.get(1)}] to [$width x $height]")
if (camera != null && (width != savedPreviewSize?.get(0) || height != savedPreviewSize?.get(
1
))
if (camera != null &&
(width != savedPreviewSize?.get(0) || height != savedPreviewSize?.get(1))
) {
//Log.v(MAIN, "surfaceChanged calls initializeCameraAsync")
camera?.stopPreview()
Expand Down Expand Up @@ -356,7 +349,7 @@ class MainActivity : AppCompatActivity() {
Toast.makeText(this, getString(R.string.camera_permission_granted), Toast.LENGTH_SHORT).show()
//Log.i(MAIN, "Camera permission granted")
//Log.v(MAIN, "requestCameraPermission calls initializeCameraAsync")
initializeCamera(cameraPreview.holder)
initializeCamera(binding.cameraPreview.holder)
} else {
Toast.makeText(this, getString(R.string.camera_permission_required), Toast.LENGTH_SHORT).show()
}
Expand Down
43 changes: 24 additions & 19 deletions app/src/main/java/com/example/hueharvester/RealTimeRGBFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import com.example.hueharvester.databinding.FragmentRgbValuesBinding

/**
* A simple [Fragment] subclass.
Expand All @@ -27,24 +29,21 @@ import androidx.fragment.app.Fragment
*/
class RealTimeRGBFragment : Fragment() {

private lateinit var redTextView: TextView
private lateinit var greenTextView: TextView
private lateinit var blueTextView: TextView
private lateinit var averageColorTextView: TextView
private var _binding: FragmentRgbValuesBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_rgb_values, container, false)
): View {
_binding = FragmentRgbValuesBinding.inflate(inflater, container, false)

redTextView = view.findViewById<TextView?>(R.id.red_text_view).apply { text = getString(R.string.red_txt, NA) }
greenTextView = view.findViewById<TextView?>(R.id.green_text_view).apply { text = getString(R.string.green_txt, NA) }
blueTextView = view.findViewById<TextView?>(R.id.blue_text_view).apply { text = getString(R.string.blue_txt, NA) }
averageColorTextView = view.findViewById(R.id.average_color_text_view)
binding.redTextView.apply { text = getString(R.string.red_txt, NA) }
binding.greenTextView.apply { text = getString(R.string.green_txt, NA) }
binding.blueTextView.apply { text = getString(R.string.blue_txt, NA) }

//Log.d(TAG, "$TAG onCreateView")
return view
return binding.root
}

/**
Expand All @@ -57,26 +56,27 @@ class RealTimeRGBFragment : Fragment() {
* @param b the blue value
*/
fun updateRGBValues(r: Int, g: Int, b: Int) {
redTextView.apply {
val textColor = ContextCompat.getColor(requireContext(), R.color.white)
binding.redTextView.apply {
text = getString(R.string.red_txt, r.toString())
setTextColor(Color.WHITE)
setTextColor(textColor)
updateDrawableColor(this, Color.rgb(r, 0, 0))
}

greenTextView.apply {
binding.greenTextView.apply {
text = getString(R.string.green_txt, g.toString())
setTextColor(Color.WHITE)
setTextColor(textColor)
updateDrawableColor(this, Color.rgb(0, g, 0))
}
blueTextView.apply {
binding.blueTextView.apply {
text = getString(R.string.blue_txt, b.toString())
setTextColor(Color.WHITE)
setTextColor(textColor)
updateDrawableColor(this, Color.rgb(0, 0, b))

}
averageColorTextView.apply {
binding.averageColorTextView.apply {
text = getString(R.string.avg_color_txt)
setTextColor(Color.WHITE)
setTextColor(textColor)
updateDrawableColor(this, Color.rgb(r, g, b))
}
}
Expand All @@ -91,6 +91,11 @@ class RealTimeRGBFragment : Fragment() {
background.setColor(color)
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}

companion object {
private const val NA = "N/A"
private const val TAG = "RealTimeRGBFragment"
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/layout-land/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
android:layout_height="match_parent"
tools:context=".MainActivity">


<!-- Camera preview SurfaceView -->
<SurfaceView
android:id="@+id/camera_preview"
Expand Down
8 changes: 0 additions & 8 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,6 @@
android:layout_height="match_parent"
tools:context=".MainActivity">

<!--<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintLeft_toLeftOf="@id/view_pager" />-->


<!-- Camera preview SurfaceView -->
<SurfaceView
android:contentDescription="@string/camera_preview_content"
Expand Down
9 changes: 5 additions & 4 deletions app/src/main/res/layout/fragment_rgb_values.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
android:layout_height="match_parent"
android:text="@string/red_txt"
android:textSize="25sp"
android:textColor="@color/black"
android:textColor="@color/rgb_text"
android:background="@drawable/border_red"
android:gravity="center"/>
</FrameLayout>
Expand All @@ -31,7 +31,7 @@
android:layout_height="match_parent"
android:text="@string/green_txt"
android:textSize="25sp"
android:textColor="@color/black"
android:textColor="@color/rgb_text"
android:background="@drawable/border_green"
android:gravity="center"/>
</FrameLayout>
Expand All @@ -46,7 +46,7 @@
android:layout_height="match_parent"
android:text="@string/blue_txt"
android:textSize="25sp"
android:textColor="@color/black"
android:textColor="@color/rgb_text"
android:background="@drawable/border_blue"
android:gravity="center"/>
</FrameLayout>
Expand All @@ -61,9 +61,10 @@
android:layout_height="match_parent"
android:text="@string/avg_color_txt"
android:textSize="25sp"
android:textColor="@color/black"
android:textColor="@color/rgb_text"
android:background="@drawable/border_gray"
android:gravity="center"/>
</FrameLayout>

</LinearLayout>

1 change: 1 addition & 0 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Hue Harvester (IT)</string>
<string name="RGB_values">Valori RGB</string>
<string name="line_graph">Grafico lineare</string>
<string name="no_data_text">Caricamento dati…</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-night/colors.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="chart_text">#FFFFFF</color>
<color name="rgb_text">#FFFFFF</color>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@
<color name="blue">#0000FF</color>
<color name="gray">#808080</color>
<color name="chart_text">#000000</color>
<color name="rgb_text">#000000</color>

</resources>
2 changes: 1 addition & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<resources>
<string name="app_name" translatable="false">Hue Harvester</string>
<string name="app_name">Hue Harvester (EN)</string>
<string name="RGB_values">RGB Values</string>
<string name="line_graph">Line Graph</string>
<string name="no_data_text">Loading data…</string>
Expand Down
Loading