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

Tela de detalhes pronta para review. #4

Merged
merged 1 commit into from May 24, 2021
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 5 additions & 2 deletions app/src/main/AndroidManifest.xml
Expand Up @@ -7,12 +7,15 @@
<application
android:name=".presenter.MarvelApp"
android:allowBackup="true"
android:usesCleartextTraffic="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MarvelSuperHeroes">
android:theme="@style/Theme.MarvelSuperHeroes"
android:usesCleartextTraffic="true">
<activity
android:name=".presenter.view.CharacterDetailsActivity"
android:parentActivityName=".presenter.view.AllCharactersActivity" />
<activity android:name=".presenter.view.AllCharactersActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
@@ -1,5 +1,6 @@
package com.lucascabral.marvelsuperheroes.presenter.adapter

import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.paging.PagingDataAdapter
Expand All @@ -8,6 +9,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.lucascabral.marvelsuperheroes.databinding.ItemCharacterBinding
import com.lucascabral.marvelsuperheroes.network.model.Character
import com.lucascabral.marvelsuperheroes.presenter.view.CharacterDetailsActivity

class AllCharactersAdapter: PagingDataAdapter<Character, AllCharactersAdapter.MyViewHolder>(DiffUtilCallBack()) {

Expand All @@ -30,6 +32,14 @@ class AllCharactersAdapter: PagingDataAdapter<Character, AllCharactersAdapter.My
val uri = data.thumbnail.path+"."+data.thumbnail.extension
Glide.with(characterImage).load(uri).into(characterImage)
}
itemView.setOnClickListener {
val intent = Intent(it.context, CharacterDetailsActivity::class.java)
val uri = data.thumbnail.path+"."+data.thumbnail.extension
intent.putExtra(CharacterDetailsActivity.HERO_NAME, data.name)
intent.putExtra(CharacterDetailsActivity.HERO_DESCRIPTION, data.description)
intent.putExtra(CharacterDetailsActivity.HERO_URI, uri)
it.context.startActivity(intent)
}
}
}

Expand Down
@@ -0,0 +1,60 @@
package com.lucascabral.marvelsuperheroes.presenter.view

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.bumptech.glide.Glide
import com.lucascabral.marvelsuperheroes.R
import com.lucascabral.marvelsuperheroes.databinding.ActivityCharacterDetailsBinding

class CharacterDetailsActivity : AppCompatActivity() {

private lateinit var detailsBinding: ActivityCharacterDetailsBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
detailsBinding = ActivityCharacterDetailsBinding.inflate(layoutInflater)
setContentView(detailsBinding.root)

val (name: String?, uri: String?, description: String?) = getDataExtra()

setupViews(name, uri, description)
setupToolbar(name)
}

override fun onSupportNavigateUp(): Boolean {
finish()
return true
}

private fun getDataExtra(): Triple<String?, String?, String?> {
val name: String? = intent.getStringExtra(HERO_NAME)
val uri: String? = intent.getStringExtra(HERO_URI)
val description: String? = intent.getStringExtra(HERO_DESCRIPTION)
return Triple(name, uri, description)
}

private fun setupViews(name: String?, uri: String?, description: String?) {
detailsBinding.apply {
Glide.with(this@CharacterDetailsActivity).load(uri).into(descriptionCharacterImageView)
if (description.isNullOrEmpty()) {
descriptionCharacterTextView.text = getString(R.string.character_unknown, name)
} else {
descriptionCharacterTextView.text = description
}
}
}

private fun setupToolbar(name: String?) {
supportActionBar?.apply {
title = name
setDisplayHomeAsUpEnabled(true)
setDisplayShowHomeEnabled(true)
}
}

companion object {
const val HERO_NAME = "name"
const val HERO_DESCRIPTION = "description"
const val HERO_URI = "uri"
}
}
36 changes: 36 additions & 0 deletions app/src/main/res/layout/activity_character_details.xml
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_background">

<ImageView
android:id="@+id/descriptionCharacterImageView"
android:layout_width="0dp"
android:layout_height="250dp"
android:layout_marginStart="22dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="20dp"
android:contentDescription="@string/character_image_contentDesc"
android:scaleType="fitCenter"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@tools:sample/avatars" />

<TextView
android:id="@+id/descriptionCharacterTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="30dp"
android:textColor="@color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/descriptionCharacterImageView"
tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />

</androidx.constraintlayout.widget.ConstraintLayout>
1 change: 1 addition & 0 deletions app/src/main/res/values/colors.xml
Expand Up @@ -12,4 +12,5 @@
<color name="red_toolbar">#CC0000</color>
<color name="redDark_toolbar">#990000</color>
<color name="redDark2_toolbar">#7f0000</color>
<color name="warm_grey">#8d8c8c</color>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
@@ -1,4 +1,5 @@
<resources>
<string name="app_name">Marvel Super Heroes</string>
<string name="character_image_contentDesc">Character image</string>
<string name="character_unknown">There\'s no information about %1$s</string>
</resources>