Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Edistynyt mobiiliohjelmointi, 30.3.2023
- // lokalisaatiot
- Android Studiosta vasen ylänurkka -> Android-näkymä -> Project-näkymäksi
- Tehdään app -> src -> main -> res -kansioon kaksi uutta kansiota:
- values-en
- values-fi
- Kopioidaan values-kansion strings.xml kumpaankin kansioon pohjaksi. Tämän jälkeen voit valita minkä tahansa values.xml tiedoston, ja klikata oikeasta ylänurkasta "Open Editor". Tee uusi käännös id:llä greeting_text -> arvo englanniksi "Welcome!" ja Suomeksi "Tervetuloa!"
- Kokeillaan greeting_textiä esim. TextViewissä ja HomeFragmentissa:
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:text="@string/greeting_text"
- android:textSize="32sp"
- android:textStyle="bold"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
- Tämän jälkeen Welcome-tekstin pitäisi muuttua jos vaihdat emulaattorin kieleksi suomen.
- // tehdään myös erikoiskansio 10" -tablettien ulkoasulle -> layout-sw720dp , ja kopioidaan fragment_home.xml sinne. Muutetaan Welcome-textview isommaksi, eri väriseksi ja kursivoiduksi:
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:text="@string/greeting_text"
- android:textColor="#B159E1"
- android:textSize="140sp"
- android:textStyle="bold|italic"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
- Jos nyt kokeilet käyttää sovellusta 10" -tabletin emulaattorilla, huomaat että se käyttää tätä erikseen 10" -tableteille tehtyä ulkoasua.
- ######################################################################
- AAChart-Kotlin -plugin, testailua
- https://github.com/AAChartModel/AAChartCore-Kotlin
- ######################################################################
- import vaatii jitpack.io:n settings.gradleen, sen jälkeen import normaalisti:
- implementation 'com.github.AAChartModel:AAChartCore-Kotlin:-SNAPSHOT'
- Tätä testaamista varten tehtiin oma fragment: ChartFragment, lisättiin päävalikkoon ja otettiin binding layer käyttöön
- Frgmentin ulkoasuun tarvitaan chartin xml:
- <com.github.aachartmodel.aainfographics.aachartcreator.AAChartView
- android:id="@+id/aa_chart_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- </com.github.aachartmodel.aainfographics.aachartcreator.AAChartView>
- Fragmentissa, voidaan esim lisätä listaan numeroita ja piirtää se charttiin:
- val temperatureList = mutableListOf<Double>()
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- _binding = FragmentChartBinding.inflate(inflater, container, false)
- val root: View = binding.root
- // the binding -object allows you to access views in the layout, textviews etc.
- // jos kytket tämän reaaliaikaiseen sääasemadataan, kommentoi nämä esimerkkidatarivit pois
- temperatureList.add(5.5)
- temperatureList.add(4.5)
- temperatureList.add(7.5)
- temperatureList.add(3.5)
- temperatureList.add(4.5)
- temperatureList.add(6.5)
- temperatureList.add(9.5)
- temperatureList.add(11.5)
- // .data(arrayOf(7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6))
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Line)
- .title("MQTT Weather Station")
- .subtitle("Sweden")
- .dataLabelsEnabled(true)
- .series(arrayOf(
- AASeriesElement()
- .name("Tokyo")
- .data(temperatureList.toTypedArray())
- )
- )
- //The chart view object calls the instance object of AAChartModel and draws the final graphic
- binding.aaChartView.aa_drawChartWithChartModel(aaChartModel)
- return root
- }
- ###################################################################################
- testi, sääasemadata ja Chart
- Tässä testissä kopioitiin MQTT-logiikka WeatherStationFragmentista -> ChartFragment
- ###################################################################################
- ///////////////////////////
- // VERSIO 1: yksi graafi
- ///////////////////////////
- // luodaan tyhjä lista mittauslukuja varten
- val temperatureList = mutableListOf<Double>()
- onCreateView:
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Line)
- .title("MQTT Weather Station")
- .subtitle("Sweden")
- .dataLabelsEnabled(true)
- .series(arrayOf(
- AASeriesElement()
- .name("Temperature")
- .data(temperatureList.toTypedArray())
- )
- )
- //The chart view object calls the instance object of AAChartModel and draws the final graphic
- binding.aaChartView.aa_drawChartWithChartModel(aaChartModel)
- // kun MQTT-data tulee:
- var item : WeatherStation = gson.fromJson(result, WeatherStation::class.java)
- // haetaan lämpötila WeatherStation-objektin kautta
- var temperature = item.d.get1().v.toDouble()
- // jos liikaa tavaraa listassa, poistetaan ylimääräiset (raja = 12)
- while(temperatureList.size >= 12) {
- temperatureList.removeAt(0)
- }
- // lisätään uusi lämpötila listaan
- temperatureList.add(temperature)
- // luodaan Temperature-array AAChartia varten
- var newArray = arrayOf(
- AASeriesElement()
- .name("Temperature")
- .data(temperatureList.toTypedArray())
- )
- // päivitetään chart käyttöliittymään
- activity?.runOnUiThread(java.lang.Runnable {
- // aseta charttiin
- binding.aaChartView.aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(newArray, false)
- })
- ///////////////////////////
- // VERSIO 2: kaksi graafia
- ///////////////////////////
- // luodaan tyhjät listat mittauslukuja varten
- val temperatureList = mutableListOf<Double>()
- val pressureList = mutableListOf<Double>()
- onCreateView:
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Line)
- .title("MQTT Weather Station")
- .subtitle("Sweden")
- .dataLabelsEnabled(true)
- .series(arrayOf(
- AASeriesElement()
- .name("Temperature")
- .data(temperatureList.toTypedArray()),
- AASeriesElement()
- .name("Pressure")
- .data(pressureList.toTypedArray())
- )
- )
- //The chart view object calls the instance object of AAChartModel and draws the final graphic
- binding.aaChartView.aa_drawChartWithChartModel(aaChartModel)
- // kun MQTT-data tulee:
- var item : WeatherStation = gson.fromJson(result, WeatherStation::class.java)
- // haetaan lämpötila WeatherStation-objektin kautta
- // haetaan myös ilmanpaine
- var temperature = item.d.get1().v.toDouble()
- var pressure = item.d.get2().v.toDouble()
- // jos liikaa tavaraa listassa, poistetaan ylimääräiset (raja = 12)
- while(temperatureList.size >= 12) {
- temperatureList.removeAt(0)
- }
- // jos liikaa tavaraa listassa, poistetaan ylimääräiset (raja = 12)
- while(pressureList.size >= 12) {
- pressureList.removeAt(0)
- }
- // lisätään uusi lämpötila ja pressure listaan
- temperatureList.add(temperature)
- pressureList.add(pressure)
- // luodaan Temperature- ja Pressure-array AAChartia varten
- var newArray = arrayOf(
- AASeriesElement()
- .name("Temperature")
- .data(temperatureList.toTypedArray()),
- AASeriesElement()
- .name("Pressure")
- .data(pressureList.toTypedArray())
- )
- // päivitetään chart käyttöliittymään
- activity?.runOnUiThread(java.lang.Runnable {
- // aseta charttiin
- binding.aaChartView.aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(newArray, false)
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement