Professional Documents
Culture Documents
COM ANDROID
LUIZTOOLS.COM.BR
0
Código 1: disponível em luiztools.com.br/livro-android-fontes
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello world!" />
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
<RelativeLayout 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"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
1
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Centro"
android:id="@+id/btnCentro"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Norte"
android:id="@+id/btnNorte"
android:layout_centerHorizontal="true"
android:layout_above="@+id/btnCentro"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Sul"
android:id="@+id/btnSul"
android:layout_below="@+id/btnCentro"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Leste"
android:id="@+id/btnLeste"
android:layout_below="@+id/btnNorte"
android:layout_toRightOf="@+id/btnCentro" />
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Oeste"
android:id="@+id/btnOeste"
android:layout_below="@+id/btnNorte"
android:layout_toLeftOf="@+id/btnCentro" />
2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"></LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"></LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"></LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="150dp"
android:layout_height="50dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Nome:"
android:id="@+id/textView" />
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/editText" />
</LinearLayout>
3
Código 12: disponível em luiztools.com.br/livro-android-fontes
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="150dp"
android:layout_height="50dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Endereço:"
android:id="@+id/textView2" />
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/editText2" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Cancelar"
android:id="@+id/button"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Salvar"
android:id="@+id/button2"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Texto Grande"
android:id="@+id/lblTeste" />
4
Código 15: disponível em luiztools.com.br/livro-android-fontes
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:id="@+id/txtTeste"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content">
<requestFocus />
</EditText>
<Button
android:layout_width="wrap_content"
5
android:layout_height="wrap_content"
android:text="Botão"
android:id="@+id/btnTeste" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Botão"
android:id="@+id/btnTeste"
android:onClick="exibirMensagem" />
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastro);
}
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/salvar"
android:onClick="salvar"
android:id="@+id/btnImagem"/>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinner" />
6
Código 24: disponível em luiztools.com.br/livro-android-fontes
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinner"
android:entries="@array/estados"/>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cliente);
7
//muda o item selecionado do spinner passando a posição
spinner.setSelection(1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cliente);
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, i nt position, long id) {
String uf = spinner.getSelectedItem().toString();
Toast.makeText(getBaseContext(), "UF selecionado: " + uf,
Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
8
@Override
public String toString(){ return this.nome; }
}
spinner.setOnItemSelectedListener(new S pinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, i nt position, long id) {
Estado uf = (Estado)spinner.getSelectedItem();
Toast.makeText(getBaseContext(), "UF selecionado: " + uf.getSigla(),
Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/grpSexo">
</RadioGroup>
9
Código 33: disponível em luiztools.com.br/livro-android-fontes
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/grpSexo">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Masculino"
android:id="@+id/radMasculino"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Feminino"
android:id="@+id/radFeminino"/>
</RadioGroup>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cliente);
10
radMasculino.setOnCheckedChangeListener(new RadioButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//esse método dispara no instante que o radio masculino for selecionado!
}
});
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Desejo receber informativos"
android:id="@+id/chkReceberInformativos"/>
chkReceberInformativos.setOnClickListener(new CheckBox.OnClickListener() {
@Override
public void onClick(View v) {
boolean selecionado = chkReceberInformativos.isSelected();
//método dispara no instante em que o checkbox foi clicado
}
});
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
11
android:src="@drawable/arsenal"
android:id="@+id/imageView"/>
<RelativeLayout 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"
tools:context=".MainActivity">
<EditText
android:layout_width="fill_parent"
android:layout_height="45dp"
android:maxLength="10"
android:id="@+id/txtPesquisa"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" / >
<Button
android:layout_width="80dp"
android:layout_height="45dp"
android:text="Buscar"
android:onClick="btnBuscar_OnClick"
android:id="@+id/btnBuscar"
android:layout_alignParentTop="true"
12
android:layout_alignParentRight="true" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lstResultados"
android:layout_below="@+id/txtPesquisa"
android:layout_marginTop="10dp"/>
</RelativeLayout>
ListView lstResultados;
EditText txtPesquisa;
Button btnBuscar;
String[] cidades = { "Porto Alegre", "Florianópolis", "Curitiba", "São Paulo" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtPesquisa = (EditText)findViewById(R.id.txtPesquisa);
btnBuscar = (Button)findViewById(R.id.btnBuscar) ;
lstResultados = (ListView)findViewById(R.id.lstResultados);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
13
setContentView(R.layout.activity_main);
txtPesquisa = (EditText)findViewById(R.id.txtPesquisa);
btnBuscar = (Button)findViewById(R.id.btnBuscar) ;
lstResultados = (ListView)findViewById(R.id.lstResultados);
lstResultados.setOnItemClickListener(new ListView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String cidade = lstResultados.getItemAtPosition(position).toString();
Toast.makeText(getBaseContext(), "Item " + cidade, Toast.LENGTH_LONG).show();
}
});
}
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imgCidade"
android:src="@drawable/florianopolis"
android:layout_marginRight="10dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" / >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Florianópolis"
android:id="@+id/lblCidade"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/imgCidade" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="/SC"
android:id="@+id/lblUF"
14
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/lblCidade"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Capital de Santa Catarina"
android:id="@+id/lblDescricao"
android:textColor="@android:color/darker_gray"
android:layout_below="@+id/lblCidade"
android:layout_toRightOf="@+id/imgCidade"/>
</RelativeLayout>
15
cidades.add(new Cidade("Porto Alegre", "Capital do Rio Grande do Sul", "RS",
R.drawable.porto_alegre));
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
Context ctx = getContext();
LayoutInflater vi =
(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.item_modelo, n
ull);
}
Cidade cidade = items.get(position);
if (cidade != null) {
((TextView) v.findViewById(R.id.lblCidade)).setText(cidade.getNome());
((TextView) v.findViewById(R.id.lblUF)).setText("/" + cidade.getUf());
((TextView) v.findViewById(R.id.lblDescricao)).setText(cidade.getDescricao());
((ImageView)
v.findViewById(R.id.imgCidade)).setImageResource(cidade.getIdImagem());
}
return v;
}
}
16
encontradas);
lstResultados.setAdapter(adapter);
}
lstResultados.setOnItemClickListener(new L istView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cidade cidade = (Cidade)lstResultados.getItemAtPosition(position);
Toast.makeText(getBaseContext(), "Item " + cidade.getNome(),
Toast.LENGTH_LONG).show();
}
});
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollView">
</ScrollView>
</RelativeLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollView">
17
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</RelativeLayout>
</ScrollView>
18
Código 56: disponível em luiztools.com.br/livro-android-fontes
19
Código 59: disponível em luiztools.com.br/livro-android-fontes
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Digite o nome da nova pasta:" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtNovaPasta" />
</LinearLayout>
@Override
public Dialog onCreateDialog(Bundle bundle){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Nova Pasta")
.setPositiveButton("Criar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//...
}
});
return builder.create();
}
}
@Override
public Dialog onCreateDialog(Bundle bundle){
20
f inal Activity activity = getActivity();
LayoutInflater inflater = activity.getLayoutInflater();
View v = inflater.inflate(R.layout.dialog_nova_pasta, null);
new NovaPastaDialog().show();
<menu 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" tools:context=".MainActivity">
<item android:id="@+id/menu_nova_pasta" android:title="Nova Pasta"
android:orderInCategory="100" app:showAsAction="never" />
<item android:id="@+id/menu_novo_arquivo" android:title="Novo Arquivo"
android:orderInCategory="200" app:showAsAction="never" />
<item android:id="@+id/menu_sair" android:title="Sair"
android:orderInCategory="300" app:showAsAction="never" />
</menu>
21
Código 65: disponível em luiztools.com.br/livro-android-fontes
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
return super.onOptionsItemSelected(item);
}
registerForContextMenu(lstArvore);
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
if (v.getId() == R.id.lstArvore) {
22
getMenuInflater().inflate(R.menu.menu_context, menu);
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info =
(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
@Override
protected void onCreate(Bundle savedInstanceState) {
23
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
}
}
24
public static final int app_name=0x7f050001;
}
public static final class style {
public static final int AppTheme=0x7f060000;
}
}
EditText txtTeste;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
txtTeste = (EditText)findViewById(R.id.txtTeste);
}
}
@Override
protected void onRestart(){
super.onRestart();
//faz algo ao reiniciar
}
25
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
//a activity está sendo criada
}
@Override
protected void onResume(){
super.onResume();
//a activity se tornou visível
}
@Override
protected void onPause(){
super.onPause();
//outra activity está assumindo o foco
}
@Override
protected void onStop(){
super.onStop();
//esta activity já não é mais visível
}
@Override
protected void onStart(){
super.onStart();
//a activity está sendo inicializada
}
@Override
protected void onDestroy(){
super.onDestroy();
//a activity está sendo finalizada
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
if(id == R.id.action_settings){
Intent intent = new Intent(this, OutraActivity.class);
startActivity(intent);
26
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
if(id == R.id.action_settings){
Intent intent = new Intent(this, OutraActivity.class);
startActivity(intent);
}else{
finish();
}
return super.onOptionsItemSelected(item);
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
27
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="fill_parent"
android:layout_height="50dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="/"
android:id="@+id/txtPath"
android:textStyle="bold"/>
<ListView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="8"
android:id="@+id/lstArvore" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="Nova Pasta"
android:onClick="btnNovaPasta_OnClick"
android:id="@+id/btnNovaPasta" />
<Button
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:onClick="btnNovoArquivo_OnClick"
android:text="Novo Arquivo"
android:id="@+id/btnNovoArquivo" />
</LinearLayout>
</LinearLayout>
28
public class MainActivity extends A
ctionBarActivity {
TextView txtPath;
ListView lstArvore;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtPath = (TextView)findViewById(R.id.txtPath);
lstArvore = (ListView)findViewById(R.id.lstArvore);
}
void atualizarArvore(){
String raiz = Environment.getExternalStorageDirectory().getPath();
String path = txtPath.getText().toString();
File file = new File (raiz + path);
String[] tree = file.list();
if(tree != null) {
ArrayList<String> arr = new ArrayList<>(Arrays.asList(tree));
Collections.sort(arr);
if(!path.equals("/")){
arr.add(0, "..");//se não estamos na raiz, deve dar esta opção para voltar
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, arr);
lstArvore.setAdapter(adapter);
}
}
29
Código 86: disponível em luiztools.com.br/livro-android-fontes
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
atualizarArvore();
}
lstArvore = (ListView)findViewById(R.id.lstArvore);
lstArvore.setOnItemClickListener(new ListView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String path = txtPath.getText().toString();
String item = lstArvore.getItemAtPosition(position).toString();
if(!item.equals("..")) {//se não é o item 'voltar'
File file = new File(Environment.getExternalStorageDirectory()+ path + "/" + item);
if (file.isDirectory()) {//se é uma pasta
txtPath.setText(path.endsWith("/") ? path + item : path + "/" + item);
} else if (file.getName().endsWith(".txt")) {//se é um arquivo de texto
Intent intent = new Intent(MainActivity.this, FormActivity.class);
intent.putExtra("path", file.getAbsolutePath());
intent.putExtra("edit", true);
startActivity(intent);
} else {//outros arquivos
Toast.makeText(view.getContext(), " Arquivo não suportado!",
Toast.LENGTH_LONG).show();
}
}
else{
String[] partes = path.split("/");
String abovePath = path.replace(partes[partes.length-1], "");
txtPath.setText(abovePath);
}
atualizarArvore();
}
});
30
Código 89: disponível em luiztools.com.br/livro-android-fontes
@SuppressLint("ValidFragment")
public NovaPastaDialog(String path){
this();
this.path = path;
}
@Override
public Dialog onCreateDialog(Bundle bundle){
final Activity activity = getActivity();
LayoutInflater inflater = activity.getLayoutInflater();
View v = inflater.inflate(R.layout.dialog_nova_pasta, null);
31
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Digite o nome da nova pasta:" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtNovaPasta" />
</LinearLayout>
<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:orientation="vertical"
tools:context="com.example.fernando.gerenciadordearquivos.FormActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/txtPath"
android:text="Pasta:"/>
<EditText
android:layout_width="fill_parent"
32
android:layout_height="0dp"
android:layout_weight="1"
android:text="Novo Arquivo.txt"
android:hint="Nome do Arquivo"
android:id="@+id/txtNomeArquivo"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="7"
android:text="Lorem ipsum dolor sit amet"
android:id="@+id/txtConteudoArquivo"/>
<LinearLayout
android:layout_width="fill_parent"
android:orientation="horizontal"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Cancelar"
android:onClick="btnCancelar_OnClick"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Salvar"
android:onClick="btnSalvar_OnClick"/>
</LinearLayout>
</LinearLayout>
TextView txtPath;
EditText txtNomeArquivo, txtConteudoArquivo;
boolean edit;
String path;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
33
setContentView(R.layout.activity_form);
txtPath = (TextView)findViewById(R.id.txtPath);
txtNomeArquivo = (EditText)findViewById(R.id.txtNomeArquivo);
txtConteudoArquivo = (EditText)findViewById(R.id.txtConteudoArquivo);
if(edit){
String[] partes = path.split("/");
];
String arquivo = partes[partes.length-1
txtNomeArquivo.setText(arquivo);
txtPath.setText(path.replace(arquivo,""));
txtConteudoArquivo.setText(lerArquivo(path));
}else{
txtPath.setText(path);
}
}
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
34
public void btnSalvar_OnClick(View v){
try {
String arquivo = "/" + txtPath.getText() + "/" + txtNomeArquivo.getText();
File myFile = new File(Environment.getExternalStorageDirectory().getPath() + arquivo);
if(!myFile.exists())
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
fOut.write(txtConteudoArquivo.getText().toString().getBytes());
fOut.close();
finish();
} catch (Exception e) {
Toast.makeText(this, "Não foi possível salvar o arquivo!", Toast.LENGTH_SHORT).show();
}
}
ActivityCompat.requestPermissions( activity,
PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE );
35
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_ctx_editar"
android:title="Editar Arquivo" />
<item
android:id="@+id/menu_ctx_excluir"
android:title="Excluir Arquivo" />
</menu>
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
if (v.getId() == R.id.lstArvore) {
getMenuInflater().inflate(R.menu.menu_context, menu);
}
}
registerForContextMenu(lstArvore);
atualizarArvore();
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info =
(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
36
startActivity(intent);
return true;
}
else if(id == R.id.menu_ctx_excluir){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Excluir")
.setMessage("Tem certeza que deseja excluir " + itemSelecionado + "?")
.setPositiveButton("Sim", new D ialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if(new File(path).delete()){
Toast.makeText(getBaseContext(), i temSelecionado + " excluído com sucesso!",
Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getBaseContext(), " Não foi possível excluir " +
itemSelecionado + "!", Toast.LENGTH_LONG).show();
}
}
})
.create()
.show();
return true;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE Clientes(id integer primary key autoincrement," +
"nome text not null, dataNascimento text not null," +
"vip integer not null, uf text not null, cidade text not null," +
"sexo text not null);");
}
@Override
37
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
38
Código 104: disponível em luiztools.com.br/livro-android-fontes
while(cursor.moveToNext()){
int id = cursor.getInt(0);
String nome = cursor.getString(1);
String data = cursor.getString(2);
String sexo = cursor.getString(3);
String cidade = cursor.getString(4);
String uf = cursor.getString(5) ;
boolean vip = cursor.getInt(6) == 1 ? true : false;
Cliente cliente = new Cliente(id,nome,sexo,data,vip,cidade,uf);
clientes.add(cliente);
}
dba.fecharConexao();
return clientes;
}
}
i nt id;
String nome;
String sexo;
String dataNascimento;
boolean vip;
String cidade;
String uf;
39
ublic Cliente(String nome, String sexo, String dataNascimento, boolean vip, String cidade,
p
String uf){
this(0,nome,sexo,dataNascimento,vip,cidade,uf);
}
public Cliente(int id, String nome, String sexo, String dataNascimento, boolean vip, String
cidade, String uf){
this.id = id;
this.nome = nome;
this.sexo = sexo;
this.dataNascimento = dataNascimento;
this.vip = vip;
this.cidade = cidade;
this.uf = uf;
}
@Override
public String toString(){
return this.nome;
}
}
while(cursor.moveToNext()){
int id = cursor.getInt(0);
String nome = cursor.getString(1);
String data = cursor.getString(2);
String sexo = cursor.getString(3);
40
String cidade = cursor.getString(4);
String uf = cursor.getString(5) ;
boolean vip = cursor.getInt(6) == 1 ? true : false;
Cliente cliente = new Cliente(id,nome,sexo,data,vip,cidade,uf);
clientes.add(cliente);
}
dba.fecharConexao();
return clientes;
}
}
41
public void excluirCliente(int id){
DbAdapter dba = new DbAdapter(ctx);
String sql = "DELETE FROM Clientes WHERE id=" + id;
dba.executarComandoSQL(sql);
}
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView" />
</RelativeLayout>
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView);
carregarListagem();
}
42
listView.setAdapter(clientesAdapter);
}
}
@Override
public String toString(){
return this.nome;
}
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:hint="Nome do Cliente"
android:ems="10"
android:id="@+id/txtNome" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="date"
android:hint="Data de Nascimento"
android:ems="10"
android:id="@+id/txtDataNascimento"
android:layout_below="@+id/txtNome" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
43
android:id="@+id/localizacao"
android:layout_below="@id/txtDataNascimento"
android:orientation="horizontal">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="7"
android:inputType="textPersonName"
android:hint="Cidade"
android:ems="10"
android:id="@+id/txtCidade" />
<Spinner
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="3"
android:id="@+id/spnUf"
android:entries="@array/estados"></Spinner>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sexo:"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/lblSexo"
android:layout_below="@id/localizacao"/>
<RadioGroup
44
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/grpSexo"
android:layout_toRightOf="@+id/lblSexo"
android:layout_below="@id/localizacao">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Masculino"
android:id="@+id/radMasculino"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Feminino"
android:id="@+id/radFeminino"/>
</RadioGroup>
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Cliente VIP"
android:id="@+id/chkVip"
android:layout_below="@id/grpSexo"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/botoes"
android:layout_below="@id/chkVip"
android:orientation="horizontal">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="Cancelar"
android:onClick="btnCancelarOnClick"
android:id="@+id/btnCancelar"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="Salvar"
45
android:onClick="btnSalvarOnClick"
android:id="@+id/btnSalvar"/>
</LinearLayout>
</RelativeLayout>
Cliente cliente;
EditText txtNome, txtDataNascimento, txtCidade;
Spinner spnUf;
RadioButton radMasculino;
RadioGroup grpSexo;
CheckBox chkVip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastro);
}
}
46
Toast.makeText(this, "Cliente salvo com sucesso!", Toast.LENGTH_LONG).show();
finish();
}
@Override
protected void onRestart(){
super.onRestart();
carregarListagem();
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
menu.add("Novo Cliente");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
Intent intent = new Intent(MainActivity.this, CadastroActivity.class);
startActivity(intent);
return true;
}
47
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView);
carregarListagem();
listView.setOnItemLongClickListener(new ListView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
@Override
protected void onCreate(Bundle savedInstanceState) {
48
s uper.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView);
carregarListagem();
listView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cliente cliente = (Cliente)listView.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, CadastroActivity.class);
intent.putExtra("cliente", cliente);
startActivity(intent);
}
});
//o resto do código continua igual
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastro);
txtNome = (EditText)findViewById(R.id.txtNome);
txtCidade = (EditText)findViewById(R.id.txtCidade) ;
txtDataNascimento = (EditText)findViewById(R.id.txtDataNascimento);
spnUf = (Spinner)findViewById(R.id.spnUf);
radMasculino = (RadioButton)findViewById(R.id.radMasculino);
chkVip = (CheckBox)findViewById(R.id.chkVip);
grpSexo = (RadioGroup)findViewById(R.id.grpSexo);
if(cliente.sexo.equals("M"))
grpSexo.check(R.id.radMasculino);
else
grpSexo.check(R.id.radFeminino);
chkVip.setChecked(cliente.vip);
}
}
49
Código 128: disponível em luiztools.com.br/livro-android-fontes
{"ip":"8.8.8.8","country_code":"US","country_name":"United
States","region_code":"","region_name":"","city":"","zip_code":"","time_zone":"","latitude":3
7.751,"longitude":-97.822,"metro_code":0}
<RelativeLayout 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"
tools:context=".LocationActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/ip">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="7"
android:text="177.155.44.231"
android:ems="10"
50
android:id="@+id/txtIP"
android:hint="Digite o IP"
android:inputType="number|text" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="Carregar"
android:id="@+id/btnCarregar"
android:onClick="btnCarregarOnClick" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Geolocalização"
android:textStyle="bold"
android:id="@+id/lblTitulo"
android:layout_below="@+id/ip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="País: Brazil"
android:id="@+id/lblCountry"
android:layout_below="@+id/lblTitulo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Estado: Rio Grande do Sul"
android:id="@+id/lblRegion"
android:layout_below="@+id/lblCountry" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Cidade: Gravataí"
android:id="@+id/lblCity"
android:layout_below="@+id/lblRegion" />
</RelativeLayout>
51
Código 132: disponível em luiztools.com.br/livro-android-fontes
EditText txtIP;
TextView lblCountry, lblRegion, lblCity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location);
txtIP = (EditText)findViewById(R.id.txtIP);
lblCountry = (TextView)findViewById(R.id.lblCountry);
lblRegion = (TextView)findViewById(R.id.lblRegion);
lblCity = (TextView)findViewById(R.id.lblCity);
}
}
try {
while ((line = r.readLine()) != null) {
total.append(line).append('\n');
52
}
}catch(Exception ex) {
ex.printStackTrace();
}
return total.toString();
}
try {
String ip = txtIP.getText().toString();
Localizacao localizacao = ClienteGeoIP.retornarLocalizacaoPorIp(ip);
lblRegion.setText("Estado: " + localizacao.getRegion());
lblCity.setText("Cidade: " + localizacao.getCity());
lblCountry.setText("País: " + localizacao.getCountry());
}
catch(Exception ex){
Toast.makeText(getBaseContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
53
<uses-permission android:name="android.permission.INTERNET" />
<?php
// criamos um array com algumas informações básicas de uma pessoa
$person_info = array(
"nome" => "Luiz Fernando",
"idade" => 28,
"profissao" => "Professor",
"cidade" => utf8_encode("Gravataí")
);
cho $json;
e
?>
{
"nome": "Luiz Fernando",
"idade": 28,
"profissao": "Professor",
"Cidade": "Gravataí"
}
namespace Percutz.Api
{
[ServiceContract]
public interface ITurmaService
54
{
[OperationContract]
[WebGet(UriTemplate = "/EmAndamento", ResponseFormat = WebMessageFormat.Json)]
List<TurmaDTO> RetornarTurmasEmAndamento();
[OperationContract]
[WebGet(UriTemplate = "/EmFormacao", ResponseFormat = WebMessageFormat.Json)]
List<TurmaDTO> RetornarTurmasEmFormacao();
[OperationContract]
[WebGet(UriTemplate = "/Turma/{id}", ResponseFormat = WebMessageFormat.Json)]
TurmaDTO RetornarTurma(string id);
}
}
namespace Percutz.Lib.DTO
{
[DataContract]
public class TurmaDTO
{
[DataMember]
public string Filial { get; set; }
[DataMember]
public string Nivel { g et; set; }
[DataMember]
public short DiaSemana { get; set; }
[DataMember]
public short HoraInicio { get; set; }
[DataMember]
public short HoraFim { get; set; }
55
Código 142: disponível em luiztools.com.br/livro-android-fontes
namespace Percutz.Api
{
public class TurmaService : ITurmaService
{
public List<TurmaDTO> RetornarTurmasEmAndamento()
{
return ControladorTurma.RetornarTurmasEmAndamento(DateTime.Now.Year);
}
[{"DiaSemana":5,"Filial":"Cachoeirinha","HoraFim":1650,"HoraInicio":1415,"Nivel":"Intermediá
rio 1"}]
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
56
t hrows ServletException, IOException {
response.setContentType("application/json;charset=UTF-8");
switch(operacao){
case "Somar": resultado = valor1 + valor2; break;
case "Subtrair": resultado = valor1 - valor2; break;
case "Multiplicar": resultado = valor1 * valor2; break;
case "Dividir": resultado = valor1 / valor2; break;
}
{ "resultado" : 5.0 }
C:\node>express apitest
"dependencies": {
"body-parser": ">=1.15.2",
"cookie-parser": ">=1.4.3",
"date-format": ">=0.0.2",
"debug": ">=2.2.0",
"express": "^4.14.0",
"mongodb": "^2.2.7",
57
"mongoose": "^4.8.2",
"morgan": ">=1.7.0",
"serve-favicon": ">=2.3.0"
}
C:\node\apitest>npm install
C:\node\apitest>npm start
mongo
use apitest
58
var mongoose = require('m
ongoose');
mongoose.connect('mongodb://localhost/apitest');
59
});
});
60
}
res.json(req.body);
res.end();
});
});
61