Top Banner
com Daniel Baccin Quick tips for Android
81

Quick tips for android

Jan 21, 2017

Download

Mobile

Daniel Baccin
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Quick tips for android

com Daniel Baccin

Quick tips for Android

Page 2: Quick tips for android

Aplicando diferentes layouts de acordo com a orientação do

dispositivo

Page 3: Quick tips for android
Page 4: Quick tips for android
Page 5: Quick tips for android
Page 6: Quick tips for android
Page 7: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/>

</LinearLayout>

Page 8: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/>

</LinearLayout>

Page 9: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/>

</LinearLayout>

Page 10: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/>

</LinearLayout>

Page 11: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/>

</LinearLayout>

Page 12: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/>

</LinearLayout>

Page 13: Quick tips for android

public class MainActivity extends AppCompatActivity {...@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

nomes = new ArrayList<String>(); editText = (EditText) findViewById(R.id.editText1); listView = (ListView) findViewById(R.id.listView);

adapter = new ArrayAdapter<String>(

this,android.R.layout.simple_list_item_1, nomes);

listView.setAdapter(adapter);}

}

Page 14: Quick tips for android

public class MainActivity extends AppCompatActivity {...@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

nomes = new ArrayList<String>(); editText = (EditText) findViewById(R.id.editText1); listView = (ListView) findViewById(R.id.listView);

adapter = new ArrayAdapter<String>(

this,android.R.layout.simple_list_item_1, nomes);

listView.setAdapter(adapter);}

}

Page 15: Quick tips for android

public class MainActivity extends AppCompatActivity {...@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

nomes = new ArrayList<String>(); editText = (EditText) findViewById(R.id.editText1); listView = (ListView) findViewById(R.id.listView);

adapter = new ArrayAdapter<String>( this,android.R.layout.simple_list_item_1, nomes);

listView.setAdapter(adapter);}

}

Page 16: Quick tips for android

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

Page 17: Quick tips for android

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

public class MainActivity extends AppCompatActivity {…public void meuBotaoClick(View v){

nomes.add(editText.getText().toString()); editText.setText(""); adapter.notifyDataSetChanged();

}

}

Page 18: Quick tips for android
Page 19: Quick tips for android
Page 20: Quick tips for android

Clique com Botão direito na pasta res:

New > Android resorce directory

Page 21: Quick tips for android
Page 22: Quick tips for android
Page 23: Quick tips for android
Page 24: Quick tips for android
Page 25: Quick tips for android
Page 26: Quick tips for android

Agora copie e cole o arquivo de layoutpara a nova pasta, ficando assim:

➔ res/layout/activity_main.xml➔ res/layout-land/activity_main.xml

Page 27: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="horizontal">

<LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/>

</LinearLayout> <ListView android:id="@+id/listView" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2"/>

</LinearLayout>

Page 28: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="horizontal">

<LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/> </LinearLayout>

<ListView android:id="@+id/listView" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2"/>

</LinearLayout>

Page 29: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="horizontal">

<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/> </LinearLayout>

<ListView android:id="@+id/listView" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="2"/>

</LinearLayout>

Page 30: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="horizontal">

<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/> </LinearLayout>

<ListView android:id="@+id/listView" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="2"/>

</LinearLayout>

Page 31: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="horizontal">

<LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/> </LinearLayout>

<ListView android:id="@+id/listView" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="2"/>

</LinearLayout>

Page 32: Quick tips for android

<LinearLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="horizontal">

<LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical">

<TextView android:text="@string/digite" android:layout_width="wrap_content" android:layout_height="wrap_content" />

<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="meuBotaoClick" android:text="@string/adicionar"/> </LinearLayout>

<ListView android:id="@+id/listView" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="2"/>

</LinearLayout>

Page 33: Quick tips for android
Page 34: Quick tips for android
Page 35: Quick tips for android

public class MainActivity extends AppCompatActivity {…@Overridepublic void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putStringArrayList(Contantes.NOMES, nomes);}

}

Page 36: Quick tips for android

public class MainActivity extends AppCompatActivity {

@Overrideprotected void onCreate(Bundle savedInstanceState) {

...

nomes = new ArrayList<String>();

...

}

Page 37: Quick tips for android

public class MainActivity extends AppCompatActivity {

@Overrideprotected void onCreate(Bundle savedInstanceState) {

...

if(savedInstanceState != null){ nomes = savedInstanceState.getStringArrayList(Contantes.NOMES);}else{ nomes = new ArrayList<String>();}

...

}

Page 38: Quick tips for android
Page 39: Quick tips for android

Passando objetos entre Intents

Page 40: Quick tips for android
Page 41: Quick tips for android
Page 42: Quick tips for android

Parcelable x Serializable

Page 43: Quick tips for android

Parcelable x Serializable

Page 44: Quick tips for android
Page 45: Quick tips for android

public class Cliente implements Parcelable {

private String telefone; private String nome;

public Cliente( String nome, String telefone){ this.nome = nome; this.telefone = telefone; }

Page 46: Quick tips for android

public class Cliente implements Parcelable {

private String telefone; private String nome;

public Cliente( String nome, String telefone){ this.nome = nome; this.telefone = telefone; }

Page 47: Quick tips for android

public class Cliente implements Parcelable {

private String telefone; private String nome;

public Cliente( String nome, String telefone){ this.nome = nome; this.telefone = telefone; }

Page 48: Quick tips for android

public class Cliente implements Parcelable {

private String telefone; private String nome;

public Cliente( String nome, String telefone){ this.nome = nome; this.telefone = telefone; }

Page 49: Quick tips for android

public class Cliente implements Parcelable {

...@Overridepublic int describeContents() { return 0;}

@Overridepublic void writeToParcel(Parcel dest, int flags) { dest.writeString(nome); dest.writeString(telefone);}

Page 50: Quick tips for android

public class Cliente implements Parcelable {

...@Overridepublic int describeContents() { return 0;}

@Overridepublic void writeToParcel(Parcel dest, int flags) { dest.writeString(nome); dest.writeString(telefone);}

Page 51: Quick tips for android

public class Cliente implements Parcelable {

...public static final Creator<Cliente> CREATOR = new Creator<Cliente>() { @Override public Cliente createFromParcel(Parcel in) { return new Cliente(in); }

@Override public Cliente[] newArray(int size) { return new Cliente[size]; }};

}

Page 52: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

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

editTextNome = (TextView) findViewById(R.id.editTextNome); editTextFone = (TextView) findViewById(R.id.editTextFone);

Button btEnviar = (Button) findViewById(R.id.btEnviar); btEnviar.setOnClickListener(this); }

Page 53: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

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

editTextNome = (TextView) findViewById(R.id.editTextNome); editTextFone = (TextView) findViewById(R.id.editTextFone);

Button btEnviar = (Button) findViewById(R.id.btEnviar); btEnviar.setOnClickListener(this); }

Page 54: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

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

editTextNome = (TextView) findViewById(R.id.editTextNome); editTextFone = (TextView) findViewById(R.id.editTextFone);

Button btEnviar = (Button) findViewById(R.id.btEnviar); btEnviar.setOnClickListener(this); }

Page 55: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

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

editTextNome = (TextView) findViewById(R.id.editTextNome); editTextFone = (TextView) findViewById(R.id.editTextFone);

Button btEnviar = (Button) findViewById(R.id.btEnviar); btEnviar.setOnClickListener(this); }

Page 56: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

...@Overridepublic void onClick(View v) { switch (v.getId()){ case R.id.btEnviar: Cliente cliente = new Cliente(

editTextNome.getText().toString(), editTextFone.getText().toString());

Intent irParaTela2 = new Intent(this, Tela2Activity.class); irParaTela2.putExtra(Contantes.CLIENTE, cliente); startActivity(irParaTela2); break; }}

}

Page 57: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

...@Overridepublic void onClick(View v) { switch (v.getId()){ case R.id.btEnviar: Cliente cliente = new Cliente(

editTextNome.getText().toString(), editTextFone.getText().toString());

Intent irParaTela2 = new Intent(this, Tela2Activity.class); irParaTela2.putExtra(Contantes.CLIENTE, cliente); startActivity(irParaTela2); break; }}

}

Page 58: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

...@Overridepublic void onClick(View v) { switch (v.getId()){ case R.id.btEnviar: Cliente cliente = new Cliente(

editTextNome.getText().toString(), editTextFone.getText().toString());

Intent irParaTela2 = new Intent(this, Tela2Activity.class); irParaTela2.putExtra(Contantes.CLIENTE, cliente); startActivity(irParaTela2); break; }}

}

Page 59: Quick tips for android

public class MainActivity extends AppCompatActivity implements iew.OnClickListener{

private TextView editTextNome; private TextView editTextFone;

...@Overridepublic void onClick(View v) { switch (v.getId()){ case R.id.btEnviar: Cliente cliente = new Cliente(

editTextNome.getText().toString(), editTextFone.getText().toString());

Intent irParaTela2 = new Intent(this, Tela2Activity.class); irParaTela2.putExtra(Contantes.CLIENTE, cliente); startActivity(irParaTela2); break; }}

}

Page 60: Quick tips for android

public class Tela2Activity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tela2); TextView txtText = (TextView) findViewById(R.id.txtTexto);

Intent intent = getIntent(); Cliente cliente = intent.getParcelableExtra(Contantes.CLIENTE); if(cliente != null){ String texto =

String.format("Nome: %s / Telefone: %s", cliente.getNome(), cliente.getTelefone());

txtText.setText(texto);

Page 61: Quick tips for android

public class Tela2Activity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tela2); TextView txtText = (TextView) findViewById(R.id.txtTexto);

Intent intent = getIntent(); Cliente cliente = intent.getParcelableExtra(Contantes.CLIENTE); if(cliente != null){ String texto =

String.format("Nome: %s / Telefone: %s", cliente.getNome(), cliente.getTelefone());

txtText.setText(texto);

Page 62: Quick tips for android

public class Tela2Activity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tela2); TextView txtText = (TextView) findViewById(R.id.txtTexto);

Intent intent = getIntent(); Cliente cliente = intent.getParcelableExtra(Contantes.CLIENTE); if(cliente != null){ String texto =

String.format("Nome: %s / Telefone: %s", cliente.getNome(), cliente.getTelefone());

txtText.setText(texto);

Page 63: Quick tips for android
Page 64: Quick tips for android

Verificação de permisões no Android Marshmallow

Page 65: Quick tips for android
Page 66: Quick tips for android

public class MainActivity extends ListActivity{

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

listaDeContatos = obtemListaDeContatos();

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listaDeContatos);

setListAdapter(adapter); }

}

Page 67: Quick tips for android

public class MainActivity extends ListActivity{...

@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions,

int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { discar(); }}

}

Page 68: Quick tips for android

public class MainActivity extends ListActivity{...

@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions,

int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { discar(); }}

}

Page 69: Quick tips for android

public class MainActivity extends ListActivity{...

@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) { switch (position){ case 1: if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 0); } else { discar(); } }}

}

Page 70: Quick tips for android

public class MainActivity extends ListActivity{...

@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) { switch (position){ case 1: if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 0); } else { discar(); } }}

}

Page 71: Quick tips for android

public class MainActivity extends ListActivity{...

@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) { switch (position){ case 1: if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 0); } else { discar(); } }}

}

Page 72: Quick tips for android

public class MainActivity extends ListActivity{...

private void discar() { Uri uri = Uri.parse("tel:" + "88121128"); Intent intent = new Intent(Intent.ACTION_CALL, uri);

if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); }}

}

Page 73: Quick tips for android

Otimizando seu Android Studio

Page 74: Quick tips for android
Page 76: Quick tips for android
Page 77: Quick tips for android
Page 78: Quick tips for android

studio.vmoptions

Page 79: Quick tips for android

studio.vmoptions

Page 80: Quick tips for android

idea.properties