APUNTES APP ANDROID
Índice:
Combinaciones de teclas 2
Cosas Teoricas 2
Clases Android 4
TextView 4
CheckBox 4
RadioButton 4
RadioGroup: 4
Spinner 5
Toast 5
ListView 5
ImageButton 5
InputMethodManager 6
Interfaces Android 6
[Link] 6
Layouts: 6
LinearLayout: 6
Cosas varias: 6
Para reutilizar estilos o values: 6
Para que no se pueda rotar el dispositivo: 7
Para traducir a otro idioma: 7
Para generar icono de varias densidades facil: 7
Para traducir a otro idioma: 7
Para agregar otra ventana(Activity) en la app: 7
Para pasar datos entre ventanas: 8
Para crear un menu: 8
Para crear un dibujos: 9
Para que la app sea solo horizontal se pone: 10
Para poner un background que va de un color a otro: 10
Para poner un hover background a un boton: 11
Para recuperar un dato cuando se gira la pantalla : 11
Para recuperar un dato cuando se cierra o minimiza: 12
Para hacer un boton que vuelva atras: 12
Para obtener posicion presionada en pantalla: 12
Para hacer varios hilos: 13
Para obtener texto de un boton clickeado: 13
Para obtener String de algún elemento en java: 13
Para usar audio o video: 13
Listener de boton: 13
Para recibir información de un fragmento a una ventana: 14
Para usar camara se usa: 14
Combinaciones de teclas
- alt + space -> para añadir un string de tu lista de strings xml.
Cosas Teoricas
- Activity : Proceso de la aplicación
- Fragmentos :
Se usa para reutilizar código java,botones con sus estilos medidas todo en [Link]
para añadirlo a alguna ventana se pone en el xml el siguiente código:
<fragment
android:layout:width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/menu"
android:name="selecciona app>java>carpeta de clases>selecciona la clase del fragment"
android:layout="@layout/nombre del layout fragment">
</fragment>
Para guardar fragmentos en un array se tiene que iniciar un objeto de la clase del
fragmento , ejm:
array[0]=new FragmentClass();
Para cambiar un fragmento por otro dinámicamente:
public void cambFrag(){
FragmentManager manejador=getFragmentManager();
FragmentTransaction transaccion=[Link]();
[Link]([Link],new FragmentClass());
[Link]();
Clases Android
TextView
Sirve para mostrar algún texto
-> .getText()
-> .setText()
CheckBox
-> .isChecked == retorna un boolean
RadioButton
-> .isChecked == retorna un boolean
RadioGroup:
->Para obtener el id del botón seleccionado:
RadioGroup radiob=(RadioGroup)findViewById([Link]);
[Link]();
Spinner
Es donde aparecen varias opciones y seleccionas una.
Para usarlo primero creas un array de Strings luego pones el siguiente código
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,[Link].simple_spinner_item,arrayString)
-> .setAdapter(adapter) == Asigna las opciones del spinner
-> .getSelectedItem() == tienes que convertirlo a string .
1->Para personalizar tu spinner se crea un archivo layout, y en el xml se pone:
<xml version=”1.0”...>
<TextView
android:propiedad=” ”
android:textSize=”24sp”
android:padding=”10sp”
xmlns:android=” [Link] />
2->Luego se pone en el ArrayAdapter en el segundo argumento
[Link]
Toast
Muestra una alerta en el telf.
-> [Link](this,”hola”,Toast.LENGTH_LONG).show()
ListView
para ver elementos ordenados en una lista ; como el spinner tienes que usar un
ArrayAdapter y ahí poner los estilos y el array string de elementos que contendrá.
-Para agregar una acción para cada elemento clickeado :
[Link](new [Link](){
@override
public void onItemClick(AdapterView<?> adapterView,View view,int i,long l){
[Link](“el elemento es ”+[Link](i));
}
});
ImageButton
Muestra un botón con una imagen de fondo :
Las imágenes se pegan en ‘res > mipmap’
InputMethodManager
Permite realizar una acción al teclado, u otro elemento que usaste para escribir en el
input.(como cerrar el teclado por ejemplo ,el código sería el siguiente)
InputMethodManager teclado=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
[Link]([Link](),0);
Interfaces Android
[Link]
Sirve para detectar la tecla pulsada y hacer una acción según eso,ejem de código:
[Link](new EventoTeclado());
class EventoTeclado implements [Link]{
@Override
public boolean onEditorAction(){
if(actionId==EditorInfo.IME_ACTION_DONE){
si la tecla de deone es presionada osea el check
}
}
}
Layouts:
LinearLayout:
layout_weight:Es una propiedad para darle un porcentaje de la pantalla a cierto
elemento
Cosas varias:
Para reutilizar estilos o values:
En el archivo [Link] se pone los estilos:
<resources>
<style name="identificador">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
</resources>
Para values en el archivo values se pondria:
<dimen name=”identificador”>12dp</dimen>
Para usarlo solo se pondría @dimen/identificador cuando tengas que poner una
unidad de medida.Y para usar estilo se pondría en el elemento por ejem:
<TextView
style=”nombreEstilo”
/>
Para que no se pueda rotar el dispositivo:
Se tiene que ir a [Link] , luego dentro de activity se pone lo siguiente:
android:screenOrientation=”portrait”
Para traducir a otro idioma:
Se crea un archivo [Link] con el mismo nombre pero se le pone que es para
otro idioma.O crear otro layout especial para el idioma inglés
Para generar icono de varias densidades facil:
Entra al siguiente link: [Link]
Luego se reemplazan las imágenes que vienen por defecto
Para traducir a otro idioma:
Para crear otro layout pero en modo horizontal se crea un layout con el mismo
nombre pero se pone que es horizontal.
Para agregar otra ventana(Activity) en la app:
Se crea otro layout y se crea una clase java que hereda de Activity y dentro de esa
clase se pone:
protected void onCreate(Bundle savedInstanceState){
[Link](savedInstanceState);
setContentView([Link]);
}
Luego para que se ejecute se crea el siguiente método:
public void ejecutarVentana(View view){
Intent i=new Intent(this,[Link])
startActivity(i);
}
Se pone en el onclick del botón que quieres que muestre esta nueva ventana
luego en [Link] se declara la nueva ventana para eso se pone entre
<activity> el nombre de la [Link]én se le puede poner diversos temas de
apariencia a la ventana con android:theme=”@style/nombre” eso dentro de
<activity>
Para pasar datos entre ventanas:
En el método ejecutarVentana se pone (antes de startActivity(i)) lo siguiente:
[Link](“valor1”,var1); //primero va la clave luego el valor
[Link](..)....y asi
Para obtener los datos en el oncreate de la ventana receptora se pone lo siguiente :
Bundle datos=getIntent().getExtras();
int num1=[Link]("clave");
Para crear un menu:
ActionBar:Se crea un archivo de tipo Menu para el menú.En el xml se pone:
<menu xmlns:android="[Link]
xmlns:tools="[Link]
tools:context=".archivoJavaMain">
<item android:id="@+id/nombredeId"
android:title="titulo de la opcion"/>
</menu>
Luego se pone lo siguiente en el código java para que se inicie.
@override
public boolean onCreateOptionsMenu(Menu mimenu){
getMenuInflater().inflate([Link],mimenu);
return true;
}
Para asignar que se va a hacer segun la opcion seleccionada:
@Override
public boolean onOptionsItemSelected(MenuItem opcion_menu){
int id=opcion_menu.getItemId();
if(id==[Link]){
//metodo que hacer
return true;
}
return [Link](opcion_menu);
}
Si le das un icono al elemento del menú xml se mostrara en la barra de arriba con el
siguiente código:
<item android:id="elid"
android:title="titulo"
android:icon="@android:drawable/ic_menu_preference"//direccion de ejemplo
app:showAsAction="never" o app:showAsAction="ifRoom" o
app:showAsAction="always"
/>
O también puedes crear una toolbar con el siguiente código:
Cabe recalcar que se tienes que crear el action bar igualmente
<[Link]
xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="color/colorPrimary">
</[Link] >
Luego se incluye este layout en el main layout con el siguiente código:
<include layout="layout/nombre"
android:id="@+id/tool_bar"></include>
Luego en la clase main java se inicializa con el siguiente código:
toolbar=(Toolbar)findViewById([Link]);
setSupportActionBar(toolbar);
Por último en themes se cambia lo siguiente
parent=”[Link]”
o se pone:
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
Para crear un dibujos:
Aca tenemos un ejemplo para dibujar un círculo azul:
public class MiVista extends View{
public MiVista(Context context){
super(context);
}
protected void onDraw(Canvas canvas){
Paint miPincel=new Paint();
[Link]([Link]);
[Link](8);
[Link]([Link]);
[Link](175,175,100,miPincel);
}
}
Luego en el método onCreate se cambia lo siguiente
setContentView(new MiVista(this));
Para dibujar un círculo con trazo(Path) pero con un texto alrededor se cambia lo
siguiente:
protected void onDraw(Canvas canvas){
Path miTrazo=new Path();
[Link](350,350,200,[Link]);
Paint miPincel=new Paint();
[Link]([Link]);
[Link](8);
[Link]([Link]);
[Link](miTrazo,miPincel);
[Link](1);
[Link]([Link]);
[Link](40);
[Link](Typeface.SANS_SERIF);
[Link]("textos aca",mitrazo,40,100,miPincel);
}
Para que la app sea solo horizontal se pone:
En el [Link] dentro de las etiquetas <Activity> se pone:
android:screenOrientation=”landscape”
Para poner un background que va de un color a otro:
Se crea un xml dentro de src>main>res>drawable con el siguiente codigo:
<selector xmlns:android="[Link]
<item>
<shape>
<gradient android:startColor="#426ac6"
android:endColor="#0d2969"
android:angle="90"
</shape>
</item>
</selector>
Luego en el layout o elemento se pone el siguiente código:
android:background=”@drawable/nombre”
Para poner un hover background a un boton:
Usando el código anterior se cambia el <item>, luego se pondría el código del boton
en estado de reposo .
<item android:state_pressed="true">
<shape>
<solid android:color="#de5bd2"/>
<corners android:radius="24dp"/>
</shape>
</item>
<item android:state_pressed="true">
<shape>
codigo reposo
</shape>
</item>
Para recuperar un dato cuando se gira la pantalla :
Se pone el siguiente código en el mainActivity java
public void onSaveInstanceState(Bundle estado){
[Link]("clave",4);
....
[Link](estado);
}
public void onRestoreInstanceState(Bundle estado){
[Link](estado);
int recuperado=[Link]("clave");
//hacer lo que quieras con el recuperado aqui
Para recuperar un dato cuando se cierra o minimiza:
La info se guarda en una carpeta llamada shared_prefs .
public void onPause(){
[Link]();
SharedPreferences datos=[Link](this);
[Link] miEditor=[Link]();
[Link]("clave",9);
[Link]();
public void onResume(){
[Link]();
SharedPreferences datos =[Link](this);
variable=[Link]("clave",0);//0 seria si no lo encuentra
//aqui haces lo que quieras con la variable
}
Para hacer un boton que vuelva atras:
Se crea un método para el botón que se pone en el archivo java donde está el botón.
public void volver(View vista){
onBackPressed();
}
Para obtener posicion presionada en pantalla:
Dentro de la clase :
public boolean onTouchEvent(MotionEvent evento){
int x=(int)[Link]();
int y=(int)[Link]();
return false;
}
Para hacer varios hilos:
Se usa la clase Runnable (leer API) y clase Handler para ejecutar el hilo.
Para obtener texto de un boton clickeado:
public void metodoBoton(View view){
String texto=(String)((Button)vista).getText();
Para obtener String de algún elemento en java:
Se puede usar para los if o para otra cosa:
if([Link](getString([Link])))
Para usar audio o video:
Se crea una carpeta en res con el nombre de raw donde se almacenan los
archivos , luego en java :
MediaPlayer recurso
oncreate(){
...
recurso=[Link](this,[Link]);
}
reproducir(){
[Link]();
}
Listener de boton:
[Link](new [Link](){
public void onClick(View v){
//lo que quieres que haga
}
})
Para recibir información de un fragmento a una ventana:
Se crea una interface,primero en la actividad se implementa la interface y se declara el
método como parámetro el dato que quieres pasar,luego en el fragmento se pone el
siguiente código:
public void pasarDatos(){
Activity actividad=getActivity();
((InterfazNombre)actividad).nombreMetodo(dato);
}
Para usar camara se usa:
La clase CameraManager , ejemplo de codigo:
CameraManager camara=(CameraManager)getSystemService(Context.CAMERA_SERVICE);
try{
idCamara=[Link]()[0];
}carch(Exception e){
[Link]();
}
//prender linterna
try{
[Link](idCamara,true);
}catch(Exception e){
[Link]();
}