From d791327b73c19d0e149d2a7c31a1c67d39a078bd Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Sat, 11 Mar 2023 01:01:48 +0100 Subject: [PATCH] shake working with inventory and little popup :alembic: --- .idea/deploymentTargetDropDown.xml | 17 ++ .idea/vcs.xml | 6 + app/src/main/AndroidManifest.xml | 5 +- .../com/example/shakecraft/BossFragment.kt | 28 +-- .../com/example/shakecraft/CollectFragment.kt | 142 +++++++++--- .../example/shakecraft/InventoryFragment.kt | 15 +- .../com/example/shakecraft/MainActivity.kt | 5 +- .../java/com/example/shakecraft/data/Stub.kt | 13 +- .../example/shakecraft/model/GeneratorLoot.kt | 29 +++ .../java/com/example/shakecraft/model/Item.kt | 3 + .../com/example/shakecraft/model/Player.kt | 32 +++ .../view/adapter/AdapterInventory.kt | 9 + app/src/main/res/drawable/bronze_ore.png | Bin 0 -> 2065 bytes app/src/main/res/drawable/diamond.png | Bin 0 -> 2424 bytes app/src/main/res/drawable/iron_ore.png | Bin 0 -> 2022 bytes app/src/main/res/drawable/item_background.xml | 11 + app/src/main/res/drawable/log2.png | Bin 0 -> 2008 bytes .../main/res/drawable/toast_notification.xml | 9 + app/src/main/res/layout/fragment_collect.xml | 210 +++++++++++++++++- app/src/main/res/layout/list_item.xml | 11 +- app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 1 - 22 files changed, 455 insertions(+), 92 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 .idea/vcs.xml create mode 100644 app/src/main/java/com/example/shakecraft/model/GeneratorLoot.kt create mode 100644 app/src/main/java/com/example/shakecraft/model/Player.kt create mode 100644 app/src/main/res/drawable/bronze_ore.png create mode 100644 app/src/main/res/drawable/diamond.png create mode 100644 app/src/main/res/drawable/iron_ore.png create mode 100644 app/src/main/res/drawable/item_background.xml create mode 100644 app/src/main/res/drawable/log2.png create mode 100644 app/src/main/res/drawable/toast_notification.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..fd2a24b --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0269028..cf53e4e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,8 @@ - + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/shakecraft/BossFragment.kt b/app/src/main/java/com/example/shakecraft/BossFragment.kt index e29b92d..357e326 100644 --- a/app/src/main/java/com/example/shakecraft/BossFragment.kt +++ b/app/src/main/java/com/example/shakecraft/BossFragment.kt @@ -1,5 +1,6 @@ package com.example.shakecraft +import android.hardware.SensorManager import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater @@ -17,16 +18,10 @@ private const val ARG_PARAM2 = "param2" * create an instance of this fragment. */ class BossFragment : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } + } override fun onCreateView( @@ -37,23 +32,4 @@ class BossFragment : Fragment() { return inflater.inflate(R.layout.fragment_boss, container, false) } - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment BossFragment. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - BossFragment().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/example/shakecraft/CollectFragment.kt b/app/src/main/java/com/example/shakecraft/CollectFragment.kt index edb20ad..28d0a7c 100644 --- a/app/src/main/java/com/example/shakecraft/CollectFragment.kt +++ b/app/src/main/java/com/example/shakecraft/CollectFragment.kt @@ -1,59 +1,127 @@ package com.example.shakecraft +import android.annotation.SuppressLint +import android.content.Context +import android.content.Context.SENSOR_SERVICE +import android.content.pm.ActivityInfo +import android.hardware.Sensor +import android.hardware.SensorEvent +import android.hardware.SensorEventListener +import android.hardware.SensorManager import android.os.Bundle +import android.os.Vibrator import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.AlphaAnimation +import android.widget.ImageView +import android.widget.ProgressBar +import android.widget.TextView +import androidx.core.content.ContextCompat.getSystemService +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.shakecraft.data.Stub +import com.example.shakecraft.model.GeneratorLoot +import com.example.shakecraft.model.Player +import com.example.shakecraft.view.adapter.AdapterInventory +import kotlin.math.pow +import kotlin.math.sqrt -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" - -/** - * A simple [Fragment] subclass. - * Use the [CollectFragment.newInstance] factory method to - * create an instance of this fragment. - */ -class CollectFragment : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null + +class CollectFragment(var player: Player) : Fragment() { + var stubdata = Stub().load(); + private lateinit var sensorManager: SensorManager + private lateinit var accelerometer: Sensor + private lateinit var accelerometerEventListener: SensorEventListener + private lateinit var progressBar: ProgressBar override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } + + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_collect, container, false) - } + // Récupérez une référence à la ProgressBar dans la vue + val view = inflater.inflate(R.layout.fragment_collect, container, false) + + progressBar = view.findViewById(R.id.progressBar) + sensorManager = requireActivity().getSystemService(Context.SENSOR_SERVICE) as SensorManager + accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + + // Créez un écouteur de capteur d'accéléromètre pour écouter les secousses + accelerometerEventListener = object : SensorEventListener { + override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { + // Ne faites rien ici + } + + @SuppressLint("ServiceCast") + override fun onSensorChanged(event: SensorEvent?) { + val acceleration = sqrt( + event!!.values[0].pow(2) + event.values[1].pow(2) + event.values[2].pow(2) + ) + if(progressBar.progress == 100){ + val vibrator = context?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator + vibrator.vibrate(100) + + + + val item = GeneratorLoot.generateLootCollection(); + println(item); - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment CollectFragment. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - CollectFragment().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) + val maVue = view.findViewById(R.id.toast) + val image = maVue.findViewById(R.id.imageViewLoot) + val name = maVue.findViewById(R.id.nameLoot) + val xp = maVue.findViewById(R.id.xpRewarded) + maVue.visibility = View.VISIBLE + val fadeIn = AlphaAnimation(0f, 1f) + fadeIn.duration = 200 + maVue.startAnimation(fadeIn) + maVue.postDelayed({ + maVue.visibility = View.GONE + image.setImageResource(item.image) + name.text = item.name + + }, 3000) + + + player.addItem(item); + progressBar.progress = 0; + } + if (acceleration > 40) { + // Le téléphone a été secoué, mettre à jour la barre de chargement ici + progressBar.progress += (acceleration/20).toInt() // Incrémente la progression de la barre de 10 unités } } + } + + // Enregistrez l'écouteur de capteur d'accéléromètre + sensorManager.registerListener( + accelerometerEventListener, + accelerometer, + SensorManager.SENSOR_DELAY_GAME + ) + + + // Retournez la vue de fragment + return view + } + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + + val activity = requireActivity() + activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT + } + override fun onDestroy() { + super.onDestroy() + + // Désenregistrez l'écouteur de capteur d'accéléromètre lorsque le fragment est détruit + sensorManager.unregisterListener(accelerometerEventListener) + val activity = requireActivity() + activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED } } \ No newline at end of file diff --git a/app/src/main/java/com/example/shakecraft/InventoryFragment.kt b/app/src/main/java/com/example/shakecraft/InventoryFragment.kt index d156962..7592f22 100644 --- a/app/src/main/java/com/example/shakecraft/InventoryFragment.kt +++ b/app/src/main/java/com/example/shakecraft/InventoryFragment.kt @@ -8,22 +8,13 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.shakecraft.data.Stub +import com.example.shakecraft.model.Player import com.example.shakecraft.view.adapter.AdapterInventory -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" -/** - * A simple [Fragment] subclass. - * Use the [InventoryFragment.newInstance] factory method to - * create an instance of this fragment. - */ -class InventoryFragment : Fragment() { +class InventoryFragment(var player: Player) : Fragment( ) { - var stubdata = Stub().load(); override fun onCreateView( @@ -35,7 +26,7 @@ class InventoryFragment : Fragment() { val recyclerView: RecyclerView = view.findViewById(R.id.recyclerviewInventory) with(recyclerView) { layoutManager = LinearLayoutManager(view.context) - adapter = AdapterInventory(stubdata) + adapter = AdapterInventory(player.items) } return view } diff --git a/app/src/main/java/com/example/shakecraft/MainActivity.kt b/app/src/main/java/com/example/shakecraft/MainActivity.kt index 8da29ac..3c7b1ef 100644 --- a/app/src/main/java/com/example/shakecraft/MainActivity.kt +++ b/app/src/main/java/com/example/shakecraft/MainActivity.kt @@ -18,6 +18,7 @@ class MainActivity : AppCompatActivity() { private var progressValue = 20 private var lastShakePosition = 0f + var currentPlayer = Stub().currentPlayer; // Function to hide NavigationBar @RequiresApi(Build.VERSION_CODES.R) @@ -52,11 +53,11 @@ class MainActivity : AppCompatActivity() { true } R.id.inventory -> { - loadFragment(InventoryFragment()) + loadFragment(InventoryFragment(currentPlayer)) true } R.id.plus -> { - loadFragment(CollectFragment()) + loadFragment(CollectFragment(currentPlayer)) true } else -> false diff --git a/app/src/main/java/com/example/shakecraft/data/Stub.kt b/app/src/main/java/com/example/shakecraft/data/Stub.kt index c8023d2..c3de05e 100644 --- a/app/src/main/java/com/example/shakecraft/data/Stub.kt +++ b/app/src/main/java/com/example/shakecraft/data/Stub.kt @@ -1,17 +1,22 @@ package com.example.shakecraft.data +import com.example.shakecraft.R import com.example.shakecraft.model.Item +import com.example.shakecraft.model.Player class Stub { fun load() : List{ val items : MutableList = mutableListOf() - items.add(Item(name = "Beech Log", rarity = 0, stack = 1)); - items.add(Item(name = "Bronze Ore", rarity = 0, stack = 1)); - items.add(Item(name = "Iron Ore", rarity = 0, stack = 1)); - items.add(Item(name = "Diamond", rarity = 0, stack = 1)); + items.add(Item(name = "Beech Log", rarity = 0, stack = 1, R.drawable.ic_anvil)); + items.add(Item(name = "Bronze Ore", rarity = 0, stack = 1, R.drawable.ic_anvil)); + items.add(Item(name = "Iron Ore", rarity = 0, stack = 1, R.drawable.ic_anvil)); + items.add(Item(name = "Diamond", rarity = 0, stack = 1, R.drawable.ic_anvil)); return items; } + + var currentPlayer : Player = Player("Winker",0); + } \ No newline at end of file diff --git a/app/src/main/java/com/example/shakecraft/model/GeneratorLoot.kt b/app/src/main/java/com/example/shakecraft/model/GeneratorLoot.kt new file mode 100644 index 0000000..1f7208c --- /dev/null +++ b/app/src/main/java/com/example/shakecraft/model/GeneratorLoot.kt @@ -0,0 +1,29 @@ +package com.example.shakecraft.model + +import com.example.shakecraft.R +import kotlin.random.Random + +class GeneratorLoot { + + companion object { + fun generateLootCollection(): Item { + val possibleLoot: List> = listOf( + Pair(Item(name = "Beech Log", rarity = 0, stack = 1, R.drawable.log2), 0.6), + Pair(Item(name = "Bronze Ore", rarity = 0, stack = 1, R.drawable.bronze_ore), 0.25), + Pair(Item(name = "Iron Ore", rarity = 0, stack = 1, R.drawable.iron_ore), 0.10), + Pair(Item(name = "Diamond", rarity = 0, stack = 1, R.drawable.diamond), 0.05), + ) + val rand = Random.nextDouble() + + var cumulativeProb = 0.0 + for (element in possibleLoot) { + cumulativeProb += element.second + if (rand < cumulativeProb) { + return element.first + } + } + // Si aucun élément n'a été choisi, retourner le dernier élément de la liste + return possibleLoot.last().first + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/shakecraft/model/Item.kt b/app/src/main/java/com/example/shakecraft/model/Item.kt index ea6f857..f73a6a1 100644 --- a/app/src/main/java/com/example/shakecraft/model/Item.kt +++ b/app/src/main/java/com/example/shakecraft/model/Item.kt @@ -1,9 +1,12 @@ package com.example.shakecraft.model +import android.media.Image + data class Item( var name: String, var rarity: Int, var stack: Int, + var image: Int, ) diff --git a/app/src/main/java/com/example/shakecraft/model/Player.kt b/app/src/main/java/com/example/shakecraft/model/Player.kt new file mode 100644 index 0000000..ff7bc5e --- /dev/null +++ b/app/src/main/java/com/example/shakecraft/model/Player.kt @@ -0,0 +1,32 @@ +package com.example.shakecraft.model + +class Player(val pseudo: String, var xp: Int = 0) { + var level: Int = 1 + private set + + val items: MutableList = mutableListOf() + + fun addItem(item: Item) { + var findItem = items.find { it.name == item.name } + if(findItem!= null){ + findItem.stack += 1; + } + else{items.add(item)} + } + + fun removeItem(item: Item) { + items.remove(item) + } + + fun increaseXp(amount: Int) { + xp += amount + if (xp >= 100 * level) { + levelUp() + } + } + + private fun levelUp() { + level++ + println("$pseudo a atteint le niveau $level !") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/shakecraft/view/adapter/AdapterInventory.kt b/app/src/main/java/com/example/shakecraft/view/adapter/AdapterInventory.kt index 9e74a14..c1f9877 100644 --- a/app/src/main/java/com/example/shakecraft/view/adapter/AdapterInventory.kt +++ b/app/src/main/java/com/example/shakecraft/view/adapter/AdapterInventory.kt @@ -3,6 +3,7 @@ package com.example.shakecraft.view.adapter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.Adapter @@ -15,13 +16,21 @@ class AdapterInventory(private val inventory: List) : RecyclerView.Adapter class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { val textView: TextView + val textViewNumber: TextView + var imageView: ImageView + init { // Define click listener for the ViewHolder's View + textView = view.findViewById(R.id.item_name) + textViewNumber = view.findViewById(R.id.item_stock) + imageView = view.findViewById(R.id.item_image) } fun bind(item: Item) { textView.text = item.name + textViewNumber.text = item.stack.toString() + imageView.setImageResource(item.image) } } diff --git a/app/src/main/res/drawable/bronze_ore.png b/app/src/main/res/drawable/bronze_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe78d9cd7d060de9c1386f359d24b826d9f26e1 GIT binary patch literal 2065 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

yxtGp2bcMc(d z!<0*;kNauUoprnb?ZY~t|BH}B3 zA8KqauSO@C;%g!)cDGpa@DPN=J^eia1o%38_L+_B%98-KFG(A@{F;Xk`8k9&ak&f+ z*sWAvD7jw)3u*3MI+_(E$Jm_rL=s?t%9glQMy(XS9wz?#3a`Q4jTo|Z(@XpEmQ2sV z^eps`iod_J?U1$EmnEi+3~Jxaa-nL%rMN@sW3NA!Qt5<=;4jejLrDJtNk`Xh3Bc9- z?JJwp0#3R?bwpnr+L8|GV|}$QlB%aUxUYXrR*`9!dhwQ8s}`Ocv_c1R$^!l<(=T-k zxM&ET`Cl=?6uX#|HX#||(dzkLbJMXX<$zTCm?6=f++BBG*0i^K*31d^7cujTTJrO= zM&2ed9W3pD?BM5^7{YWGa*k~fw<62THC|&PP6lFTG6O0UDPsR*zp_fOP+ddc%FG=? z*y_mHHYz{$Z9D5 zr!aP&((T_VL9>aQaQ@5J$PM+GeQ0RL>wqC({ni#BQcgH(DItyrAXk_7Hl4wdNiv9> zrFi*Pv?)lB_cQR-HIOHRHMUN$OR=N*SGruA*W3fftr{g^VM%5v@&|)STiB#;o(>k7 zUvI6{CtF6%usFG^s8iOga@Q~T^oTT!;h;~88pHvwFiYv>>HeiP8{1=c<_JUYNc>*! zYsZH2KA#wFG=r6%j7z7&_GPDBr`J>Nx%9ODU*{Bhr)PIAZTLt&iXc;ZOhEVpRUcPg z!CJag9g3!@`mv$l>TO@Uwo4A9r+W#`oGK0XM9S-uhklYoPUe`e2|r5gO1#wUW&1Mm zff?1-8^=4-?V~%&XY-uqF4)eAce)8)S!Clau|kROPQG#r~$5W#sx|i#-hLL_DNtOV3a;up?kdE82xj-a5F|@chgi7rD45&8X2N^9 zi^0%?}_WzkMh( zg(VHPHGy>;eMq{O)9O?meaX{Vf@MpLumO+Bbt_h}kl4DAkd$|%6AYp&-qC6ywxgsk z4v=f{1XXJoP#-bv|#;<5cJnE_mmVhhMmQWtb8ih0|(jdChS$%;DeWo~{=jwANY#nD~(KlPsy;kzd!~GOcZ~dD9n_?v5A8zg~cGY*NljN>${*YyFhw z4_g=$c;5FG*=l=r?lby9inB4ma6bVX!zFJQ#vECoV4!BzlYN?NY)6|8f1(xg1rsiogRjMQ7{!Z>EI zXGiIFG<>jv*qqL3$QyZnhP8Xh++Zs8yvw@b_&9m~vF_}t5W`)sfz`a?GiAKYxqTIH z#ox=2zWiqZ=qGY`+v5Fu+$EU#kb1W%nzt9D_t+EAPc6b-ESFe0;xzSfpt{k@-eo6!EP<=jTz$6#Q9tkHtRTRL^hoe0aTh^+pNLlpu3AW4xz< zF#Wi4!IKGJJty(jJd>HL|8NQ6zJ4rgJ8+I_&k^IuF@nS+9(%L%hZaVDi#vx6Ffv;X z7quHDxz(x>6czf^xXY?>`uzOmPYkngCKjZcX zZUymM6Ex+rgz}6i#bpz8>j?TNw^aWJsymbU6)BWa)}3*~XT2m2h*6jR*=}yW(iz7{ VqY@f$?K>YO5odc>JCaQx=5NC(m1_V1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/iron_ore.png b/app/src/main/res/drawable/iron_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a7a168abf2f6ffed3e53b9ae08c20be4f8cb20 GIT binary patch literal 2022 zcmY+Fdpr~T9>>SjL>fY#Cz<=m{ZyL!rLDOw>?F4x5SVkRqd zOUWg=@?c@P&TT?NCTBh8Jg;+}Kfd4Z>-YQX^ZS0^zwal*`3zD*>~}E$03cy!3r7oT zq9CxMdj%O4`+mQm?2EAVxC#I$!+wPjf^6t3xD>jIM%n;s`xQ8XgGjJ7${GNuBZ~9S z?*RZnH|*fnXQPFd3Y{*f4jt)geV83Eybxc%L1c0?>b=6BjdtL8lJ+HE&~v4a0yw32 z8`E?fBxAdA=nqBn=sC1~zCx_tI(n|E)Iq88t@IVqVYL@&YUHKwp59blkH*EiXe+h+M&n#X(l@5Rg>C6!mhIZ z<=Sq+M>{|V_bENptcD5W`VuWu_1Dlki`S!DHQ6NC#%SwJDt}}AOIxKHa5XheMM*}e zR8&+`I7#tEvYLh%Fd94mNdDMqXz4)1t3T*Na@48ft&qN=nxLzbL}Di4+Uc}318MJz zD`sH&lDT2fH469VVpa7TdXfK1eDadTGPa=YW!V?W(NRo@AMFGDB*#mNA2D;@7?y+K zmgo06X+PL}2zGNdFxMr_uYbC1CgXkaDHhc8LfenxS>uyZfw}8v`IBet=$O^nBQf57 z!ruG7CH;@h%jmAc;>9NR$z>CPHzwQvGo|o1K-k{FkQ#eJIDwOcD|e zhmEnaGcUma z*G{^XXv%8MXeBn04Ry_B6I&YgU9740__(rLVYY2?!mX={1|{vi+6vssYKC2-86;h? z?pM*%r{eY6A~DT$??Vg6<+xu5wPGX!wtf_X`k@ku5dIAgBY5^b;(wxr5LWLhdwb(X zQ$2FO5XnwdFQ_t7s&wIWgPLPzOcCGAvO37%n6bv|q$Q(4Zx1>DEcIFQq?MbL=LJ?` z?{-+$yZ90^Ht`|FYlL?vy=c!TX*daPl+(U=*+b;|!uDewEWYkNHGbcNIKC( zau1LO6vihcs3?{ENutFy&@fvVrRQOZy{N=PA*<18Sa z$2sugfJwRGt~vWf9|->ckWy&xTw&4N93p7yT1KHJlc%;Y6xQLh=TW^5Evs2SChi#Q zha?^z&@RyI8Q4zi@Xa#)FzOGgaPdHWn35;;xd z2X*}ZQuD?AyO`%Iq-LWJ^X^SdrC`P61XI!*DFOWdWvgA8k<4H?5P!66G|14xsb=%2 zo?y|Ii)Sy#8MHKp4MaR`Ru1oto%IIx=V1qKt-ckP?|G$LDH|RAc|>}_(MjQ@KK`m7 z#iJl;R&;b^{lL#spF;~5DhSs@Rv)AUJINhf6Jt&}!zD$+Hg&b{mEV5`i48^E%HJky zC@R*4GajD|;I`1~2sN(5AI!hqre>%-1wsOmV-VOe7`{uo9|pIH34N9t-vZNlZQ?3% zgKh56hvU^j5N&M1-$?mu)T*{hg%9N0&vF{%tN9_;I^&^UP1nM`GPgE5yc<%heSw!K0V6A8h z3lN+T)xgzGc3>;>r?%LO@o|q68vY=sk|TWS%W4p`6pFu&<5R}Nq9*bHdrrX2EEh<)KkOb zi5Z!3>95b+q|W*@iKGE-eogg1_#fy#(iFyPd@|B{*Dov3a+o!!XIIDWHVjB4k)indij%4-@A?;Ml%1FX)_~|7Ng%>7<32W__I}Am$H>9&x7FY(E2!SmF>=0+*wKl#<{{|__!Ic02 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/item_background.xml b/app/src/main/res/drawable/item_background.xml new file mode 100644 index 0000000..d11eca4 --- /dev/null +++ b/app/src/main/res/drawable/item_background.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/log2.png b/app/src/main/res/drawable/log2.png new file mode 100644 index 0000000000000000000000000000000000000000..195af4f5fb11142e954c6f86f88d5c12d8ce12e9 GIT binary patch literal 2008 zcmZuycT^Kd8V`adAU!b{s!=v%BT`n87K%V9(m_LKL1{{8Qj9bUf&`Z$CG;ww3oZ~N z#RL!`98IN369N)x0kR=*z-3XqxbAVc@7;Uz%{McDO!<{>2zEARB0|za002P5!ra7x zmqU1QA9RG*mzYMvc}XzT+$9_UfNOmVJ`7Rai?_%Z?qFsFsCy^Np{`q9Cy5}Jr@TRWUSto!s2 zfOYAe9l_`^;8U7)eW+zsbuu=&8YB+4bjZxGoeu1oWtVgn-?XW0WNb&%K3AsZ4EK8O zz0%*?eWOhU2zROdrwI#4i+?OUom+1Vm?*RTm+Qvb+qtD>uMP`-zF3f7gmqz}e)(Yv zpTN*v_|b=E$D!$JgyOB>H}SDL*MmK6r6Rk%iErg%cY_8n>INH@^!2&joLl^oC)7C( z?NM&%qO{Dt@xDV=vM?jguD%XG(06{&AK65qQ+C)l^lGRYwDX4rJGv0w&gjkt{C#f@ z2u$_nE`08Gp+A@k{k%XjuEN!jb(H8=nUkRCv>WQcQ^qjJ*H5!Tve``V1AANmPQbMP zG18Nc1KnJWpy5=J9@;miZmWmOc8e;=C4onMlT&KY<8Q-zKdfZ! z4Itx}uU*DzVB*y@LS{6}fE$|W|J@n(RM0$4i>vttnj+>Ok$1f73;LRJr>u1ME&7#d zmG$6!q`oW45GBXLH-C`M(^v<(u>jHCh6JUxBvmM>RypOl9|uyW5%md0Eq4id^`X;8 zwGtz!`r-934$$h}!{83-;wKe_zthKi&lOGO0hyRkGxfIM&0@hz@-p%UqU`ps@cwPA z2xygx+;_Gou0ma^ANJpVDAP%Zl12>=CMd954POSXwT0*GNl@`=QijtzCzqE^g^)|~ z{RtuS9+40rrrC#5vEPB;c8iM&O%I{beDlo3QXqWE%!Nh{O{$*nxzGj@GGup z`SXHZ42f?b5eA&L4;g?uwkozK-G5#{IUJpW6c{RAMWH#-M5z#4cB4c{tzW{_jgyPm zGYZ62tz9x1gB0^Wsn;{0CkAb5pfT@_t;+3?n$@ z29K>lF7C_Pz3h+wn`N`|ykSy$4G}5hB(ihliB%P+o9CWl!)BryYZ+I0T31ArKvZUa zk&AHWkULUa);pz^CL=Gg2Q|j$OZfEeJh1-D`o@$}|C;e`78x3fR7xL>s9f$PgmWID zgP-^7mrBuI1^k4n?4EvxQMK%Y;c8rPezkYQG5I#Z-tw%Jq&ht<2IqgdSM+nHsLL34 zqJKGEon6m*F&~Lg=TKg@_Vn6a1mzv71|Ps~wZ4p=*eds(-*U6b6Zcrd<@bIi!)8pG zn7KiTy?IKDPNq|lCI8EJ9n3{v>re0~&T35E4Zcr4T=A88Dqe8@61gY(bsZBqfwD^f zWGPn|BZ_;UnJ+Oe@;4&%&MGH8N{SWLeNncMuz2-x#(=AMJ1c;cVJ{7xQVYU7>oxbU z{Rwf#jU}&H(?V++-SoncT1Iw`JjqpJ=Hr7nu*smrx3<8tMGnwO>fVA8gSDGwNF0%t zsIODHU6AMDPO!~!12ck}D{|SH_YPp?X$!H#T>@{sF2chi6gZClvAy>Z;i*0mS_Z^K zEj%{di%O3HGlU$kqaEXb_t@BZwsx|_{?eb4{9ZIjyIZkCrzwp1)a{xmkAHgV2A9o> z$JzJLsw>oF4OM`^ibYe^puTC#YDbb)I4f$~){M z!de7Ev*?!T`gro@a*9#ZsaKUB4@z`Ki?j*A6_X_vX9U?obsYR~|7XD8_qBz3 WTbs_-2;zOj01J$bNu80`y?+CjT(|%L literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/toast_notification.xml b/app/src/main/res/drawable/toast_notification.xml new file mode 100644 index 0000000..5622a8e --- /dev/null +++ b/app/src/main/res/drawable/toast_notification.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_collect.xml b/app/src/main/res/layout/fragment_collect.xml index 03ce752..ca25ea6 100644 --- a/app/src/main/res/layout/fragment_collect.xml +++ b/app/src/main/res/layout/fragment_collect.xml @@ -59,28 +59,224 @@ app:layout_constraintTop_toBottomOf="@+id/frameLayout" /> - + app:layout_constraintTop_toBottomOf="@+id/progressBar"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml index 283ad88..55970a4 100644 --- a/app/src/main/res/layout/list_item.xml +++ b/app/src/main/res/layout/list_item.xml @@ -1,6 +1,7 @@ @@ -36,7 +37,6 @@ android:id="@+id/item_name" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Beech Log" android:textColor="@color/white" android:textStyle="bold" /> @@ -50,11 +50,18 @@ android:id="@+id/item_stock" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="1,6K" android:textColor="@color/grey_300" android:textStyle="bold" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f64a5d3..7b76b62 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -10,6 +10,7 @@ #6D8DFC #1D1C22 #343339 + #302F35 #2D2C32 #ADACB2 #FF3D3D diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3838a80..753c4d0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,5 @@ Inventory Home Plus - Hello blank fragment \ No newline at end of file