2010-11-17 22 views
5

¿Alguien puede ayudarme a sugerir algún buen tutorial donde puedo comenzar? Quiero construir una aplicación simple con un panel y una pantalla de inicio de sesión. Por primera vez, se le solicita al usuario una pantalla de inicio de sesión. La verificación de inicio de sesión se realiza mediante una llamada POST a un script PHP remoto. Una vez que el usuario inicia sesión, debe ser redirigido al tablero. Una vez que el usuario cierra y vuelve a abrir la aplicación, debe redirigirlo a la pantalla de inicio de sesión.inicio de sesión de la aplicación Android

sé cómo crear formularios y cómo publicar, se necesita ayuda en el área de cambiar diseños en función de las funciones de los usuarios y cómo importar/extender clases, por ejemplo, prefiero tener una clase de inicio de sesión (actividad) por separado . pero esta clase de login necesita ser importada a la información principal (main debe extenderse Actividad)

Respuesta

2

No estoy seguro de entender su pregunta totalmente pero cuando se trata de iniciar y terminar las actividades de este tutorial es muy buena:

http://developerlife.com/tutorials/?p=302

Si quieren el usuario, como lo llama, redirigido a la pantalla de inicio de sesión cuando vuelve a la aplicación después de haberlo tenido en segundo plano en la solución, atrapa el evento onStop() en su actividad Principal. Este evento se activa cuando el usuario abandona la aplicación.

Si explica la línea "pero esta clase de inicio de sesión debe importarse a Principal", además, podría responder esa pregunta también.

+0

Lo único que quiero decir es que la clase de inicio de sesión debe escribirse como un archivo separado –

+8

La idea de la API de Android es separar todas las vistas en diferentes actividades. Por lo tanto, para su aplicación, probablemente desee que la pantalla de inicio de sesión sea una única clase (ampliando la clase de Actividad) y su pantalla principal como otra clase (extendiendo también la clase de Actividad). Cuando el inicio de sesión es exitoso, inicia su actividad principal desde su actividad de inicio de sesión usando startActivity() o startActivityForResult() como se explica en el tutorial de developerlife. –

2

He creado un SDK para UserApp que se ocupa la mayor parte de la autenticación de usuario, tales como inicio de sesión, una suscripción, sesiones, perfiles de usuario de inicio de sesión, sociales, etc.

https://github.com/userapp-io/userapp-android

Ya que es de código abierto, podría modificarlo faet r sus propias necesidades y conectarse a sus propios servicios.

El formulario de acceso se colocaría dentro de un fragmento que se extiende la AuthFragment, así:

public class LoginFragment extends AuthFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_signup, container, false); 

     // Setup the login form with bindings to UserApp 
     super.setupLoginForm(view, R.id.login, R.id.password, R.id.login_button); 

     return view; 
    } 

    @Override 
    public Boolean onLoginStart(String login, String password, Boolean isSocialLogin) { 
     // Show loader when waiting for server 
     getView().findViewById(R.id.login_form).setVisibility(View.GONE); 
     getView().findViewById(R.id.login_status).setVisibility(View.VISIBLE); 

     // Return true to complete the login 
     return true; 
    } 

    @Override 
    public void onLoginCompleted(Boolean authenticated, Exception exception) { 
     // Hide the loader 
     getView().findViewById(R.id.login_form).setVisibility(View.VISIBLE); 
     getView().findViewById(R.id.login_status).setVisibility(View.GONE); 

     if (exception != null) { 
      // Show an error message 
      ((TextView) getView().findViewById(R.id.error_text)).setText(exception.getMessage()); 
     } else { 
      // Clear the message 
      ((TextView) getView().findViewById(R.id.error_text)).setText(""); 
     } 
    } 
} 

Y el diseño de la LoginFragment sería algo como esto:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <!-- Progress --> 
    <LinearLayout 
     android:id="@+id/login_status" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center_horizontal" 
     android:orientation="vertical" 
     android:visibility="gone" > 

     <ProgressBar 
      style="?android:attr/progressBarStyleLarge" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="8dp" /> 

     <TextView 
      android:id="@+id/login_status_message" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:fontFamily="sans-serif-light" 
      android:text="@string/login_progress_signing_in" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 
    </LinearLayout> 

    <!-- Login form --> 
    <ScrollView 
     android:id="@+id/login_form" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" > 

      <EditText 
       android:id="@+id/login" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="text" 
       android:hint="@string/username" 
       android:maxLines="1" 
       android:singleLine="true" /> 

      <EditText 
       android:id="@+id/password" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textPassword" 
       android:hint="@string/password" 
       android:maxLines="1" 
       android:singleLine="true" /> 

      <Button 
       android:id="@+id/login_button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:paddingLeft="32dp" 
       android:paddingRight="32dp" 
       android:text="@string/login" /> 

      <Button 
       android:id="@+id/facebook_button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:paddingLeft="32dp" 
       android:paddingRight="32dp" 
       android:text="@string/facebook_login" /> 

      <Button 
       android:id="@+id/show_signup" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:paddingLeft="32dp" 
       android:paddingRight="32dp" 
       android:text="@string/signup" /> 

      <TextView 
       android:id="@+id/error_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="" 
       android:textAppearance="?android:attr/textAppearanceSmall" /> 

     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

después añadirlo al diseño de su actividad Principal, junto con otro Fragmento que contiene su "tablero de instrumentos":

<RelativeLayout ... > 
    <fragment 
     android:id="@+id/loginFragment" 
     android:name="com.example.demo.LoginFragment" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" /> 

    ... 
</RelativeLayout> 

Esto acaba de mostrar brevemente cómo se puede utilizar la biblioteca. Consulte la documentación para obtener más información sobre cómo usarlo. También echa un vistazo a la aplicación de demostración en GitHub.

Como se menciona en la respuesta aceptada; a la sesión del usuario cuando la aplicación está cerrada, escuchar en el caso onStop() en su actividad principal y llame session.logout(), así:

UserApp.Session session; 
session.logout(); 
Cuestiones relacionadas