SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
INSTITUTO TECNOLOGICO
DE LA PIEDAD

INGENIERIA EN SISTEMAS
COMPUTACIONALES

COMPUTO MOVIL

JUAN RENE GARCIA NEGRETE
CRISTIAN OMAR JARAMILLO MENDEZ
OMAR ALEJANDRO RAMIREZ ELORZA
APLICACIÓN ZIRCONIA
En primer lugar vamos a crear un nuevo proyecto llamado Zirconia.
Para ello nos vamos a FileNewAndroid Project

Después de crear el proyecto nos vamos a main.xml se mostrara en color
negro para cambiar el color como se muestra en la imagen nos vamos al xml y
agregamos el color de fondo con el siguiente código:
android:background="#1B3361"
A hora en nuestro main agregamos 5 botones 2 EditText y un TextView
creamos los String para cada componente de la siguiente manera
Nos vamos a la carpeta values dentro de res damos doble click en Strings

Dentro de String damos clic en el boton Add… seleccionamos String y damos
click en el boton Ok
Agregamos un nombre para identificar el String y el mensaje que contendrá.

Creamos los Strings necesarios y procedemos asignarlos a cada componente.
Para ello tenemos dos formas la primera es dentro del código xml de cada
componente llamar la variable String con el siguiente código
android:text="@string/web"
Donde @string hace referencia al tipo de variable obtenida y web que es el
nombre con el que definimos nuestra variable que contiene el mensaje “Ir a
pagina web” definido anterior mente

Otra forma de agregar los String se muestra a continuación
En nuestra forma damos click derecho sobre el componente y damos click en
Edit Text…
Se abre la siguiente ventana donde se muestran los String creados
seleccionamos el que deseamos asignar al componente y damos Click en Ok

Y revisamos los resultados
Después de haber creado los String y agregar los componentes la pantalla
principal quedara de la siguiente manera

En el caso de los EditTExt se hace lo siguiente:
Click derecho sobre el EditText y damos Click sobre Edit Hint... Y
seleccionamos de igual forma el String que contiene el texto que ocupamos.
O en el código xml del componente agregamos la siguiente línea:
android:hint="@string/nomusuario"
Nuevamente @string hace referencia al tipo de variable obtenida y
nomusuario que es el nombre que le asignamos al String.
A hora programaremos en primer lugar el botón Galería de la tienda pero antes
debemos crear un nuevo archivo xml donde se mostrara la galería para ello nos
vamos a la carpeta res dentro de nuestra aplicación desplegamos su contenido
y sobre la carpeta layout damos click derecho  NewAndroid XML File

Se abre la siguiente ventana agregamos el nombre (teniendo en cuenta que
debe iniciar con
una letra en minúscula)
en nuestro caso será
(galeria_publica) y damos click en Finish.
Se crea nuestra nueva ventana cambiamos el color

Para mostrar la galería agregaremos el componente Gallery a nuestra nueva
ventana
Una vez que se ha creado nuestra nueva ventana procedemos a crear una
nueva actividad que contendrá dicha ventana
Para ello nos vamos
derechoNewClass

Se agregamos un nombre
para este caso el nombre
será (Galeria_publica) ya
que nuestro main.xml le
agregamos el nombre en
nuestro caso el nombre será
(galeria_publica) y damos
Click en Finish.
Nota: el nombre
iniciar con una
Mayúscula

debe
letra

a

la

carpeta

srccom.proyectoClick
Después de haber creado la nueva _Actividad se debe especificar en el archivo
AndroidManifest.xm
<activity
android:label="@string/app_registro"
android:name=".Registro_usuario" //Nombre de la clase de nuestra
Actividad
> </activity>

CODIGO GALERIA DE LA TIENDA
public void btgaleria(View v){
Intent intent=new Intent(this,Galeria_publica.class);
startActivity(intent);
}

1.- Se enlaza a la actividad Galeria_publica, con el método onClick llamado btgaleria.

import
import
import
import
import
import
import
import
import
import
import

android.app.Activity;
android.app.AlertDialog;
android.app.Dialog;
android.content.DialogInterface;
android.os.Bundle;
android.view.View;
android.widget.AdapterView;
android.widget.Gallery;
android.widget.ImageView;
android.widget.Toast;
android.widget.AdapterView.OnItemClickListener;

public
class
Galeria_publica
OnItemClickListener{
Gallery gallery;
ImageView imageView;
private String[]
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
"Llavero
};

extends

titlet = {
perla azul ",
perla beige ",
perla beige ",
diamantada ",
Sn Benito ",
gota ",
Sn Benito ",
Sn Benito ",
hoja de parra ",
chilillo ",
angel ",
chilillo grande ",
angel cadena ",
Sn Benito ",
octagon "

Activity

implements
private String[]
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
"Herraje
};
private String[]
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
"Precio:
};

titled = {
plata, perla azul ",
oro, perla beige ",
plata, perla beige ",
oro, diamantada ",
plata, Sn Benito ",
plata, forma gota ",
metalico, Sn Benito ",
metalico, Sn Benito con cadena ",
metalico, hoja de parra ",
metalico, chilillo ",
metalico, angel ",
chilillo grande ",
angel con cadena ",
Sn Benito ",
plata, octagon "
titlep = {
$20",
$20",
$20",
$20",
$25",
$25",
$25",
$25",
$30",
$15",
$25",
$30",
$25",
$20",
$15"

2.- La clase principal hace referencia a la actividad que se está enlazando, se agrega
el método onitemclicklistener, se agregan los import de tanto galería como
imagenView, se introducen los títulos, descripción y precio de los artículos utilizando
prívate String [].

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.galeria_publica);
gallery=(Gallery)findViewById(R.id.gallery1);
imageView=(ImageView)findViewById(R.id.imageView1);
gallery.setAdapter(new Pag_Galeria_Publica(this));
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View arg1,
int position,
long arg3) {
final int a=position;
AlertDialog.Builder dialogBuilder = new
AlertDialog.Builder(Galeria_publica.this);
dialogBuilder.setTitle("Selecciona");
dialogBuilder.setItems(R.array.DIALOGO2, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int
itemm) {
if(itemm==0){
Dialog d = new Dialog(Galeria_publica.this);
d.setTitle(titlet[a]+titlep[a]);
ImageView im=new ImageView(Galeria_publica.this);
im.setImageResource(Pag_Galeria_Publica.ThumbsIds[a]);
d.setContentView(im);
d.show();
Toast.makeText(Galeria_publica.this, titled[a],
Toast.LENGTH_LONG).show();
}
if(itemm==1){
finish();
Toast.makeText(Galeria_publica.this, "Debes registrarte para
poder comprar", Toast.LENGTH_LONG).show();
}
}
});
dialogBuilder.setNegativeButton("CANCEL", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int
which) {
}
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
}
});
}
public void onItemClick(AdapterView<?> arg0, View arg1, int
arg2, long arg3) {
}
}

3.- Al inicio se crea unas variables para señalar el componente, en este caso galería
se encuentra en el layout y se guarda en galería, después se hace lo mismo con la
imagen, depende de que imagen se haya seleccionado, se crea un método si el ítem
es escuchado y clikeado (imagen), se crea otro método de dialog este es una ventana
que te queda sobrepuesta al layout y se crea ahí mismo un adapatador para un arreglo
que se tiene con el nombre dialogo2, nuestro arreglo es de imágenes y nuestro dialogo
lo manejamos para posicionar en este caso será el cero, un ejemplo es que si la
imagen 1 es la posición 0, entonces si presionas a esa misma, te abre otro dialogo con
otro titulo e imagen aquí se selecciona el ítem 1 que te manda el mensaje de debes
registrarte para hacer dicha compra.
CODIGO PAGINA WEB
<uses-permission android:name="android.permission.INTERNET"/>

Se inserta el permiso para el internet en adroid manifest.
public void abrir(View v) {
Toast.makeText(this, "Abriendo
pagina",Toast.LENGTH_SHORT).show();
Intent i=new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.zirconia.com"));
startActivity(i);
}

Se agrega el método onClick en el botón ir a la página web, se pone como
nombre abrir, está haciendo referencia al public void abrir, se agrega un toast
para mandar un mensaje de que se está abriendo la página y manda a la
página www.zirconia.com

Ahora se programara la funcionalidad de los botones Registrar y Entrar

1.- El primero mandara a una pantalla de registro para darse de alta en el
sistema y guardar sus datos de usuario
2.-El segundo se utilizara cada vez que un usuario registrado desee entrar a la
aplicación con su nombre de usuario y contraseña
Para ello primero necesitamos crear una base de datos donde se guardaran
los datos del usuario
En primer lugar creamos una nueva clase en nuestro proyecto, vamos a la
carpeta srccom.proyectoClick derechoNewClass
En la ventana que se muestra agregamos el nombre ConexionBD y damos
click en el botón Finish
Al abrir nuestro nueva clase solo se mostrara este código
public class ConexionBD
{
{
Lo que debemos hacer ahora es extender la clase de SQLiteOpenHelper y
agregar los métodos que necesita para su implementación.
En el método Oncreate se definen las tablas, sus campos con el tipo de dato
public class ConexionBD extends SQLiteOpenHelper
{
public Conexion(Context context, String name, CursorFactory factory, int
version)
{
super(context, name, factory, version)
}
@Override
public void onCreate(SQLiteDatabase db) {
String query= "CREATE TABLE registro(id INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, nombre TEXT, calle TEXT, telefonoca TEXT,
telefonocel TEXT, correo TEXT, nombreu TEXT, contrasenia TEXT)";
String queryy= "CREATE TABLE Compras(idc INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL,id TEXT,nombre TEXT,precio
TEXT,descripcion TEXT)";
db.execSQL(query);
db.execSQL(queryy);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Ya que tenemos creada nuestra clase conexión creamos un nuevo archivo xml
para agregar los campos de registro de usuario como ya se creó con
anterioridad solo se definirán los pasos para hacerlo:
Vamos a la carpeta res layout click derecho  NewAndroid XML File
Colocamos el nombre en la nueva ventana (registro_usuario) y finalmente
damos Click en finish
En nuestra nueva ventana cambiamos el color y agregamos 7 EditText y 3
Botones como se muestran en la imagen

El texto que se muestra en los EditText y Botones se explico anterior mente
de tal forma que no es necesario colocarlo nuevamente.
Al terminar con nuestro nueva ventana vamos a crear una nueva Actividad que
contenga el código de los botones Registrar, Consultar y Eliminar
Para crear la nueva actividad
nos vamos
srccom.proyectoClick derechoNewClass

a

la

carpeta

Colocamos el nombre en la nueva Clase (Registro_usuario) y finalmente
damos Click en finish
Una vez creada la nueva actividad lo que debemos hacer ahora es extender la
clase de Activity y agregar el método onCreate(Bundle savedInstanceState)
donde agregaremos el código que permitirá que esta actividad contenga el xml
antes creado
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.registro_usuario);
}

Después de agregar el método se agregaran en primer lugar agregamos una
variable de tipo ConexionBD
ConexionBD c;
Y en el método onCreate(Bundle savedInstanceState) establecemos la
conexión con el siguiente código:
c=new ConexionBD(this,"ZirconiaBD",null,1);
Al final tendremos esto:
public class Registro_usuario extends Activity{
ConexionBD c;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.registro_usuario);
c= new ConexionBD(this,"ZirconiaBD",null,4);
}
}

Para capturar los valores de los EdiText primero debemos declarar las
variables y asignarles el EditText que corresponde a dicha variable
//Variables EditText
private EditText nombre,calle,telca,telcel,correo,nombreu,contrasenia;

Asignamos los EditText correspondientes a cada variable dentro del método
onCreate(Bundle savedInstanceState) de la siguiente manera
nombre=(EditText)findViewById(R.id.nombre);
calle=(EditText)findViewById(R.id.calle);
correo=(EditText)findViewById(R.id.correo);
telca=(EditText)findViewById(R.id.telca);
telcel=(EditText)findViewById(R.id.telcel);
nombreu=(EditText)findViewById(R.id.nombreu);
contrasenia=(EditText)findViewById(R.id.contrasenia);

Ahora definiremos el código de cada botón en el botón para ello agregaremos
los eventos Onclick necesarios para definir los métodos que ejecutaran las
instrucciones para que cada botón realice la acción correspondiente.
Para el botón Registrar se agregara el evento Onclick siguiendo la secuencia:
Click derecho sobre el botón Other PropertiesInherited from View 
OnClicK  agregamos el nombre del evento (Registrar) y damos Click en Ok
Antes de comenzar debemos declarar los siguientes extra mensajes que nos
servirán mandar información a otra activida.
final static String EXTRA_MESSAGEUSER = "Registro_usuario.MESSAGEUSER";
final static String EXTRA_MESSAGENOMBRE = "Registro_usuario.MESSAGENOMBRE";
final static String EXTRA_MESSAGEDIRECCION = "Registro_usuario.MESSAGEDIRECCION";
final static String EXTRA_MESSAGETELC = "Registro_usuario.MESSAGETELC";
final static String EXTRA_MESSAGETELCE = "Registro_usuario.MESSAGETELCE";
final static String EXTRA_MESSAGECORREO = "Registro_usuario.MESSAGECORREO";
final static String EXTRA_MESSAGEID = "Registro_usuario.MESSAGEID";

El código para el botón Registrar Onclick “Registrar” es el siguiente:
public void Registrar(View view){
//Almacenamos temporalmente el valor de los EditText a las variables
para guardar la informacion en la Base de datos
String nom=nombre.getText().toString();
String call=calle.getText().toString();
String tela=telca.getText().toString();
String tele=telcel.getText().toString();
String nomu=nombreu.getText().toString();
String corre=correo.getText().toString();
String contrase=contrasenia.getText().toString();
SQLiteDatabase op=c.getWritableDatabase();
op.execSQL("INSERT INTO registro(id, nombre, calle, telefonoca, telefonocel, correo,
nombreu,
contrasenia)
VALUES(null,'"+nom+"','"+call+"','"+tela+"','"+tele+"','"+corre+"','"+nomu+"','"+contrase+"')");
op.close();
/*Definimos un objeto de tipo Cursor el cual contiene el resultado de
la búsqueda.Para recorrer el cursor usaremos los métodos:
moveToFirst(): permite desplazarnos al inicio del cursor
moveToNext(): permite movernos al siguiente renglon del
cursor */
SQLiteDatabase o=c.getReadableDatabase();
Cursor cursor = o.rawQuery("SELECT* FROM registro WHERE
nombreu='"+nomu+"' AND contrasenia='"+contrase+"'", null);
if(cursor.moveToFirst()){
do{
Intent intent=new Intent(this,Perfil_usuario.class);
intent.putExtra(EXTRA_MESSAGEID, cursor.getString(0));
intent.putExtra(EXTRA_MESSAGENOMBRE, cursor.getString(1));
intent.putExtra(EXTRA_MESSAGEDIRECCION, cursor.getString(2));
intent.putExtra(EXTRA_MESSAGETELC, cursor.getString(3));
intent.putExtra(EXTRA_MESSAGETELCE, cursor.getString(4));
intent.putExtra(EXTRA_MESSAGECORREO, cursor.getString(5));
intent.putExtra(EXTRA_MESSAGEUSER, cursor.getString(6));
startActivity(intent);
}
while(cursor.moveToNext());
}
else {
Toast.makeText(this,
Toast.LENGTH_LONG).show();
}
cursor.close();
o.close();
}

"¡Hay

campos

obligatorios!",
Como podemos observar dentro del botón registrar se efectual 2 acciones la
primera es guardar un registro en la base de datos y el segundo es hacer una
consulta de los datos guardados, se puede apreciar que dentro del cursor se
encuentra un Intent y varios Extra_Mensajes que nos servirán para mandar
información a otra actividad como se menciono anteriormente en este caso
será a (Perfil_usuario.class) la cual recibirá los EXTRA_MENSAJE con la
información obtenida del cursor al realizar la consulta.
El código para el botón Consultar Onclick “consultar” es el siguiente:
public void consulta(View v)
{
SQLiteDatabase op=c.getReadableDatabase();
Cursor cursor = op.rawQuery("SELECT* FROM registro ", null);
String resultados="";
if(cursor.moveToFirst()){
do{
resultados+=cursor.getString(0)+"
|
"+cursor.getString(1)+"
|"+
cursor.getString(2)+"
|"+cursor.getString(3)+"
|"+cursor.getString(4)+"
|"+cursor.getString(5)+"
|
"+cursor.getString(6)+" |"+ cursor.getString(7)+"n";
}
while(cursor.moveToNext());
Toast.makeText(this, resultados, Toast.LENGTH_LONG).show();
}
cursor.close();
op.close();
}

El código para el botón Eliminar con el evento OnClick “Eliminar” es el
siguiente:
public void Eliminar(View view)
{ String nom=nombre.getText().toString();
SQLiteDatabase op=c.getWritableDatabase();
op.execSQL("DELETE FROM registro WHERE nombre='"+nom+"'");
Toast.makeText(this, "Eliminado", 1).show();
op.close();
}
}
El botón Entrar verificara que los valores introducidos en los EditText sean
correctos en caso que no lo sean mandara un mensaje (Toast) de lo contrario
el usuario podrá entrar al Perfil de usuario.

Dentro de nuestra actividad principal agregaremos el siguiente código
//variables de los EditText
private EditText nombreu,contrasenia;
//Mensajes que guardaran información para recibir en otra
actividad
final static String EXTRA_MESSAGE = "MenuPrincipal.MESSAGE";
final static String EXTRA_MESSAGE1 = "MenuPrincipal.MESSAGE1";

Asignamos los EditText correspondientes a cada variable dentro del método
onCreate(Bundle savedInstanceState) de la siguiente manera
nombreu=(EditText)findViewById(R.id.nombreu1);
contrasenia=(EditText)findViewById(R.id.contrasenia1);

Ahora creamos el método asociado al evento OnClick de botón entrar con el
siguiente código:
public void Entrar(View v){
//Capturamos el valor de las variables EditText para realizar la
consulta
String nom=nombreu.getText().toString();
String con=contrasenia.getText().toString();
SQLiteDatabase op=c.getReadableDatabase();
Cursor cursor = op.rawQuery("SELECT* FROM registro
WHERE nombreu='"+nom+"' AND contrasenia='"+con+"'", null);
if(cursor.moveToFirst()){
do{
Intent intent=new
Intent(this,Perfil_usuario.class);
intent.putExtra(EXTRA_MESSAGE, cursor.getString(0));
intent.putExtra(EXTRA_MESSAGE1,
cursor.getString(6));
startActivity(intent);
}
while(cursor.moveToNext());
nombreu.setText("");
contrasenia.setText("");
}else{
//Verificamos los datos en caso de ser incorrectos mandar un Toast
Toast.makeText(this, "¡Verifique Nombre de usuario
o Contraseña!", Toast.LENGTH_LONG).show();
}
cursor.close();
op.close();
}
Creamos una nueva clase, sobre el proyecto  Click derecho New  Class le
ponemos de nombre Pantalla_Splash

Ahora crearemos un archive .xml llamado splash dentro de la carpeta layout,
Click derecho  New  Android XML File, este archivo contendrá la interfaz
la cual será visible para el usuario, después colocaremos la imagen que será
colocada en la pantalla de inicio de nuestra aplicación, para esto debemos
tener identificada la imagen en nuestra computadora después solo es de
arrastrar la hasta la carpeta drawable-hdpi la cual es subcarpeta de res
después nos pedirá que si deseamos copear dicha imagen en la carpeta le
damos Ok para que se agregue, después en el archivo splash.xm colocamos
el componente de ImageView sobre la pantalla de trabajo para ello después
nos pedirá que imagen contendrá el componente, seleccionamos la imagen
que habíamos agregado, la forma como quedaría seria la siguiente:

Descargar imagen http://bit.ly/18vcRzr
Dentro de la clase Pantalla_Splash.java colocaremos un hilo al cual le
daremos un tiempo de 3000 milisegundos(3 seg).
public class Pantalla_Splash extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread logoTimer = new Thread() {
public void run(){
try{
int logoTimer = 0;
while(logoTimer < 3000){
sleep(100);
logoTimer = logoTimer +100;
};
startActivity(new Intent("com.ZIRCONIA"));
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
finish();
}
}
};
logoTimer.start();
}
}

Terminado los 3 segundos lanzara un intent haciendo llamar a otra pantalla
MenuPrincipal.java la cual es declarada en el archivo AndroidManifest.xml
de la siguiente manera:
<activity
android:label="@string/app_name"
android:name=".MenuPrincipal" >
<intent-filter >
<action
android:name="com.ZIRCONIA"
/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

Dicha pantalla es declarado de forma DEFAULT para que esta sea la final en
caso de hace un back en la aplicación y este back no llegue hasta la pantalla
Splash.
En esta aplicación tendremos una sección para el usuario para ello crearemos
una clase llamada Perfil_usuario.java y un archivo XML llamado
perfil_usuario.xml en el archivo XML, colocaremos dos botones y unos
TextView donde se mandaran los datos personales del usuario como lo es el
Nombre de usuario, Domicilio, Teléfono celular, Teléfono de casa y su
Correo electrónico. Para ello nos vamos a crear las Strings en el archivo
string.xml que está en la carpeta values al abrir el archivo nos saldrá de la
siguiente forma:

Entonces le daremos al botón Add… para que nos de la opción de agregar un
String nueva, saldrá una ventana como la siguiente:

Seleccionamos String después Ok para entonces solo colocaremos el nombre
con el cual será identificada esa String

Des pues de tener todas String creadas se las asignamos a los TextView
correspondientes.
Los dos botones se los agregamos de la siguiente forma en layout
perfil_usuario.xml con todo y sus propiedades:
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="edit_inf_usuario"
android:text="@string/edi_inf_usuario"
android:layout_y="105dp"/>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="galeriaprivada"
android:text="@string/app_galeriaprivada"
android:layout_y="150dp"/>

Desues agragamos un ListView de la siguiente forma en el mismo archivo
<ListView
android:id="@+id/listafija"
android:layout_width="wrap_content"
android:layout_height="260dp" >
</ListView>

La pantalla quedara:
Para la funcionalidad de los botones será la siguiente:
Generamos un OnClick llamado edit_inf_usuario para el primer botón

En código que se colocado será el siguiente:
public void edit_inf_usuario(View v){
String Nombreu=nombreu.getText().toString();
SQLiteDatabase op=c.getReadableDatabase();
Cursor cursor = op.rawQuery("SELECT* FROM registro
WHERE nombreu='"+Nombreu+"'", null);
if(cursor.moveToFirst()){
do{
Intent intent=new Intent(this,Editar_info_usuario.class);
intent.putExtra(EXTRA_MESSAGEID, cursor.getString(0));
intent.putExtra(EXTRA_MESSAGENOM, cursor.getString(1));
intent.putExtra(EXTRA_MESSAGEDOM, cursor.getString(2));
intent.putExtra(EXTRA_MESSAGETELA, cursor.getString(3));
intent.putExtra(EXTRA_MESSAGETELC, cursor.getString(4));
intent.putExtra(EXTRA_MESSAGENOMU, cursor.getString(6));
startActivity(intent);
}
while(cursor.moveToNext());
}
cursor.close();
op.close();
}

De esta manera nos lanzara a la clase Editar_info_usuario.java para poder
editar los datos personales del usuario.

Como son:
 Nombre
 Domicilio
 Teléfono
Un segundo OnClick para el segundo botón

En código que se colocado será el siguiente:
public void galeriaprivada(View v){
String Nombreu=nombreu.getText().toString();
SQLiteDatabase op=c.getReadableDatabase();
Cursor cursor = op.rawQuery("SELECT* FROM registro
WHERE nombreu='"+Nombreu+"'", null);
if(cursor.moveToFirst()){
do{
Intent intent=new Intent(this,Galeria_privada.class);
intent.putExtra(EXTRA_MESSAGEID, cursor.getString(0));
startActivity(intent);
}
while(cursor.moveToNext());
}
cursor.close();
op.close();
}

Este evento te lanza a la clase Galeria_privada.java mostrando los productos
en venta.
En la sección del componente de la lista se mostraran los productos
comprados, para ello creamos una clase llamada adaptador.java
public class adaptador extends ArrayAdapter<item> {
private Activity activity;
private List<item> items;
private item objBean;
private int row;
public adaptador(Activity act, int resource,List<item>
arrayList) {
super(act, resource, arrayList);
this.activity = act;
this.row = resource;
this.items = arrayList;
}
@Override
public View getView(final int position, View convertView, ViewGroup
parent) {
View view = convertView;
ViewHolder holder;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(row, null);
holder = new ViewHolder();
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
if ((items == null) || ((position + 1) > items.size()))
return view;
objBean = items.get(position);
holder.tvnombre = (TextView)
view.findViewById(R.id.tnombre);
holder.tvprecio = (TextView)
view.findViewById(R.id.tprecio);
holder.tvdescripcion = (TextView)
view.findViewById(R.id.tdescripcion);
if (holder.tvnombre != null && null != objBean.getNombre()&&
objBean.getNombre().trim().length() > 0) {
holder.tvnombre.setText(Html.fromHtml(objBean.getNombre()));
}
if (holder.tvprecio != null && null != objBean.getPrecio()
&& objBean.getPrecio().trim().length() > 0) {
holder.tvprecio.setText(Html.fromHtml(objBean.getPrecio()));
}
if (holder.tvdescripcion != null && null != objBean.getDescripcion()&&
objBean.getDescripcion().trim().length() > 0) {
holder.tvdescripcion.setText(Html.fromHtml(objBean.getDescripcio
n()));
}
return view;
}
public class ViewHolder {
public TextView tvnombre,tvprecio,tvdescripcion;
}
}
En esta clase se colocaran arreglos donde tendrán función en base a una
consulta para que esa cantidad de registros sea el tamaño de la lista y por
consiguiente adapte la lista.
El layout va relacionado con una clase llamada ítem.java la cual contiene los
métodos los cuales interactuaran con el layout row.xml el cual contiene el
diseño del ítem como se muestra:

Una vez ya la relación entre las clases y los layouts la pantalla final quedara de
la siguiente forma:
La lista tiene un evento onItemClick este evento lanza una ventana modal con
la ayuda de esta podemos mostrar algunas funciones, estas son declaradas en
el archivo string.xml de la siguiente forma:
<string-array name="DIALOGO">
<item >Eliminar registro</item>
<item >Compartir en Facebook</item>
</string-array>

Evento onItemClick
public void onItemClick(AdapterView<?> arg0, View arg1, int
posicion, long arg3) {
final int a=posicion;
AlertDialog.Builder dialogBuilder = new
AlertDialog.Builder(this);
dialogBuilder.setTitle("Selecciona");
dialogBuilder.setItems(R.array.DIALOGO, new
DialogInterface.OnClickListener() {
//@Override
public void onClick(DialogInterface dialog, int item)
{
// TODO Auto-generated method stub
if(item==0){
SQLiteDatabase op=c.getWritableDatabase();
op.execSQL("DELETE FROM Compras WHERE
idc='"+resultado.get(a).getIdc()+"'");
op.close();
Actualiza_lista();
}
if(item==1){
compartir_compra();
}
}
});
dialogBuilder.setNegativeButton("CANCEL", new
DialogInterface.OnClickListener() {
//@Override
public void onClick(DialogInterface dialog, int
which){
// TODO Auto-generated method stub
}
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
}

Al ser seleccionado el primer ítem este ara una consulta y dependiendo del id
del producto lo eliminara del historial de compras del usuario, si se selecciona
el segundo llamara el método compartir_compra
public void compartir_compra(){
SQLiteDatabase op=c.getReadableDatabase();
Cursor cursor = op.rawQuery("SELECT* FROM Compras where
id='"+IDREG+"'", null);
if(cursor.moveToFirst()){
do{
com_nombre=cursor.getString(2);
com_precio=cursor.getString(3);
com_descrip=cursor.getString(4);
}
while(cursor.moveToNext());
connectToFacebook();
}
cursor.close();
op.close();
}

Este método lo que hace es en base al registro cliqueado obtiene su id y
guarda sus datos en las variables para después poder mandarlos compartir en
el muro del Facebook, después de hacer la búsqueda de los campos se manda
llamar el método connectToFacebook() el cual tiene la finalidad de declarar los
permisos que la aplicación creada en Facebook tiene sobre el usuario en
referencia al registro, algunos de los permisos que se piden son los siguientes:
"user_activities",
"user_birthday",
"user_groups",
"user_likes",
"user_location",
"user_notes",
"user_online_presence",
"user_photo_video_tags",
"user_photos",
Cuando el login es exitoso entonces te mandan los datos al muro del usuario
que accedió a la red social mandando un mensaje de lo que se publicara :

Descarga la app: http://bit.ly/1giWDhw

CODIGO ACERCA DE ZIRCONIA

public void EnviarMensaje(View v){
Intent intent=new Intent(this,Acerca_de_Zirconia.class);
startActivity(intent);
}

1.- Se enlaza a la actividad Acerca_de_zirconia con el método Onclick EnviarMensaje
android:text="Sucursal"
android:text="Av. Tecnológico #2000"
android:text="Col. Meseta de los Laureles"
android:text="La Piedad, Mich."
android:text="Tel: 3521130834"
android:text="Tienes dudas o sugerencias Envíanos un mensaje"

A cada textView fue modificado para que apareciera los datos que nosotros
queríamos, a los botones se declaran de tipo string, se agregan 3 text fields a dos de
ellos se les agrega el nombre de tipo string y aparecerá automáticamente dentro de la
caja de texto
<uses-permissionandroid:name="android.permission.CALL_PRIVILEGED"/>
public void llamar(View v){
Intent i=new Intent(Intent.ACTION_CALL);
i.setData(Uri.parse("tel:3521130834"));
startActivity(i);
}
}

Se agrega el permiso para la llamada automática, insertamos el método onClick que
se declara llamar y escribimos el numero que la gente podría ponerse en contacto a la
sucursal.

public class Acerca_de_Zirconia extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.acerca_de_zirconia);
}
public void enviar(View v){
EditText direcc=(EditText)findViewById(R.id.etdireccion);
EditText nom=(EditText)findViewById(R.id.etnombre);
EditText mjs=(EditText)findViewById(R.id.etasunto);
String email=direcc.getText().toString();
String n=nom.getText().toString();
String m=mjs.getText().toString();
if (email.matches("")||n.matches("")||m.matches("")) {
Toast.makeText(this, "Todos los campos son obligatorios",
Toast.LENGTH_SHORT).show();
return;
}
else {
Intent correo=new Intent(Intent.ACTION_SEND);
correo.putExtra(Intent.EXTRA_EMAIL,new
String[]{"cristian_jaramillo@live.com.mx"});
correo.putExtra(Intent.EXTRA_SUBJECT, n+", "+email);
correo.putExtra(Intent.EXTRA_TEXT, m);
correo.setType("message/rfc822");
startActivity(Intent.createChooser(correo, "Email"));
}
}

4.- En el botón enviar se inserta el método OnClick, a cada EditText se le pone
una variable los hacemos string obteniendo el email(etdireccion), n(etnombre),
m(etasunto), agregamos un if con un matches para que al usuario no se le
pase llenar todos lo campos, lo hace obligatorio, si se le pasa le enviara un msj
en un toast, todos los campos están llenos entonces el else permite enviar el
correo electrónico a la dirección que nosotros hemos puesto, se agrega el
permiso “message/rfc822”.
ARCHIVO ANDROIDMANIFEST.XML
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.proyecto"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission
android:name="android.permission.CALL_PRIVILEGED"/>
<application
android:icon="@drawable/zirconia"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".MenuPrincipal" >
<intent-filter >
<action android:name="com.ZIRCONIA" />
<category
android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".Pantalla_Splash" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_registro"
android:name=".Registro_usuario" >
</activity>
<activity
android:label="@string/galeria"
android:name=".Galeria_publica" >
</activity>
<activity
android:label="@string/galeria"
android:name=".Galeria_privada" >
</activity>
<activity
android:label="@string/infor"
android:name=".Acerca_de_Zirconia" >
</activity>
<activity
android:label="@string/app_perfil_usuario"
android:name=".Perfil_usuario" >
</activity>
<activity
android:label="@string/app_perfil_usuario"
android:name=".Editar_info_usuario" >
</activity>
<activity
android:label="@string/app_acerca"
android:name=".Acerca_de_Zirconia" >
</activity>
</application>
</manifest>
ARCHIVO STRING.XML
<resources>
<string name="app_name">Zirconia</string>
<string name="bgaleria">Galeria de la tienda</string>
<string name="web">Ir a pagina web</string>
<string name="help">Acera de Zirconia</string>
<string name="ent">Entrar</string>
<string name="nom">Nombre</string>
<string name="call">Domicilio de calle</string>
<string name="tele">Telefono de casa</string>
<string name="telphone">Telefono celular</string>
<string name="emaile">Correo electronico</string>
<string name="nomusuario">Nombre de usuario</string>
<string name="contrasenia">Contraseña</string>
<string name="app_registro">Formulario de registro</string>
<string name="app_galeria">Galeria publica</string>
<string name="infor">Informacion sobre Zirconia</string>
<string name="reg">Registrar</string>
<string name="galeria">Galeria</string>
<string name="app_perfil_usuario">Perfil de usuario</string>
<string
name="edi_inf_usuario">Editar
información
de
usuario</string>
<string name="app_editar_perfil">Editar perfil de usario</string>
<string name="guadar">Guardar</string>
<string name="app_galeriaprivada">Galeria Privada</string>
<string name="app_acerca">Contactanos</string>
<string name="enviar">Enviar</string>
<string name="descripcionn">Descripcion</string>
<string name="precioo">Precio</string>
<string-array name="DIALOGO">
<item >Eliminar registro</item>
<item >Compartir en Facebook</item>
</string-array>
<string-array name="DIALOGO2">
<item >Ver imagen</item>
<item >Comprar producto</item>
</string-array>
</resources>
Pantalla oculta
Creamos un nuevo layout con el nombre de shadow a este layout le
colocamos el componente de ImageView, previamente debemos tener la
imagen ubicada en nuestra carpeta drawable-hdpi dentro del proyecto la
forma de la cual se mandara llamar es la siguiente:
Agregamos un implemento
OnTouchListener”

en

clase

Editar_info_usuario

“implements

En la misma clase colocaremos el siguiente código.
shadow=(ImageView)findViewById(R.id.zirconia);
shadow.setOnTouchListener(this);
public boolean onTouch(View v, MotionEvent e){
switch(e.getAction()){
case MotionEvent.ACTION_DOWN:
++i;
if (i==25){
Toast.makeText(this, "Zirconia art By Cristian
Jaramillo", 1).show();
setContentView(R.layout.shadow);
}
break;
}
return false;
}

De esta forma llamaremos al layout shadow.xml este evento se lleva a cabo
después de pulsar 25 veces sobre sobre la imagen Zirconia.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (16)

Android
AndroidAndroid
Android
 
Interfaz gráfica de usuario
Interfaz gráfica de usuarioInterfaz gráfica de usuario
Interfaz gráfica de usuario
 
Programa 2
Programa 2Programa 2
Programa 2
 
Programa2
Programa2Programa2
Programa2
 
Manual de aplicaciones en android
Manual de aplicaciones en androidManual de aplicaciones en android
Manual de aplicaciones en android
 
Cubo: creación y ejecución
Cubo: creación y ejecuciónCubo: creación y ejecución
Cubo: creación y ejecución
 
Guia practicaiuprg3
Guia practicaiuprg3Guia practicaiuprg3
Guia practicaiuprg3
 
Ejerciciosj query
Ejerciciosj queryEjerciciosj query
Ejerciciosj query
 
Programa 2
Programa 2Programa 2
Programa 2
 
Disena Tu Mueble Guia Utilizacion
Disena Tu Mueble Guia UtilizacionDisena Tu Mueble Guia Utilizacion
Disena Tu Mueble Guia Utilizacion
 
20091223 Creacion De Bibliotecas Parametricas En Catia
20091223 Creacion De Bibliotecas Parametricas En Catia20091223 Creacion De Bibliotecas Parametricas En Catia
20091223 Creacion De Bibliotecas Parametricas En Catia
 
Elemento n3
Elemento n3Elemento n3
Elemento n3
 
Android
AndroidAndroid
Android
 
Access 2007 Y Visual 2008
Access 2007 Y Visual 2008Access 2007 Y Visual 2008
Access 2007 Y Visual 2008
 
Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
Laboratorio desarrollo de aplicaciones WEB con GeneXus TiloLaboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
 
Ejercicios desarrollados de visual basic (según libro)
Ejercicios desarrollados de visual basic (según libro)Ejercicios desarrollados de visual basic (según libro)
Ejercicios desarrollados de visual basic (según libro)
 

Destacado

Cerámicas Dentales
Cerámicas Dentales Cerámicas Dentales
Cerámicas Dentales AxelJara
 
Cerámicas dentales mat dent 2011
Cerámicas dentales mat dent 2011Cerámicas dentales mat dent 2011
Cerámicas dentales mat dent 2011AxelJara
 
Protesis dentales flexibles actividad 9
Protesis dentales flexibles actividad 9Protesis dentales flexibles actividad 9
Protesis dentales flexibles actividad 9jekana12
 
DIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRM
DIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRMDIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRM
DIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRMsindylorena123456
 
Exposicion protesis flexible.
Exposicion protesis flexible. Exposicion protesis flexible.
Exposicion protesis flexible. Oliver Feng
 
Seleccion Del Material R.
Seleccion Del Material R.Seleccion Del Material R.
Seleccion Del Material R.mariacarrillo
 
Los polimeros y sus aleaciones
Los polimeros y sus aleacionesLos polimeros y sus aleaciones
Los polimeros y sus aleacionesKevin Martinez
 
Dental Zirconia (Dental Materials)
Dental Zirconia (Dental Materials) Dental Zirconia (Dental Materials)
Dental Zirconia (Dental Materials) Carlos Jurado
 
Zirconio dental
Zirconio dentalZirconio dental
Zirconio dentalclarybel09
 
Zirconia all ceramic restorations/ dentistry course in india
Zirconia all ceramic restorations/ dentistry course in indiaZirconia all ceramic restorations/ dentistry course in india
Zirconia all ceramic restorations/ dentistry course in indiaIndian dental academy
 
Seleccion del material restaurador
Seleccion del material restauradorSeleccion del material restaurador
Seleccion del material restauradormariacarrillo
 
Primera clase de materiales dentales
Primera clase de materiales dentalesPrimera clase de materiales dentales
Primera clase de materiales dentalesNikon
 

Destacado (20)

Cerámicas Dentales
Cerámicas Dentales Cerámicas Dentales
Cerámicas Dentales
 
Cerámicas dentales mat dent 2011
Cerámicas dentales mat dent 2011Cerámicas dentales mat dent 2011
Cerámicas dentales mat dent 2011
 
Zirconia 100% Blanca
Zirconia 100% BlancaZirconia 100% Blanca
Zirconia 100% Blanca
 
Protesis dentales flexibles actividad 9
Protesis dentales flexibles actividad 9Protesis dentales flexibles actividad 9
Protesis dentales flexibles actividad 9
 
DIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRM
DIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRMDIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRM
DIAPOSITIVAS MATERIALES DENTALES-ESTOMATOLOGIA I UNTRM
 
Prótesis flexible
Prótesis flexiblePrótesis flexible
Prótesis flexible
 
Exposicion protesis flexible.
Exposicion protesis flexible. Exposicion protesis flexible.
Exposicion protesis flexible.
 
Seleccion Del Material R.
Seleccion Del Material R.Seleccion Del Material R.
Seleccion Del Material R.
 
Los polimeros y sus aleaciones
Los polimeros y sus aleacionesLos polimeros y sus aleaciones
Los polimeros y sus aleaciones
 
Dental Zirconia (Dental Materials)
Dental Zirconia (Dental Materials) Dental Zirconia (Dental Materials)
Dental Zirconia (Dental Materials)
 
Zirconio dental
Zirconio dentalZirconio dental
Zirconio dental
 
PPT 1 - polímeros naturales
PPT 1 - polímeros naturalesPPT 1 - polímeros naturales
PPT 1 - polímeros naturales
 
Ud6materiales dentales
Ud6materiales dentalesUd6materiales dentales
Ud6materiales dentales
 
Prótesis dentales-flexible
Prótesis dentales-flexiblePrótesis dentales-flexible
Prótesis dentales-flexible
 
Zirconia all ceramic restorations/ dentistry course in india
Zirconia all ceramic restorations/ dentistry course in indiaZirconia all ceramic restorations/ dentistry course in india
Zirconia all ceramic restorations/ dentistry course in india
 
Seleccion del material restaurador
Seleccion del material restauradorSeleccion del material restaurador
Seleccion del material restaurador
 
Resinas composites
Resinas compositesResinas composites
Resinas composites
 
Resinas Compuestas
Resinas CompuestasResinas Compuestas
Resinas Compuestas
 
Materiales dentales
Materiales dentalesMateriales dentales
Materiales dentales
 
Primera clase de materiales dentales
Primera clase de materiales dentalesPrimera clase de materiales dentales
Primera clase de materiales dentales
 

Similar a Aplicación Zirconia - Creación de una app para gestión de una tienda de bisutería

Similar a Aplicación Zirconia - Creación de una app para gestión de una tienda de bisutería (20)

Programa 2
Programa 2Programa 2
Programa 2
 
Programa 2
Programa 2Programa 2
Programa 2
 
Programa2 eclipse
Programa2 eclipsePrograma2 eclipse
Programa2 eclipse
 
Programa2
Programa2 Programa2
Programa2
 
Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monetti
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basic
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datos
 
Manual de aplicaciones moviles
Manual de aplicaciones movilesManual de aplicaciones moviles
Manual de aplicaciones moviles
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Taller WP8 en TEC de Monterrey
Taller WP8 en TEC de MonterreyTaller WP8 en TEC de Monterrey
Taller WP8 en TEC de Monterrey
 
Practicasbasicasparaandroid 120112060404-phpapp02
Practicasbasicasparaandroid 120112060404-phpapp02Practicasbasicasparaandroid 120112060404-phpapp02
Practicasbasicasparaandroid 120112060404-phpapp02
 
Programa 2 "Sumar"
Programa 2 "Sumar"Programa 2 "Sumar"
Programa 2 "Sumar"
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Base de datos desde vb 6.0
Base de datos desde vb 6.0Base de datos desde vb 6.0
Base de datos desde vb 6.0
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
 

Más de Cristian Omar Jaramillo Méndez (9)

Cheat-Sheet Git Commands
Cheat-Sheet Git CommandsCheat-Sheet Git Commands
Cheat-Sheet Git Commands
 
Intro to ipv6
Intro to ipv6Intro to ipv6
Intro to ipv6
 
Android manifest
Android manifestAndroid manifest
Android manifest
 
Aplicaciones móviles actuales
Aplicaciones móviles actualesAplicaciones móviles actuales
Aplicaciones móviles actuales
 
Frame relay
Frame relayFrame relay
Frame relay
 
Cable coaxial
Cable coaxialCable coaxial
Cable coaxial
 
Estructuras de los sistemas operativos
Estructuras de los sistemas operativosEstructuras de los sistemas operativos
Estructuras de los sistemas operativos
 
Solicitud de crédio new
Solicitud de crédio newSolicitud de crédio new
Solicitud de crédio new
 
Creación de un nuevo proyecto android
Creación de un nuevo proyecto androidCreación de un nuevo proyecto android
Creación de un nuevo proyecto android
 

Último

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 

Último (20)

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 

Aplicación Zirconia - Creación de una app para gestión de una tienda de bisutería

  • 1. INSTITUTO TECNOLOGICO DE LA PIEDAD INGENIERIA EN SISTEMAS COMPUTACIONALES COMPUTO MOVIL JUAN RENE GARCIA NEGRETE CRISTIAN OMAR JARAMILLO MENDEZ OMAR ALEJANDRO RAMIREZ ELORZA
  • 2. APLICACIÓN ZIRCONIA En primer lugar vamos a crear un nuevo proyecto llamado Zirconia. Para ello nos vamos a FileNewAndroid Project Después de crear el proyecto nos vamos a main.xml se mostrara en color negro para cambiar el color como se muestra en la imagen nos vamos al xml y agregamos el color de fondo con el siguiente código: android:background="#1B3361"
  • 3. A hora en nuestro main agregamos 5 botones 2 EditText y un TextView creamos los String para cada componente de la siguiente manera Nos vamos a la carpeta values dentro de res damos doble click en Strings Dentro de String damos clic en el boton Add… seleccionamos String y damos click en el boton Ok
  • 4. Agregamos un nombre para identificar el String y el mensaje que contendrá. Creamos los Strings necesarios y procedemos asignarlos a cada componente. Para ello tenemos dos formas la primera es dentro del código xml de cada componente llamar la variable String con el siguiente código android:text="@string/web" Donde @string hace referencia al tipo de variable obtenida y web que es el nombre con el que definimos nuestra variable que contiene el mensaje “Ir a pagina web” definido anterior mente Otra forma de agregar los String se muestra a continuación En nuestra forma damos click derecho sobre el componente y damos click en Edit Text…
  • 5. Se abre la siguiente ventana donde se muestran los String creados seleccionamos el que deseamos asignar al componente y damos Click en Ok Y revisamos los resultados
  • 6. Después de haber creado los String y agregar los componentes la pantalla principal quedara de la siguiente manera En el caso de los EditTExt se hace lo siguiente: Click derecho sobre el EditText y damos Click sobre Edit Hint... Y seleccionamos de igual forma el String que contiene el texto que ocupamos. O en el código xml del componente agregamos la siguiente línea: android:hint="@string/nomusuario" Nuevamente @string hace referencia al tipo de variable obtenida y nomusuario que es el nombre que le asignamos al String.
  • 7. A hora programaremos en primer lugar el botón Galería de la tienda pero antes debemos crear un nuevo archivo xml donde se mostrara la galería para ello nos vamos a la carpeta res dentro de nuestra aplicación desplegamos su contenido y sobre la carpeta layout damos click derecho  NewAndroid XML File Se abre la siguiente ventana agregamos el nombre (teniendo en cuenta que debe iniciar con una letra en minúscula) en nuestro caso será (galeria_publica) y damos click en Finish.
  • 8. Se crea nuestra nueva ventana cambiamos el color Para mostrar la galería agregaremos el componente Gallery a nuestra nueva ventana
  • 9. Una vez que se ha creado nuestra nueva ventana procedemos a crear una nueva actividad que contendrá dicha ventana Para ello nos vamos derechoNewClass Se agregamos un nombre para este caso el nombre será (Galeria_publica) ya que nuestro main.xml le agregamos el nombre en nuestro caso el nombre será (galeria_publica) y damos Click en Finish. Nota: el nombre iniciar con una Mayúscula debe letra a la carpeta srccom.proyectoClick
  • 10. Después de haber creado la nueva _Actividad se debe especificar en el archivo AndroidManifest.xm <activity android:label="@string/app_registro" android:name=".Registro_usuario" //Nombre de la clase de nuestra Actividad > </activity> CODIGO GALERIA DE LA TIENDA public void btgaleria(View v){ Intent intent=new Intent(this,Galeria_publica.class); startActivity(intent); } 1.- Se enlaza a la actividad Galeria_publica, con el método onClick llamado btgaleria. import import import import import import import import import import import android.app.Activity; android.app.AlertDialog; android.app.Dialog; android.content.DialogInterface; android.os.Bundle; android.view.View; android.widget.AdapterView; android.widget.Gallery; android.widget.ImageView; android.widget.Toast; android.widget.AdapterView.OnItemClickListener; public class Galeria_publica OnItemClickListener{ Gallery gallery; ImageView imageView; private String[] "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero "Llavero }; extends titlet = { perla azul ", perla beige ", perla beige ", diamantada ", Sn Benito ", gota ", Sn Benito ", Sn Benito ", hoja de parra ", chilillo ", angel ", chilillo grande ", angel cadena ", Sn Benito ", octagon " Activity implements
  • 11. private String[] "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje "Herraje }; private String[] "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: "Precio: }; titled = { plata, perla azul ", oro, perla beige ", plata, perla beige ", oro, diamantada ", plata, Sn Benito ", plata, forma gota ", metalico, Sn Benito ", metalico, Sn Benito con cadena ", metalico, hoja de parra ", metalico, chilillo ", metalico, angel ", chilillo grande ", angel con cadena ", Sn Benito ", plata, octagon " titlep = { $20", $20", $20", $20", $25", $25", $25", $25", $30", $15", $25", $30", $25", $20", $15" 2.- La clase principal hace referencia a la actividad que se está enlazando, se agrega el método onitemclicklistener, se agregan los import de tanto galería como imagenView, se introducen los títulos, descripción y precio de los artículos utilizando prívate String []. @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.galeria_publica); gallery=(Gallery)findViewById(R.id.gallery1); imageView=(ImageView)findViewById(R.id.imageView1); gallery.setAdapter(new Pag_Galeria_Publica(this)); gallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> adapter, View arg1, int position, long arg3) { final int a=position; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Galeria_publica.this); dialogBuilder.setTitle("Selecciona");
  • 12. dialogBuilder.setItems(R.array.DIALOGO2, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int itemm) { if(itemm==0){ Dialog d = new Dialog(Galeria_publica.this); d.setTitle(titlet[a]+titlep[a]); ImageView im=new ImageView(Galeria_publica.this); im.setImageResource(Pag_Galeria_Publica.ThumbsIds[a]); d.setContentView(im); d.show(); Toast.makeText(Galeria_publica.this, titled[a], Toast.LENGTH_LONG).show(); } if(itemm==1){ finish(); Toast.makeText(Galeria_publica.this, "Debes registrarte para poder comprar", Toast.LENGTH_LONG).show(); } } }); dialogBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); } }); } public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { } } 3.- Al inicio se crea unas variables para señalar el componente, en este caso galería se encuentra en el layout y se guarda en galería, después se hace lo mismo con la imagen, depende de que imagen se haya seleccionado, se crea un método si el ítem es escuchado y clikeado (imagen), se crea otro método de dialog este es una ventana que te queda sobrepuesta al layout y se crea ahí mismo un adapatador para un arreglo que se tiene con el nombre dialogo2, nuestro arreglo es de imágenes y nuestro dialogo lo manejamos para posicionar en este caso será el cero, un ejemplo es que si la imagen 1 es la posición 0, entonces si presionas a esa misma, te abre otro dialogo con otro titulo e imagen aquí se selecciona el ítem 1 que te manda el mensaje de debes registrarte para hacer dicha compra.
  • 13. CODIGO PAGINA WEB <uses-permission android:name="android.permission.INTERNET"/> Se inserta el permiso para el internet en adroid manifest. public void abrir(View v) { Toast.makeText(this, "Abriendo pagina",Toast.LENGTH_SHORT).show(); Intent i=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.zirconia.com")); startActivity(i); } Se agrega el método onClick en el botón ir a la página web, se pone como nombre abrir, está haciendo referencia al public void abrir, se agrega un toast para mandar un mensaje de que se está abriendo la página y manda a la página www.zirconia.com Ahora se programara la funcionalidad de los botones Registrar y Entrar 1.- El primero mandara a una pantalla de registro para darse de alta en el sistema y guardar sus datos de usuario 2.-El segundo se utilizara cada vez que un usuario registrado desee entrar a la aplicación con su nombre de usuario y contraseña Para ello primero necesitamos crear una base de datos donde se guardaran los datos del usuario En primer lugar creamos una nueva clase en nuestro proyecto, vamos a la carpeta srccom.proyectoClick derechoNewClass En la ventana que se muestra agregamos el nombre ConexionBD y damos click en el botón Finish
  • 14. Al abrir nuestro nueva clase solo se mostrara este código public class ConexionBD { { Lo que debemos hacer ahora es extender la clase de SQLiteOpenHelper y agregar los métodos que necesita para su implementación. En el método Oncreate se definen las tablas, sus campos con el tipo de dato public class ConexionBD extends SQLiteOpenHelper { public Conexion(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version) } @Override public void onCreate(SQLiteDatabase db) { String query= "CREATE TABLE registro(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, nombre TEXT, calle TEXT, telefonoca TEXT, telefonocel TEXT, correo TEXT, nombreu TEXT, contrasenia TEXT)"; String queryy= "CREATE TABLE Compras(idc INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,id TEXT,nombre TEXT,precio TEXT,descripcion TEXT)"; db.execSQL(query); db.execSQL(queryy); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } Ya que tenemos creada nuestra clase conexión creamos un nuevo archivo xml para agregar los campos de registro de usuario como ya se creó con anterioridad solo se definirán los pasos para hacerlo: Vamos a la carpeta res layout click derecho  NewAndroid XML File Colocamos el nombre en la nueva ventana (registro_usuario) y finalmente damos Click en finish
  • 15. En nuestra nueva ventana cambiamos el color y agregamos 7 EditText y 3 Botones como se muestran en la imagen El texto que se muestra en los EditText y Botones se explico anterior mente de tal forma que no es necesario colocarlo nuevamente. Al terminar con nuestro nueva ventana vamos a crear una nueva Actividad que contenga el código de los botones Registrar, Consultar y Eliminar Para crear la nueva actividad nos vamos srccom.proyectoClick derechoNewClass a la carpeta Colocamos el nombre en la nueva Clase (Registro_usuario) y finalmente damos Click en finish Una vez creada la nueva actividad lo que debemos hacer ahora es extender la clase de Activity y agregar el método onCreate(Bundle savedInstanceState) donde agregaremos el código que permitirá que esta actividad contenga el xml antes creado public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.registro_usuario); } Después de agregar el método se agregaran en primer lugar agregamos una variable de tipo ConexionBD
  • 16. ConexionBD c; Y en el método onCreate(Bundle savedInstanceState) establecemos la conexión con el siguiente código: c=new ConexionBD(this,"ZirconiaBD",null,1); Al final tendremos esto: public class Registro_usuario extends Activity{ ConexionBD c; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.registro_usuario); c= new ConexionBD(this,"ZirconiaBD",null,4); } } Para capturar los valores de los EdiText primero debemos declarar las variables y asignarles el EditText que corresponde a dicha variable //Variables EditText private EditText nombre,calle,telca,telcel,correo,nombreu,contrasenia; Asignamos los EditText correspondientes a cada variable dentro del método onCreate(Bundle savedInstanceState) de la siguiente manera nombre=(EditText)findViewById(R.id.nombre); calle=(EditText)findViewById(R.id.calle); correo=(EditText)findViewById(R.id.correo); telca=(EditText)findViewById(R.id.telca); telcel=(EditText)findViewById(R.id.telcel); nombreu=(EditText)findViewById(R.id.nombreu); contrasenia=(EditText)findViewById(R.id.contrasenia); Ahora definiremos el código de cada botón en el botón para ello agregaremos los eventos Onclick necesarios para definir los métodos que ejecutaran las instrucciones para que cada botón realice la acción correspondiente. Para el botón Registrar se agregara el evento Onclick siguiendo la secuencia: Click derecho sobre el botón Other PropertiesInherited from View  OnClicK  agregamos el nombre del evento (Registrar) y damos Click en Ok
  • 17. Antes de comenzar debemos declarar los siguientes extra mensajes que nos servirán mandar información a otra activida. final static String EXTRA_MESSAGEUSER = "Registro_usuario.MESSAGEUSER"; final static String EXTRA_MESSAGENOMBRE = "Registro_usuario.MESSAGENOMBRE"; final static String EXTRA_MESSAGEDIRECCION = "Registro_usuario.MESSAGEDIRECCION"; final static String EXTRA_MESSAGETELC = "Registro_usuario.MESSAGETELC"; final static String EXTRA_MESSAGETELCE = "Registro_usuario.MESSAGETELCE"; final static String EXTRA_MESSAGECORREO = "Registro_usuario.MESSAGECORREO"; final static String EXTRA_MESSAGEID = "Registro_usuario.MESSAGEID"; El código para el botón Registrar Onclick “Registrar” es el siguiente: public void Registrar(View view){ //Almacenamos temporalmente el valor de los EditText a las variables para guardar la informacion en la Base de datos String nom=nombre.getText().toString(); String call=calle.getText().toString(); String tela=telca.getText().toString(); String tele=telcel.getText().toString(); String nomu=nombreu.getText().toString(); String corre=correo.getText().toString(); String contrase=contrasenia.getText().toString(); SQLiteDatabase op=c.getWritableDatabase(); op.execSQL("INSERT INTO registro(id, nombre, calle, telefonoca, telefonocel, correo, nombreu, contrasenia) VALUES(null,'"+nom+"','"+call+"','"+tela+"','"+tele+"','"+corre+"','"+nomu+"','"+contrase+"')"); op.close(); /*Definimos un objeto de tipo Cursor el cual contiene el resultado de la búsqueda.Para recorrer el cursor usaremos los métodos: moveToFirst(): permite desplazarnos al inicio del cursor moveToNext(): permite movernos al siguiente renglon del cursor */ SQLiteDatabase o=c.getReadableDatabase(); Cursor cursor = o.rawQuery("SELECT* FROM registro WHERE nombreu='"+nomu+"' AND contrasenia='"+contrase+"'", null); if(cursor.moveToFirst()){ do{ Intent intent=new Intent(this,Perfil_usuario.class); intent.putExtra(EXTRA_MESSAGEID, cursor.getString(0)); intent.putExtra(EXTRA_MESSAGENOMBRE, cursor.getString(1)); intent.putExtra(EXTRA_MESSAGEDIRECCION, cursor.getString(2)); intent.putExtra(EXTRA_MESSAGETELC, cursor.getString(3)); intent.putExtra(EXTRA_MESSAGETELCE, cursor.getString(4)); intent.putExtra(EXTRA_MESSAGECORREO, cursor.getString(5)); intent.putExtra(EXTRA_MESSAGEUSER, cursor.getString(6)); startActivity(intent); } while(cursor.moveToNext()); } else { Toast.makeText(this, Toast.LENGTH_LONG).show(); } cursor.close(); o.close(); } "¡Hay campos obligatorios!",
  • 18. Como podemos observar dentro del botón registrar se efectual 2 acciones la primera es guardar un registro en la base de datos y el segundo es hacer una consulta de los datos guardados, se puede apreciar que dentro del cursor se encuentra un Intent y varios Extra_Mensajes que nos servirán para mandar información a otra actividad como se menciono anteriormente en este caso será a (Perfil_usuario.class) la cual recibirá los EXTRA_MENSAJE con la información obtenida del cursor al realizar la consulta. El código para el botón Consultar Onclick “consultar” es el siguiente: public void consulta(View v) { SQLiteDatabase op=c.getReadableDatabase(); Cursor cursor = op.rawQuery("SELECT* FROM registro ", null); String resultados=""; if(cursor.moveToFirst()){ do{ resultados+=cursor.getString(0)+" | "+cursor.getString(1)+" |"+ cursor.getString(2)+" |"+cursor.getString(3)+" |"+cursor.getString(4)+" |"+cursor.getString(5)+" | "+cursor.getString(6)+" |"+ cursor.getString(7)+"n"; } while(cursor.moveToNext()); Toast.makeText(this, resultados, Toast.LENGTH_LONG).show(); } cursor.close(); op.close(); } El código para el botón Eliminar con el evento OnClick “Eliminar” es el siguiente: public void Eliminar(View view) { String nom=nombre.getText().toString(); SQLiteDatabase op=c.getWritableDatabase(); op.execSQL("DELETE FROM registro WHERE nombre='"+nom+"'"); Toast.makeText(this, "Eliminado", 1).show(); op.close(); } }
  • 19. El botón Entrar verificara que los valores introducidos en los EditText sean correctos en caso que no lo sean mandara un mensaje (Toast) de lo contrario el usuario podrá entrar al Perfil de usuario. Dentro de nuestra actividad principal agregaremos el siguiente código //variables de los EditText private EditText nombreu,contrasenia; //Mensajes que guardaran información para recibir en otra actividad final static String EXTRA_MESSAGE = "MenuPrincipal.MESSAGE"; final static String EXTRA_MESSAGE1 = "MenuPrincipal.MESSAGE1"; Asignamos los EditText correspondientes a cada variable dentro del método onCreate(Bundle savedInstanceState) de la siguiente manera nombreu=(EditText)findViewById(R.id.nombreu1); contrasenia=(EditText)findViewById(R.id.contrasenia1); Ahora creamos el método asociado al evento OnClick de botón entrar con el siguiente código: public void Entrar(View v){ //Capturamos el valor de las variables EditText para realizar la consulta String nom=nombreu.getText().toString(); String con=contrasenia.getText().toString(); SQLiteDatabase op=c.getReadableDatabase(); Cursor cursor = op.rawQuery("SELECT* FROM registro WHERE nombreu='"+nom+"' AND contrasenia='"+con+"'", null); if(cursor.moveToFirst()){ do{ Intent intent=new Intent(this,Perfil_usuario.class); intent.putExtra(EXTRA_MESSAGE, cursor.getString(0)); intent.putExtra(EXTRA_MESSAGE1, cursor.getString(6)); startActivity(intent); } while(cursor.moveToNext()); nombreu.setText(""); contrasenia.setText(""); }else{ //Verificamos los datos en caso de ser incorrectos mandar un Toast Toast.makeText(this, "¡Verifique Nombre de usuario o Contraseña!", Toast.LENGTH_LONG).show(); } cursor.close(); op.close(); }
  • 20. Creamos una nueva clase, sobre el proyecto  Click derecho New  Class le ponemos de nombre Pantalla_Splash Ahora crearemos un archive .xml llamado splash dentro de la carpeta layout, Click derecho  New  Android XML File, este archivo contendrá la interfaz la cual será visible para el usuario, después colocaremos la imagen que será colocada en la pantalla de inicio de nuestra aplicación, para esto debemos tener identificada la imagen en nuestra computadora después solo es de arrastrar la hasta la carpeta drawable-hdpi la cual es subcarpeta de res después nos pedirá que si deseamos copear dicha imagen en la carpeta le damos Ok para que se agregue, después en el archivo splash.xm colocamos el componente de ImageView sobre la pantalla de trabajo para ello después nos pedirá que imagen contendrá el componente, seleccionamos la imagen que habíamos agregado, la forma como quedaría seria la siguiente: Descargar imagen http://bit.ly/18vcRzr
  • 21. Dentro de la clase Pantalla_Splash.java colocaremos un hilo al cual le daremos un tiempo de 3000 milisegundos(3 seg). public class Pantalla_Splash extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash); Thread logoTimer = new Thread() { public void run(){ try{ int logoTimer = 0; while(logoTimer < 3000){ sleep(100); logoTimer = logoTimer +100; }; startActivity(new Intent("com.ZIRCONIA")); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ finish(); } } }; logoTimer.start(); } } Terminado los 3 segundos lanzara un intent haciendo llamar a otra pantalla MenuPrincipal.java la cual es declarada en el archivo AndroidManifest.xml de la siguiente manera: <activity android:label="@string/app_name" android:name=".MenuPrincipal" > <intent-filter > <action android:name="com.ZIRCONIA" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> Dicha pantalla es declarado de forma DEFAULT para que esta sea la final en caso de hace un back en la aplicación y este back no llegue hasta la pantalla Splash.
  • 22. En esta aplicación tendremos una sección para el usuario para ello crearemos una clase llamada Perfil_usuario.java y un archivo XML llamado perfil_usuario.xml en el archivo XML, colocaremos dos botones y unos TextView donde se mandaran los datos personales del usuario como lo es el Nombre de usuario, Domicilio, Teléfono celular, Teléfono de casa y su Correo electrónico. Para ello nos vamos a crear las Strings en el archivo string.xml que está en la carpeta values al abrir el archivo nos saldrá de la siguiente forma: Entonces le daremos al botón Add… para que nos de la opción de agregar un String nueva, saldrá una ventana como la siguiente: Seleccionamos String después Ok para entonces solo colocaremos el nombre con el cual será identificada esa String Des pues de tener todas String creadas se las asignamos a los TextView correspondientes.
  • 23. Los dos botones se los agregamos de la siguiente forma en layout perfil_usuario.xml con todo y sus propiedades: <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="edit_inf_usuario" android:text="@string/edi_inf_usuario" android:layout_y="105dp"/> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="galeriaprivada" android:text="@string/app_galeriaprivada" android:layout_y="150dp"/> Desues agragamos un ListView de la siguiente forma en el mismo archivo <ListView android:id="@+id/listafija" android:layout_width="wrap_content" android:layout_height="260dp" > </ListView> La pantalla quedara:
  • 24. Para la funcionalidad de los botones será la siguiente: Generamos un OnClick llamado edit_inf_usuario para el primer botón En código que se colocado será el siguiente: public void edit_inf_usuario(View v){ String Nombreu=nombreu.getText().toString(); SQLiteDatabase op=c.getReadableDatabase(); Cursor cursor = op.rawQuery("SELECT* FROM registro WHERE nombreu='"+Nombreu+"'", null); if(cursor.moveToFirst()){ do{ Intent intent=new Intent(this,Editar_info_usuario.class); intent.putExtra(EXTRA_MESSAGEID, cursor.getString(0)); intent.putExtra(EXTRA_MESSAGENOM, cursor.getString(1)); intent.putExtra(EXTRA_MESSAGEDOM, cursor.getString(2)); intent.putExtra(EXTRA_MESSAGETELA, cursor.getString(3)); intent.putExtra(EXTRA_MESSAGETELC, cursor.getString(4)); intent.putExtra(EXTRA_MESSAGENOMU, cursor.getString(6)); startActivity(intent); } while(cursor.moveToNext()); } cursor.close(); op.close(); } De esta manera nos lanzara a la clase Editar_info_usuario.java para poder editar los datos personales del usuario. Como son:  Nombre  Domicilio  Teléfono
  • 25. Un segundo OnClick para el segundo botón En código que se colocado será el siguiente: public void galeriaprivada(View v){ String Nombreu=nombreu.getText().toString(); SQLiteDatabase op=c.getReadableDatabase(); Cursor cursor = op.rawQuery("SELECT* FROM registro WHERE nombreu='"+Nombreu+"'", null); if(cursor.moveToFirst()){ do{ Intent intent=new Intent(this,Galeria_privada.class); intent.putExtra(EXTRA_MESSAGEID, cursor.getString(0)); startActivity(intent); } while(cursor.moveToNext()); } cursor.close(); op.close(); } Este evento te lanza a la clase Galeria_privada.java mostrando los productos en venta.
  • 26. En la sección del componente de la lista se mostraran los productos comprados, para ello creamos una clase llamada adaptador.java public class adaptador extends ArrayAdapter<item> { private Activity activity; private List<item> items; private item objBean; private int row; public adaptador(Activity act, int resource,List<item> arrayList) { super(act, resource, arrayList); this.activity = act; this.row = resource; this.items = arrayList; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view = convertView; ViewHolder holder; if (view == null) { LayoutInflater inflater = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(row, null); holder = new ViewHolder(); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } if ((items == null) || ((position + 1) > items.size())) return view; objBean = items.get(position); holder.tvnombre = (TextView) view.findViewById(R.id.tnombre); holder.tvprecio = (TextView) view.findViewById(R.id.tprecio); holder.tvdescripcion = (TextView) view.findViewById(R.id.tdescripcion); if (holder.tvnombre != null && null != objBean.getNombre()&& objBean.getNombre().trim().length() > 0) { holder.tvnombre.setText(Html.fromHtml(objBean.getNombre())); } if (holder.tvprecio != null && null != objBean.getPrecio() && objBean.getPrecio().trim().length() > 0) { holder.tvprecio.setText(Html.fromHtml(objBean.getPrecio())); } if (holder.tvdescripcion != null && null != objBean.getDescripcion()&& objBean.getDescripcion().trim().length() > 0) { holder.tvdescripcion.setText(Html.fromHtml(objBean.getDescripcio n())); } return view; } public class ViewHolder { public TextView tvnombre,tvprecio,tvdescripcion; } }
  • 27. En esta clase se colocaran arreglos donde tendrán función en base a una consulta para que esa cantidad de registros sea el tamaño de la lista y por consiguiente adapte la lista. El layout va relacionado con una clase llamada ítem.java la cual contiene los métodos los cuales interactuaran con el layout row.xml el cual contiene el diseño del ítem como se muestra: Una vez ya la relación entre las clases y los layouts la pantalla final quedara de la siguiente forma:
  • 28. La lista tiene un evento onItemClick este evento lanza una ventana modal con la ayuda de esta podemos mostrar algunas funciones, estas son declaradas en el archivo string.xml de la siguiente forma: <string-array name="DIALOGO"> <item >Eliminar registro</item> <item >Compartir en Facebook</item> </string-array> Evento onItemClick public void onItemClick(AdapterView<?> arg0, View arg1, int posicion, long arg3) { final int a=posicion; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); dialogBuilder.setTitle("Selecciona"); dialogBuilder.setItems(R.array.DIALOGO, new DialogInterface.OnClickListener() { //@Override public void onClick(DialogInterface dialog, int item) { // TODO Auto-generated method stub if(item==0){ SQLiteDatabase op=c.getWritableDatabase(); op.execSQL("DELETE FROM Compras WHERE idc='"+resultado.get(a).getIdc()+"'"); op.close();
  • 29. Actualiza_lista(); } if(item==1){ compartir_compra(); } } }); dialogBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { //@Override public void onClick(DialogInterface dialog, int which){ // TODO Auto-generated method stub } }); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); } Al ser seleccionado el primer ítem este ara una consulta y dependiendo del id del producto lo eliminara del historial de compras del usuario, si se selecciona el segundo llamara el método compartir_compra public void compartir_compra(){ SQLiteDatabase op=c.getReadableDatabase(); Cursor cursor = op.rawQuery("SELECT* FROM Compras where id='"+IDREG+"'", null); if(cursor.moveToFirst()){ do{ com_nombre=cursor.getString(2); com_precio=cursor.getString(3); com_descrip=cursor.getString(4); } while(cursor.moveToNext()); connectToFacebook(); } cursor.close(); op.close(); } Este método lo que hace es en base al registro cliqueado obtiene su id y guarda sus datos en las variables para después poder mandarlos compartir en el muro del Facebook, después de hacer la búsqueda de los campos se manda llamar el método connectToFacebook() el cual tiene la finalidad de declarar los permisos que la aplicación creada en Facebook tiene sobre el usuario en referencia al registro, algunos de los permisos que se piden son los siguientes: "user_activities", "user_birthday", "user_groups", "user_likes", "user_location", "user_notes", "user_online_presence", "user_photo_video_tags", "user_photos",
  • 30. Cuando el login es exitoso entonces te mandan los datos al muro del usuario que accedió a la red social mandando un mensaje de lo que se publicara : Descarga la app: http://bit.ly/1giWDhw CODIGO ACERCA DE ZIRCONIA public void EnviarMensaje(View v){ Intent intent=new Intent(this,Acerca_de_Zirconia.class); startActivity(intent); } 1.- Se enlaza a la actividad Acerca_de_zirconia con el método Onclick EnviarMensaje
  • 31. android:text="Sucursal" android:text="Av. Tecnológico #2000" android:text="Col. Meseta de los Laureles" android:text="La Piedad, Mich." android:text="Tel: 3521130834" android:text="Tienes dudas o sugerencias Envíanos un mensaje" A cada textView fue modificado para que apareciera los datos que nosotros queríamos, a los botones se declaran de tipo string, se agregan 3 text fields a dos de ellos se les agrega el nombre de tipo string y aparecerá automáticamente dentro de la caja de texto <uses-permissionandroid:name="android.permission.CALL_PRIVILEGED"/> public void llamar(View v){ Intent i=new Intent(Intent.ACTION_CALL); i.setData(Uri.parse("tel:3521130834")); startActivity(i); } } Se agrega el permiso para la llamada automática, insertamos el método onClick que se declara llamar y escribimos el numero que la gente podría ponerse en contacto a la sucursal. public class Acerca_de_Zirconia extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.acerca_de_zirconia); } public void enviar(View v){ EditText direcc=(EditText)findViewById(R.id.etdireccion); EditText nom=(EditText)findViewById(R.id.etnombre); EditText mjs=(EditText)findViewById(R.id.etasunto);
  • 32. String email=direcc.getText().toString(); String n=nom.getText().toString(); String m=mjs.getText().toString(); if (email.matches("")||n.matches("")||m.matches("")) { Toast.makeText(this, "Todos los campos son obligatorios", Toast.LENGTH_SHORT).show(); return; } else { Intent correo=new Intent(Intent.ACTION_SEND); correo.putExtra(Intent.EXTRA_EMAIL,new String[]{"cristian_jaramillo@live.com.mx"}); correo.putExtra(Intent.EXTRA_SUBJECT, n+", "+email); correo.putExtra(Intent.EXTRA_TEXT, m); correo.setType("message/rfc822"); startActivity(Intent.createChooser(correo, "Email")); } } 4.- En el botón enviar se inserta el método OnClick, a cada EditText se le pone una variable los hacemos string obteniendo el email(etdireccion), n(etnombre), m(etasunto), agregamos un if con un matches para que al usuario no se le pase llenar todos lo campos, lo hace obligatorio, si se le pasa le enviara un msj en un toast, todos los campos están llenos entonces el else permite enviar el correo electrónico a la dirección que nosotros hemos puesto, se agrega el permiso “message/rfc822”.
  • 33. ARCHIVO ANDROIDMANIFEST.XML <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.proyecto" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.CALL_PRIVILEGED"/> <application android:icon="@drawable/zirconia" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".MenuPrincipal" > <intent-filter > <action android:name="com.ZIRCONIA" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> <activity android:label="@string/app_name" android:name=".Pantalla_Splash" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/app_registro" android:name=".Registro_usuario" > </activity> <activity android:label="@string/galeria" android:name=".Galeria_publica" > </activity> <activity android:label="@string/galeria" android:name=".Galeria_privada" > </activity> <activity android:label="@string/infor" android:name=".Acerca_de_Zirconia" > </activity> <activity android:label="@string/app_perfil_usuario" android:name=".Perfil_usuario" > </activity> <activity android:label="@string/app_perfil_usuario" android:name=".Editar_info_usuario" > </activity> <activity android:label="@string/app_acerca" android:name=".Acerca_de_Zirconia" > </activity> </application> </manifest>
  • 34. ARCHIVO STRING.XML <resources> <string name="app_name">Zirconia</string> <string name="bgaleria">Galeria de la tienda</string> <string name="web">Ir a pagina web</string> <string name="help">Acera de Zirconia</string> <string name="ent">Entrar</string> <string name="nom">Nombre</string> <string name="call">Domicilio de calle</string> <string name="tele">Telefono de casa</string> <string name="telphone">Telefono celular</string> <string name="emaile">Correo electronico</string> <string name="nomusuario">Nombre de usuario</string> <string name="contrasenia">Contraseña</string> <string name="app_registro">Formulario de registro</string> <string name="app_galeria">Galeria publica</string> <string name="infor">Informacion sobre Zirconia</string> <string name="reg">Registrar</string> <string name="galeria">Galeria</string> <string name="app_perfil_usuario">Perfil de usuario</string> <string name="edi_inf_usuario">Editar información de usuario</string> <string name="app_editar_perfil">Editar perfil de usario</string> <string name="guadar">Guardar</string> <string name="app_galeriaprivada">Galeria Privada</string> <string name="app_acerca">Contactanos</string> <string name="enviar">Enviar</string> <string name="descripcionn">Descripcion</string> <string name="precioo">Precio</string> <string-array name="DIALOGO"> <item >Eliminar registro</item> <item >Compartir en Facebook</item> </string-array> <string-array name="DIALOGO2"> <item >Ver imagen</item> <item >Comprar producto</item> </string-array> </resources>
  • 35. Pantalla oculta Creamos un nuevo layout con el nombre de shadow a este layout le colocamos el componente de ImageView, previamente debemos tener la imagen ubicada en nuestra carpeta drawable-hdpi dentro del proyecto la forma de la cual se mandara llamar es la siguiente: Agregamos un implemento OnTouchListener” en clase Editar_info_usuario “implements En la misma clase colocaremos el siguiente código. shadow=(ImageView)findViewById(R.id.zirconia); shadow.setOnTouchListener(this); public boolean onTouch(View v, MotionEvent e){ switch(e.getAction()){ case MotionEvent.ACTION_DOWN: ++i; if (i==25){ Toast.makeText(this, "Zirconia art By Cristian Jaramillo", 1).show(); setContentView(R.layout.shadow); } break; } return false; } De esta forma llamaremos al layout shadow.xml este evento se lleva a cabo después de pulsar 25 veces sobre sobre la imagen Zirconia.