Montaigne-ensaios / montaigne_app

Aplicativo de auxílio na gestão de dados relacionados a ensaios de cosntrução civil
4 stars 0 forks source link

Organização por fragments #37

Closed icarob-eng closed 1 year ago

icarob-eng commented 2 years ago

A maioria das telas exceto a home podem ser passadas para uma única activity, mantendo os botões de navegação (home e próxima tela, ou carimbo) na barra inferior e o conteúdo em si seria em fragments, com botões para manipular o conteúdo (por exemplo lixeria e novo) dentro do próprio fragment e fora da barra de navegação.

Projetar um recycler para a tela de carimbo defintivo, em que os campos de texto sejam reaproveitados e as mensagens sobrescritas.

icarob-eng commented 2 years ago

Além das questões dos fragments, é importate lembrar sobre os adapters: o layout de um adapter não pode ser um ConstraintLayout. Pode-se usar um LinearLayout ou mesmo um RelativeLayout se preferir.

icarob-eng commented 2 years ago

Deve-se terminar de implementar todas as funcionalidades do banco de dados nesta issue.

icarob-eng commented 1 year ago

Os fragments podem ser colocados em cima de um FragmentConteinerView, segundo a documentação Android

<!-- res/layout/example_activity.xml -->
<androidx.fragment.app.FragmentContainerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
JuliaFreire commented 1 year ago

TAREFAS

Observações #dev

JuliaFreire commented 1 year ago

Tarefas

1 Passo

2 Passo

Data de entrega 07/11

JuliaFreire commented 1 year ago

https://developer-android-com.translate.goog/guide/fragments/create?_x_tr_sl=auto&_x_tr_tl=pt&_x_tr_hl=pt

JuliaFreire commented 1 year ago

Passos para fazer um fragment

Renomear Tranforma em Frame layout Criar um constraint

icarob-eng commented 1 year ago

@JuliaFreire, quando for refazer as telas de carimbo, ponha os TextInputLayouts em um adapter, para não ter que refazer tantos editTexts. Assim é só descrever aqui a lista de inputs e imagens que precisam ser adaptados no recycler

JuliaFreire commented 1 year ago

Alterar tema

<style name="Theme.MontaigneApp" parent="Theme.MaterialComponents.Light.NoActionBar">
icarob-eng commented 1 year ago

Renomear: CarimboDefinitivo para CarimboProjeto e

CarimboUnico para CarimboEnsaio.

icarob-eng commented 1 year ago

Lembrar de checar se os adapters estão usando ConstraintLayout. Eles devem usar outro mais simples como o RelativeLayout ou de preferência o LinearLayout. Isto por questões de performance.

JuliaFreire commented 1 year ago

image

Comit com renomeação dos fragments

@icarob-eng revisar

JuliaFreire commented 1 year ago

comitt de conversão de constraint layout para relative layout adpters

icarob-eng commented 1 year ago

@icarob-eng revisar

Estes erros foram causados por não se ter sido feito sync do gradle pelo problema com o plugin.

icarob-eng commented 1 year ago

Estrutura de uma classe Fragment:

public class BlankFragment extends Fragment {

    private static final String ARG_PARAM1 = "param1";   // String de nome do parâmetro
    private static final String ARG_PARAM2 = "param2";

    private String mParam1;
    private String mParam2;

    public BlankFragment() {
        // Required empty public constructor
    }

    public static BlankFragment newInstance(String param1, String param2) {
        BlankFragment fragment = new BlankFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_blank, container, false);
    }
}

Para instanciar o Fragment, é usado o método newInstance() ao invés do construtor, este que deve ficar vazio. Isto serve para facilmente recuperar valores pelo Bundle savedInstanceState, uma forma de permanência que permite salvar apenas serializáveis e são salvos no Bundle. Como não iremos usar este recurso, pode ser ignorado... Então podemos passar dados pelo construtor (ainda precisando definir um construtor vazio devido a API do Android), não usando o método newInstance().

Desta forma, os fragments ficam com a seguinte estrutura:

class BlankFragment extends Fragment {

    private Object param1, param2;

    public BlankFragment(){}

    public BlankFragment(Object param1, Object param2){
        this.param1 = param1;
        this.param2 = param2;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_blank, container, false);
    }
}

Onde os dados são passados pro viewModel pelo construtor e salvos ou usando dataBinding (a se estudar), ou usando algo como o onPause() para ler os valores dos campos. No final do fragment ou em uma transição, os dados do viewModel do fragment podem ser passados para o viewModel da activity, por um método chamado pela transição ou usando o método public onCleared().

icarob-eng commented 1 year ago

Resta estudas as transições entre fragments. No momento o app está crashando, o que será resolvido com o uso do viewBinding no adapter.

JuliaFreire commented 1 year ago

Link dos atributos do relative layout:

https://developer-android-com.translate.goog/reference/android/widget/RelativeLayout.LayoutParams?hl=pt-br&_x_tr_sl=auto&_x_tr_tl=pt&_x_tr_hl=pt

JuliaFreire commented 1 year ago

Substitution do Edit Text para ImputLayout

Lista para por no recylcer dos Ids do Adapter Carimbo Projeto:

ImputEditText

android:id="@+id/TextImputEditTextNameProjeto"

              android:id="@+id/TextImputEditTextTecnico"

              android:id="@+id/TextImputEditTextEmpresa"

              android:id="@+id/TextImputEditTextContato"
              android:id="@+id/TextImputEditTextCliente"
              android:id="@+id/TextImputEditTextLocalObra"
              android:id="@+id/TextImputEditTextNúmeroFuros"
              android:id="@+id/TextImputEditTextReferenciaNivel"

ImputLayout

  TextInputLayoutNameProjeto
  TextInputLayoutTecnico
  TextInputLayouteEmpresa
  TextInputLayoutContato
  TextInputLayoutCliente
  TextInputLayoutLocalObra
  TextInputLayoutNúmeroFuros
  TextInputLayoutReferenciaNivel

Icons

ic_name_project ic_technician ic_empresa ic_contato ic_perfil ic_location ic_furo ic_referencia_furo

JuliaFreire commented 1 year ago

Padrão do textImputLayout

Campos Obrigatórios

Nome do Projeto Referência de nível Número de furos

JuliaFreire commented 1 year ago

Organizar cor do toolbar no modo noturno @JuliaFreire

JuliaFreire commented 1 year ago

Ver video https://youtu.be/uPdnW0Zxmr4 para menu

icarob-eng commented 1 year ago

Adaptação para utilização de ViewBinding e Fragments:

icarob-eng commented 1 year ago

Resta fazer a navegação entre os fragmentos.

icarob-eng commented 1 year ago

@JuliaFreire, a estrutura do layout de ActivitySpt estava errada, com o ConstraintLayout dentro do FrameLayout. Já corrigi isto, então veja como o layout ficou.

icarob-eng commented 1 year ago

@JuliaFreire, quando for fazer o layout da ActivitySpt, veja que o botão com + não precisa ser um FlaotingActionButton, mas um botão típico mesmo.

icarob-eng commented 1 year ago

Sobre a navegação e comunicação entre fragmentos: podemos fazer com que todos os fragmentos acessem a um viewModel compartilhado pela activity, assim a comunicação será mais simples, pois é só escrever ou ler os dados no viewModel compartilhado, e quando um fragment pedir uma transação de fragments, o viewModel será responsável por fazê-la.

É possível utilizar tags para fazer a referênciação dos fragments, deste modo, não se faz estritamente necessário o uso do navigation graph da issue #35.

JuliaFreire commented 1 year ago

@JuliaFreire, a estrutura do layout de ActivitySpt estava errada, com o ConstraintLayout dentro do FrameLayout. Já corrigi isto, então veja como o layout ficou.

certo obg

JuliaFreire commented 1 year ago

image butão de voltar

JuliaFreire commented 1 year ago

Substituir do adpter carimbo projeto

Substituir Icons

ic_name_project ic_technician ic_empresa ic_contato ic_perfil ic_location ic_furo ic_referencia_furo

Substitua hint

Nome do Projeto Técnico responsavél Empresa ou construtora Contato Nome do cliente // ou contratante Local da obra Número de furos Referência de nível // ex: calçada Altura da referência de nível image

Substituir observações

ImputLayoutNomeProjeto ImputLayoutNúmeroFuros ImputLayoutReferenciaNível ImputLayoutAlturaReferencianível

TODOS ESSES SÃO: Obrigátorio*

JuliaFreire commented 1 year ago

image

adicionado menu ao home

JuliaFreire commented 1 year ago

image

colocar os itens

JuliaFreire commented 1 year ago
  1. Por butãos outline
  2. Button flutuante outiline
  3. menu thema
icarob-eng commented 1 year ago

Substituir do adpter carimbo projeto

Substitua hint

Por favor, criar as strings no strings.xml para eu colocar aí.

icarob-eng commented 1 year ago

@JuliaFreire, os nomes de strings no strings.xml não estão devidamente organizados:

Recomendo ver guia de estilo para strings;

Recomendo que encarregue alguém de corrigir os todos os resources em acordo com o definido no guia de estilo para resources...

icarob-eng commented 1 year ago

Aliás é redundante pôr Txt na frente de cada nome de string resource.

JuliaFreire commented 1 year ago

image

-[ ] Criar adapter de amostras

image

JuliaFreire commented 1 year ago

image

adicionado butão de adicionar amostra na tela fragment ensaio @icarob-eng

JuliaFreire commented 1 year ago

image

alterado adpter projeto

JuliaFreire commented 1 year ago

Adicionado adpter furo que contém as amostras o card view não é editavel image

Implementar na tela fragment furo, irei adicionar a tela de editar amostra

@icarob-eng

JuliaFreire commented 1 year ago

TO DO

URGENTE

Importantes porém não urgentes

Altera paleta de cor do menu

JuliaFreire commented 1 year ago

@icarob-eng

ja adicionado strings, não consiguir alterar o nome la no vm, porque não sei image

icarob-eng commented 1 year ago

@JuliaFreire , por favor, corrigir a nomeação de recursos, principalmente as strings para snake_case, não camelCase, como definido no nosso guia de estilo, coisa que já cobrei de ti.

icarob-eng commented 1 year ago

E por favor referenciar de preferência onde o texto da string será usado, não o seu conteúdo...

Eu já corrigi para estas strings específicas, mas espero que ti corrija o resto.

Além disso, não é com // que se faz comentários em .xml. A sintaxe correta está pelo próprio strings.xml... Ti também pode apertar ctrl + / na linha que quer comentar, que a IDE faz corretamente.

JuliaFreire commented 1 year ago

image referencia de nivel do projeto e nome de projeto unicos que são obrigatorios

JuliaFreire commented 1 year ago

image adicionado toollbar do spt e menu de spt

JuliaFreire commented 1 year ago

image

Adicionado icon de voltar no toolbar do spt

icarob-eng commented 1 year ago

Solved by #54