Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Edistynyt mobiiliohjelmointi, 14.4.2023
- // lokalisointi
- Android Studio vasen ylänurkka -> Vaihda 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 avata minkä vain strings.xml-tiedoston, ja klikata oikeasta ylänurkasta "Open editor".
- Jos editori sekoilee, Clean project -> Rebuild project.
- Tehdään uusi käännös nimeltä "greeting_text", arvoiksi:
- Default: Welcome!
- English: Welcome!
- Finnish: Tervetuloa!
- Ja kokeillaan käyttää esim. HomeFragmentissa:
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:text="@string/greeting_text"
- android:textSize="30sp"
- android:textStyle="bold"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
- Nyt jos emulaattorissa vaihtaa asetuksista kielen suomeksi, vaihtuu myös tervetuloteksti ulkoasussa.
- // tehdään myös uusi kansio res-kansioon -> layout-sw720dp , ja kopioidaan sinne fragment_home.xml.
- // idea on se että tehdään tästä fragmentista oma versio isoille tableteille (yli 10" näyttö)
- // tehdään tabletin ulkoasuun isompi teksti, kursivoituna ja eri värisenä:
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:text="@string/greeting_text"
- android:textColor="#2BAABA"
- android:textSize="140sp"
- android:textStyle="bold|italic"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
- #######################################
- AA CHART KOTLIN -testailua
- #######################################
- https://github.com/AAChartModel/AAChartCore-Kotlin
- jitpack pitää löyty settings.gradlesta (ks. viewien kustomointi -luentojen muistiinpanot)
- Ohjeen mukaan import:
- implementation 'com.github.AAChartModel:AAChartCore-Kotlin:-SNAPSHOT'
- Ei näemmä toimi enää, kokeillaan:
- implementation 'com.github.AAChartModel:AAChartCore-Kotlin:7.2.0'
- Tehdään tälle oma fragmentti, esim. ChartTestFragment , päävalikkoon myös. binding layer käyttöön.
- esim.
- class ChartTestFragment : Fragment() {
- // change this to match your fragment name
- private var _binding: FragmentChartTestBinding? = null
- // This property is only valid between onCreateView and
- // onDestroyView.
- private val binding get() = _binding!!
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- _binding = FragmentChartTestBinding.inflate(inflater, container, false)
- val root: View = binding.root
- // the binding -object allows you to access views in the layout, textviews etc.
- return root
- }
- override fun onDestroyView() {
- super.onDestroyView()
- _binding = null
- }
- }
- Ohjeen mukaan, lisätään ChartTestFragmentin ulkoasuun myös AAChartView:
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".ChartTestFragment">
- <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>
- </FrameLayout>
- // kokeillaan ChartTestFragmentin onCreateViewissä AAChartin toimivuutta:
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- _binding = FragmentChartTestBinding.inflate(inflater, container, false)
- val root: View = binding.root
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Area)
- .title("Sääasema / Ruotsi")
- .subtitle("Mittaukset")
- .dataLabelsEnabled(true)
- .series(arrayOf(
- AASeriesElement()
- .name("Tokyo")
- .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)),
- AASeriesElement()
- .name("NewYork")
- .data(arrayOf(0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5)),
- AASeriesElement()
- .name("London")
- .data(arrayOf(0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0)),
- AASeriesElement()
- .name("Berlin")
- .data(arrayOf(3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8))
- )
- )
- binding.aaChartView.aa_drawChartWithChartModel(aaChartModel)
- // the binding -object allows you to access views in the layout, textviews etc.
- return root
- }
- // versio 2, tehdään lista mikä pitää kirjaa lämpötiloista:
- // This property is only valid between onCreateView and
- // onDestroyView.
- private val binding get() = _binding!!
- // tehdään lista, johon voidaan kerätä lämpötiloja
- val temperatureList = mutableListOf<Double>()
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- _binding = FragmentChartTestBinding.inflate(inflater, container, false)
- val root: View = binding.root
- temperatureList.add(3.5)
- temperatureList.add(4.7)
- temperatureList.add(2.9)
- temperatureList.add(6.7)
- temperatureList.add(12.6)
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Line)
- .title("Sääasema / Ruotsi")
- .subtitle("Mittaukset")
- .dataLabelsEnabled(true)
- .series(arrayOf(
- AASeriesElement()
- .name("Lämpötila")
- .data(temperatureList.toTypedArray())
- )
- )
- binding.aaChartView.aa_drawChartWithChartModel(aaChartModel)
- // the binding -object allows you to access views in the layout, textviews etc.
- return root
- }
- // säädetään myös ylä- ja alaraja chartille:
- // tehdään ChartModel, lämpötilan takia ylä- ja alaraja -40 -> 40
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Line)
- .title("Sääasema / Ruotsi")
- .subtitle("Mittaukset")
- .yAxisMin(-40)
- .yAxisMax(40)
- .dataLabelsEnabled(true)
- .series(arrayOf(
- AASeriesElement()
- .name("Lämpötila")
- .data(temperatureList.toTypedArray())
- )
- )
- // jos kytketään tämä esim. sääasemadataan (MQTT), voidaan tehdä esim. nyt näin:
- try {
- var item : WeatherStation = gson.fromJson(result, WeatherStation::class.java)
- // speedviewiä varten haetaan Float-muodossa lämpötila
- var temperature = item.d.get1().v.toDouble()
- // poistetaan ylimenevät numerot,
- // ettei lista kasva isommaksi kuin 12 numeroa
- while(temperatureList.size >= 12) {
- temperatureList.removeAt(0)
- }
- // lisätään lämpötila näkymään
- temperatureList.add(temperature)
- // tehdään AAChartin data uusiksi
- var newArray = arrayOf(
- AASeriesElement()
- .name("Lämpötila")
- .data(temperatureList.toTypedArray())
- )
- // ajetaan binding-layeria koskevat asia UI-threadissa erikseen
- activity?.runOnUiThread(java.lang.Runnable {
- // päivitetään AAChartin data
- binding.aaChartView.aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(newArray, false)
- })
- }
- catch (e : Exception) {
- Log.d("ADVTECH", e.message.toString())
- }
- // jos halutaan useampaa arvoa seurata:
- // tehdään listat, johon voidaan kerätä arvoja
- val temperatureList = mutableListOf<Double>()
- val humidityList = mutableListOf<Double>()
- onCreateView:
- // tehdään ChartModel, lämpötilan takia ylä- ja alaraja -40 -> 40
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Line)
- .title("Sääasema / Ruotsi")
- .subtitle("Mittaukset")
- .yAxisMin(-40)
- .yAxisMax(110)
- .dataLabelsEnabled(true)
- .series(arrayOf(
- AASeriesElement()
- .name("Lämpötila")
- .data(temperatureList.toTypedArray()),
- AASeriesElement()
- .name("Kosteus")
- .data(humidityList.toTypedArray()),
- AASeriesElement()
- .name("Ilmanpaine")
- .data(pressureList.toTypedArray())
- )
- )
- binding.aaChartView.aa_drawChartWithChartModel(aaChartModel)
- subscribe-koodissa:
- // speedviewiä varten haetaan Float-muodossa lämpötila
- var temperature = item.d.get1().v.toDouble()
- var humidity = item.d.get3().v.toDouble()
- // poistetaan ylimenevät numerot,
- // ettei lista kasva isommaksi kuin 12 numeroa
- while(temperatureList.size >= 12) {
- temperatureList.removeAt(0)
- }
- // poistetaan ylimenevät numerot,
- // ettei lista kasva isommaksi kuin 12 numeroa
- while(humidityList.size >= 12) {
- humidityList.removeAt(0)
- }
- // lisätään lämpötila näkymään
- temperatureList.add(temperature)
- humidityList.add(humidity)
- // tehdään AAChartin data uusiksi
- var newArray = arrayOf(
- AASeriesElement()
- .name("Lämpötila")
- .data(temperatureList.toTypedArray()),
- AASeriesElement()
- .name("Kosteus")
- .data(humidityList.toTypedArray())
- )
- // ajetaan binding-layeria koskevat asia UI-threadissa erikseen
- activity?.runOnUiThread(java.lang.Runnable {
- // päivitetään AAChartin data
- binding.aaChartView.aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(newArray, false)
- })
- // jos haluat lisätä zoomaustuen ChartModeliin, kokeile lisätä luontivaiheessa:
- .zoomType(AAChartZoomType.Y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement