81
com Daniel Baccin Quick tips for Android

Quick tips for android

Embed Size (px)

Citation preview

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