Mostrando entradas con la etiqueta Android facil. Mostrar todas las entradas
Mostrando entradas con la etiqueta Android facil. Mostrar todas las entradas

jueves, 28 de septiembre de 2017

como guardar la direccion y coordenadas del gps a una base de datos en android studio

Buenas amig@s hoy veremos un nuevo tutorial de como guardar la dirección y coordenadas del GPS a una base de datos en android studio, para este ejercicio debes tener conocimientos básicos sobre web services y base de datos.

¿Que vamos a utilizar?:

Un servicio Apache con Mysql
Un WebService
Una base de datos"bdgps" para almacenar datos

NOTA: Al final del post les dejare los archivos

Primero crearemos nuestra base de datos en mi caso le puse de nombre bdgpsluego creamos nuestra tabla gps.
CREATE TABLE IF NOT EXISTS `gps` (
  `id` int NOT NULL AUTO_INCREMENT,
  `direccion` varchar(100) NOT NULL,
  `coordenadas` varchar(150) NOT NULL,
  PRIMARY KEY (`id`)
)
Creamos nuestro insertar.php
<?php
$hostname_localhost ="localhost";  //nuestro servidor
$database_localhost ="bdgps";//Nombre de nuestra base de datos
$username_localhost ="root";//Nombre de usuario de nuestra base de datos (yo utilizo el valor por defecto)
$password_localhost ="12345";//Contraseña de nuestra base de datos (yo utilizo por defecto)
$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)//Conexión a nuestro servidor mysql
or
trigger_error(mysql_error(),E_USER_ERROR); //mensaaje de error si no se puede conectar
mysql_select_db($database_localhost, $localhost);//seleccion de la base de datos con la qu se desea trabajar
 
//variables que almacenan los valores que enviamos por nuestra app, (observar que se llaman igual en nuestra app y aqui)
$direccion=$_POST['direccion'];
$coordenadas=$_POST['coordenadas'];

 
if (empty($_POST["coordenadas"]) AND $_POST["direccion"]!==''){
echo "Faltan DATOS los campos estan vacios"; 
}else{
 
$query_search = "insert into gps(direccion,coordenadas) values ('".$direccion."','".$coordenadas."')";//Sentencia sql a realizar
$query_exec = mysql_query($query_search) or die(mysql_error());//Ejecuta la sentencia sql.
}
?>

ya tenemos nuestra BD y nuestra parte php que servirá para la web service. Si todo han configurado y creado bien deben ir a su navegador en la siguiente ruta localhost/gpsbd/insertar.php Aclaro que mi web services lo he creado en mi pc de forma local con xampp pero también podría subirlo a un hosting y debe salirse lo siguiente. Los errores son porque no están enviando ningún dato para registrarse. 

Ahora toca la parte Android. debemos dar unos permisos, para que funcione:
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

creamos una aplicación nueva y agregamos los siguientes en nuestro activity_main 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.androidmorefast.pc.appguardargpsbd.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

        <TextView
            android:text="MIS COORDENADAS  SON:"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/textView" />

        <TextView
            android:id="@+id/mensaje_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:text="MI DIRECCION ES:"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView2" />

        <TextView
            android:id="@+id/mensaje_id2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <Button
            android:id="@+id/btnGuardar"
            android:text="GUARDAR"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:elevation="1dp"></Button>

    </LinearLayout>

</RelativeLayout>


Debemos agregar una librería  apache en nuestro buil gradle, esta debe ir dentro de dependencies
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

Ahora debemos ir a nuestro MainActivity y agregar lo siguiente:

public class MainActivity extends AppCompatActivity   {
    TextView mensaje1;
    TextView mensaje2;
    private Button botonGuardar;

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


        mensaje1 = (TextView) findViewById(R.id.mensaje_id);
        mensaje2 = (TextView) findViewById(R.id.mensaje_id2);
        botonGuardar = (Button) this.findViewById(R.id.btnGuardar);
        botonGuardar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    new Insertar(MainActivity.this).execute();
            }
        });



        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, 1000);
        } else {
            locationStart();
        }
    }
    //Insertamos los datos a nuestra webService
    private boolean insertar(){
        HttpClient httpClient;
        List<NameValuePair> nameValuePairs;
        HttpPost httpPost;
        httpClient = new DefaultHttpClient();
        httpPost = new HttpPost("http://192.168.8.118/gpsbd/insertar.php");//url del servidor
        //empezamos añadir nuestros datos
        nameValuePairs = new ArrayList<NameValuePair>(4);
        nameValuePairs.add(new BasicNameValuePair("coordenadas",mensaje1.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("direccion",mensaje2.getText().toString().trim()));

        try {
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            httpClient.execute(httpPost);
            return true;


        } catch(UnsupportedEncodingException e){
            e.printStackTrace();
        }catch (ClientProtocolException e){
            e.printStackTrace();

        }catch (IOException e){
            e.printStackTrace();
        }
        return  false;
    }
    //AsyncTask para insertar Datos
    class Insertar extends AsyncTask<String,String,String> {

        private Activity context;

        Insertar(Activity context){
            this.context=context;
        }

        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            if(insertar())
                context.runOnUiThread(new Runnable(){
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        Toast.makeText(context, "Datos insertado con éxito", Toast.LENGTH_LONG).show();
                        mensaje1.setText("");
                        mensaje2.setText("");

                    }
                });
            else
                context.runOnUiThread(new Runnable(){
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        Toast.makeText(context, "Datos no insertado con éxito", Toast.LENGTH_LONG).show();
                    }
                });
            return null;
        }
    }

    //Apartir de aqui empezamos a obtener la direciones y coordenadas
    private void locationStart() {
        LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Localizacion Local = new Localizacion();
        Local.setMainActivity(this);
        final boolean gpsEnabled = mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        if (!gpsEnabled) {
            Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(settingsIntent);
        }
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, 1000);
            return;
        }
        mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, (LocationListener) Local);
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, (LocationListener) Local);

        mensaje1.setText("Localizacion agregada");
        mensaje2.setText("");
    }

    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 1000) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                locationStart();
                return;
            }
        }
    }

    public void setLocation(Location loc) {
        //Obtener la direccion de la calle a partir de la latitud y la longitud
        if (loc.getLatitude() != 0.0 && loc.getLongitude() != 0.0) {
            try {
                Geocoder geocoder = new Geocoder(this, Locale.getDefault());
                List<Address> list = geocoder.getFromLocation(
                        loc.getLatitude(), loc.getLongitude(), 1);
                if (!list.isEmpty()) {
                    Address DirCalle = list.get(0);
                    mensaje2.setText(DirCalle.getAddressLine(0));
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    /* Aqui empieza la Clase Localizacion */
    public class Localizacion implements LocationListener {
        MainActivity mainActivity;

        public MainActivity getMainActivity() {
            return mainActivity;
        }

        public void setMainActivity(MainActivity mainActivity) {
            this.mainActivity = mainActivity;
        }

        @Override
        public void onLocationChanged(Location loc) {
            // Este metodo se ejecuta cada vez que el GPS recibe nuevas coordenadas
            // debido a la deteccion de un cambio de ubicacion

            loc.getLatitude();
            loc.getLongitude();

            String Text = "Lat = "+ loc.getLatitude() + "\n Long = " + loc.getLongitude();
            mensaje1.setText(Text);
            this.mainActivity.setLocation(loc);
        }

        @Override
        public void onProviderDisabled(String provider) {
            // Este metodo se ejecuta cuando el GPS es desactivado
            mensaje1.setText("GPS Desactivado");
        }

        @Override
        public void onProviderEnabled(String provider) {
            // Este metodo se ejecuta cuando el GPS es activado
            mensaje1.setText("GPS Activado");
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            switch (status) {
                case LocationProvider.AVAILABLE:
                    Log.d("debug", "LocationProvider.AVAILABLE");
                    break;
                case LocationProvider.OUT_OF_SERVICE:
                    Log.d("debug", "LocationProvider.OUT_OF_SERVICE");
                    break;
                case LocationProvider.TEMPORARILY_UNAVAILABLE:
                    Log.d("debug", "LocationProvider.TEMPORARILY_UNAVAILABLE");
                    break;
            }
        }
    }
}



Ahora si ustedes quieren detallar en el código de como obtener el gps los invito a que revisen el siguiente enlace  asiendo clic aqui -> como obtener la ubicaion del gps . 
Yo estoy poniendo la ip de mi computadora y mi celular esta conectado vía wifi por el mismo moden así que no tengo problemas, pero ustedes pueden poner el dominio de algún hosting que termine en .com en ves de poner la ip, eso queda a su criterio.
httpPost = new HttpPost("http://192.168.8.118/gpsbd/gpsbd.php")

También hay las siguientes lineas, donde deben fijarse la parte en rosado, debe estar escrita igual como esta en la web services, de lo contrario no llamara dichos atributos
(new BasicNameValuePair("coordenadas",mensaje1.getText().toString().trim()));
(new BasicNameValuePair("direccion",mensaje2.getText().toString().trim()));


En nuestra base de datos se guardaría de la siguiente forma como muestro en la imagen:


Igual si piensas que hablo escribo en chino te dejo el ejercicio:
  Link de la descarga
Programador alfa, lomo plateado, barba de clavos, mentón de roca, no descarga la aplicación sigue el tutorial. Clic para DESCARGAR

   
ENLACES DE INTERÉS:

lunes, 25 de septiembre de 2017

como enviar email en android studio

Hola amig@s hoy veremos un nuevo tutorial de como enviar un email en android studio, sera algo básico porque luego nos servirá como base para ejercicios mas avanzados.

Paso 1: Empezamos con la parte gráfica, necesitaremos un button y un TexView para mostrar el cuerpo del mensaje, también podrías usar un EditText, eso se los dejo a su imaginación, debería quedar de la siguiente forma:



Si tienen pereza no hay problema les dejo el código del activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">
        <Button
            android:id="@+id/btnEmail"
            android:text="Enviar Email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
        <TextView
            android:id="@+id/text_to_email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/my_text" />
    </LinearLayout>

</RelativeLayout>


Paso 2: Ahora necesitamos insertar unos permisos en nuestro AndroidManifest los cuales los podemos ver las lineas en azul, nos permitirá tener acceso a algún gestor de mensajería y a la vez tener acceso a Internet.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidmorefast.pc.appenviaremail">
    <!-- Permisos requeridos -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>



Paso 3: Ahora nos vamos a la parte del código, esto lo veremos en nuestro MainActivity no hay mucho que decir porque el código lo entrego documentado. 


public class MainActivity extends Activity implements View.OnClickListener {
    private static final String tag = "Main";
    private Button botonEmail;

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

        this.botonEmail = (Button) this.findViewById(R.id.btnEmail);
        this.botonEmail.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        //Verificamos si el usuario ha hecho click en el Boton de Enviar Email
        if (view == this.botonEmail) {
            //Llamamos al metodo enviarEmail
            enviarEmail();
        }
    }

    private void enviarEmail(){
        //Instanciamos un Intent del tipo ACTION_SEND
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        //Aqui definimos la tipologia de datos del contenido dle Email en este caso text/html
        emailIntent.setType("text/html");
        // Indicamos con un Array de tipo String las direcciones de correo a las cuales enviar
        emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"androdfast@gmail.com"});
        // Aqui definimos un titulo para el Email
        emailIntent.putExtra(android.content.Intent.EXTRA_TITLE, "El Titulo");
        // Aqui definimos un Asunto para el Email
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "El Asunto");
        // Aqui obtenemos la referencia al texto y lo pasamos al Email Intent
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, getString(R.string.my_text));
        try {
            //Enviamos el Correo iniciando una nueva Activity con el emailIntent.
            startActivity(Intent.createChooser(emailIntent, "Enviar Correo..."));
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(MainActivity.this, "No hay ningun cliente de correo instalado.", Toast.LENGTH_SHORT).show();
        }
    }
}

Para finalizar el tutorial, seguramente  a algunos les sale errores pero les aconsejo que siempre que sigan un tutorial revisen el archivo string.xml dentro de la carpeta values pues ahí algunos desarrolladores hacemos cambios como el titulo de la app o algo extra de igual forma les dejo la aplicación funcionando y también una imagen de como quedaría el producto final.






Igual si piensas que hablo escribo en chino te dejo el ejercicio:
  Link de la descarga
Programador alfa, lomo plateado, barba de clavos, mentón de roca, no descarga la aplicación sigue el tutorial. Clic para DESCARGAR

     
ENLACES DE INTERÉS:

miércoles, 26 de julio de 2017

Como importar una libreria en android studio

hola amig@s programadores hoy veremos un tema muy interesante, he visto en los programadores novatos tener mucho problemas a la hora que quieren exportar sus librerías externas mejor dicho los archivos .jar  y cuando buscan información al respecto y luego no les funciona su copia y pega empiezan a llorar buuuu, así que hoy lo explicaremos de forma detallada y con manzanitas para dar por cerrado este tema.

Empezamos nos llevara un aproximado de 3 minutos.

Cómo importar librerías .jar en Android Studio



  • Una vez situado en tu proyecto Android Studio, ve a la carpeta "libs" en caso de no existir crea la carpeta a la altura de build y src.



  • Una vez hayas creado esta carpeta, ya podrás añadir todos tus archivos con extensión .jar


      Pero esto no termina aquí, porque el siguiente paso es muy importante, necesitas añadir las dependencias a Build.gradle (Module:app).



  • En este ejemplo añadimos la librería frutas.jar Para ello, añadimos el siguiente código en Build.gradle, en dependencies(). Se hace igual para cualquier librería:
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.3.0'
    compile files('libs/frutas.jar')
}

Si analizamos un poco nos damos cuenta que empezamos con el compile files luego le indicamos que esta en la carpeta libs para luego indicarle que le haremos referencia al archivo frutas.jar

AH! PILLIN  aun no acabamos falta lo mas importante 

  • Y por último, tras añadir este trocito de código, necesitas hacer la sincronización del proyecto con el gradle. Te saldrá un aviso en amarillo en la parte superior, puedes hacer clic en “Sync Project with Gradle Files“.

Lo vemos en la siguiente imagen:

                                                           Clic para agrandar la imagen


No tendremos que hacer nada más que esto para tener las librerías que necesitemos en Android. Bueno cuídense mucho y no se rompan la cabeza:

NOTA: una vez un usuario siguió esta guía y ya quería llorar porque no le funcionaba, adivinen que? descargo mal la librería jajajajaja xD


ENLACES DE INTERÉS:


Como importar fuentes a android studio

Hola amig@s programadores siempre a la hora de hacer un proyecto necesitamos darle la mejor vista que podemos y entre ellas siempre es bueno ver la escritura, es un detalle que podria traerte mas cliente o impresionar a tu jefe. Para ello hoy veremos Como insertar tipos de fuentes en Android Studio.

Bien sin mas rodeos empezamos con el Tuto que nos llevara aproximadamente dos minutos:


  • Sitúate en app > src > main.
  • Crea el directorio “assets” (a la misma altura de java y res). Dentro de assets, crea la carpeta “fonts”, y a su vez, dentro, crea/importa el archivo “nombre_fuente.ttf”.






Es en la carpeta fonts, dónde tendrás que arrastrar la fuente concreta que quieras usar con la extensión .ttf. Si buscas por la red, encontrarás un montón de ZIP con fuentes, que puedes arrastrar y colocar dentro de assets, para luego solo llamar a las fuentes que tu quieras desde la aplicación. Si tienes dudas con algo de esto, puedes preguntarnos abajo en los comentarios.


¿CÓMO USO LA FUENTE QUE ACABO DE IMPORTAR?

Typeface face=Typeface.createFromAsset(getAssets(),"fonts/nombre_fuente.ttf");
txtV.setTypeface(face);

Tan solo tendrás que pegar ese código en la Activity en que quieras usar la nueva fuente. Y acuérdate de cambiar el nombre anterior por el nombre de tu fuente, podrás importar las fuentes que quieras. ¡Espero que te haya servido y que lo disfrutes!


Y con eso hemos terminado amigos, cuídense y nos vemos en un próximo tutorial.


domingo, 2 de abril de 2017

Como hacer un splash screen en android studio

Hola a todos hoy veremos un tutorial de como hacer un SPLASH SCREEN en android personalmente a mi me gusta este tipo de artículos, porque de alguna forma te enseñan a mejorar la estética de tu producto final, hay un dicho entre programadores,  "los que programan diseñan mal" y eso no es cierto si bien es verdad que en países avanzados existe un sujeto para cada trabajo, en Latinoamerica una sola persona es analista,diseñadora,programador, marketero etc de cosas y si bien es cierto esto genera muchas veces que las cosas se hagan a medias un programador que desarrolle mas de una actitud siempre hará bien su trabajo, con esto te digo que no debes hacer 20 cosas tu mismo porque nunca seras bueno en todo pero al menos puedes programar y hacer interfaces amigables para tus usuario.




Que es un Splash Screen?

No vamos hacer técnicos en la definición, Te has dado cuenta que cuando descargas alguna aplicación  y le das en ejecutar y carga hermosas entradas antes de ejecutarse "eso es un Splash Screen" te dejo algunos ejemplos en las siguientes imágenes:




Bien sin mas rodeos empezamos, hay muchas formas de hacerla pero en este tuto amantes delas frutas y los fragment, lo haremos con fragment :)
utilizaremos 3 layouts y 3 clases y para hacer los efectos del Splash Screen 2 layout en la carpeta animator.

activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/contenedor"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

</FrameLayout>

MainActivity.java

public class MainActivity extends Activity {

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

}


fragment_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Bienvenidos!!"
        android:textSize="60sp" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/logo1"
        android:layout_marginTop="110dp"
        android:id="@+id/imageView3"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true" />

</RelativeLayout>


MainFragment.java

public class MainFragment extends Fragment {

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
  return inflater.inflate(R.layout.fragment_main, container, false);
 }

}


fragment_splash_screen

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SplashScreenFragment" >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/app_name"
        android:scaleType="fitXY"
        android:src="@drawable/cereza1" />

</RelativeLayout>


SplashScreenFragment.java

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SplashScreenFragment" >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/app_name"
        android:scaleType="fitXY"
        android:src="@drawable/cereza1" />

</RelativeLayout>

Bien ahora debemos crear la carpeta animator dentro de la carpeta res no puede ser otro nombre o no lo reconocerá android studio.
Dentro de nuestra carpeta animator crearemos dos layout y serán los siguientes:


salir_a_la_izquierda_xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- Rotate. -->
    <objectAnimator
        android:duration="10"
        android:interpolator="@android:interpolator/accelerate_decelerate"
        android:propertyName="rotationY"
        android:valueFrom="0"
        android:valueTo="180" />

    <!-- Half-way through the rotation (see startOffset), set the alpha to 0. -->
    <objectAnimator
        android:duration="1"
        android:propertyName="alpha"
        android:startOffset="10"
        android:valueFrom="1.0"
        android:valueTo="0.0" />

</set>


voltear_a_la_izquierda.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- Before rotating, immediately set the alpha to 0. -->
    <objectAnimator
        android:duration="0"
        android:propertyName="alpha"
        android:valueFrom="1.0"
        android:valueTo="0.0" />

    <!-- Rotate. -->
    <objectAnimator
        android:duration="100"
        android:propertyName="rotationY"
        android:valueFrom="-180"
        android:valueTo="0" />

    <!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
    <objectAnimator
        android:duration="1"
        android:propertyName="alpha"
        android:startOffset="10"
        android:valueFrom="0.0"
        android:valueTo="1.0" />

</set>


en la carpeta drawable debe ir la imagen de nuestro Splash Screen, les dejo la del ejemplo




Dentro de la carpeta values debemos agregar un archivo llamado color.xml y tendrá lo siguiente:

color.xml 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

También modificaremos nuestro archivo styles y debe quedar de la siguiente forma:

style.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>


Y con eso hemos terminado este tutorial, espero les sirva y no se olviden de comentar cualquier duda.


Igual si piensas que hablo escribo en chino te dejo el ejercicio:

  Link de la descarga
Programador alfa, lomo plateado, barba de clavos, mentón de roca, no descarga la aplicación sigue el tutorial. Clic para DESCARGAR

     
ENLACES DE INTERÉS:

 

Copyright @ 2015 AndroFast.

Designed by Draganus | AndroFast