Blog do Éder

Início » Posts etiquetados como 'android studio'

Arquivo da tag: android studio

SnackBar no Android

Olá;

Recentemente, precisei mexer com a snackBar no android, então vou mostrar rapidamente o que consegui.

A SnackBar é mais um dos inúmeros componentes do material design do google. A SnackBar é interessante, e em alguns casos, pode substituir a mensagem do tipo Toast. Outro recurso interessante, é que podemos definir uma ação pra ela, com um botão e tudo mais.

Sem mais enrolação, vamos ao código. Crie um projeto no Android Studio, no meu caso, chama-se TestaSnackBar, criei o mesmo em branco, sem nenhuma activity, justamente para entendermos o que está acontecendo. O código fonte está disponível em aqui. E aqui, temos a documentação oficial deste componente.

Crie um arquivo de layout. Vá em File/New/Xml/Layout XML File. O nome dele pode ser main_activity, deixe o gerenciador de layout como LinearLayout, que já vem por padrão.

Neste arquivo, teremos o seguinte código:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">



    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn1"
        android:text="@string/msg_btn"

        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn2"
        android:text="@string/msg_btn_action"

        />


</LinearLayout>

Repare os buttons, que temos a string respectiva, então crie ela em res/values/strings.xml. Este arquivo tem o seguinte conteúdo:

<resources>
    <string name="app_name">TestaSnackBar</string>
    <string name="msg_btn">Mostrar SnackBar</string>
    <string name="msg_btn_action">Snack com action</string>
</resources>

Feito isso, nosso layout ficará assim:

Captura de tela de 2016-01-04 21-24-03

Feito isso, agora iremos criar a classe MainActivity.java. O nome pouco importa, desde que referenciamos de forma correta no AndroidManifest.xml. A classe MainActivity.java terá o seguinte conteúdo:

package com.example.eder.testasnackbar;

import android.app.Activity;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.util.Log;
import android.view.View;
import android.widget.Button;

/**
 * Created by eder on 04/01/16.
 */
public class MainActivity extends Activity implements View.OnClickListener {

    Button botao1;
    Button botao2;
    Snackbar snackbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

        botao1 = (Button) findViewById(R.id.btn1);
        botao2 = (Button) findViewById(R.id.btn2);
        botao1.setOnClickListener(this);
        botao2.setOnClickListener(this);


    }


    @Override
    public void onClick(View v) {

        switch (v.getId()){
            case R.id.btn1:
                snackbar = Snackbar.make(v, "Arquivo deletado", Snackbar.LENGTH_SHORT);
                snackbar.show();
                break;
            case R.id.btn2:
                snackbar = Snackbar.make(v, "Arquivo deletado", Snackbar.LENGTH_SHORT)
                        .setAction("Desfazer", new View.OnClickListener() {
                            @Override
                            public void onClick(View view){
                                Log.i("log", "Desfeito");
                            }
                        });
                snackbar.show();
                break;
        }

    }
}

Como podemos observar, criamos um clickListener para os botões, reaproveitando muito código java. Para cada botão, cria-se uma snackBar totalmente diferente.
A Snack do btn1, apenas mostra uma notificação, algo como um substituto ao toast.
Já a segunda, além de mostrar a mensagem, temos um botão para fazer determinada ação, neste caso a de desfazer alguma ação.

Ah, o arquivo AndroidManifest.xml deve estar assim:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.eder.testasnackbar">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


    </application>

</manifest>

A imagem abaixo, mostra como ficaria somente a SnackBar:
Captura de tela de 2016-01-04 21-25-59

Já esta outra, mostra a mensagem na SnackBar com o botão de ação, repare no log atrás, no AndroidStudio:
Captura de tela de 2016-01-04 21-26-05

Esta mostra o log, que definimos na action da snackbar:
Captura de tela de 2016-01-04 21-26-07

É isto, agora fica por conta da sua imaginação.

Até mais;

Éder

 

%d blogueiros gostam disto: