Главная » Снабжаем приложение функцией входа по логину/паролю | |
В этом уроке мы продолжим увеличивать свои способности в настройке пользовательского интерфейса своих приложений и оборудовать их все более серьезными вещами. На этот раз мы оснастим свое Android приложение функцией входа в приложение по вводу логина и пароля. Это может пригодится для многих приложений, да и просто интересно, как это делается. Все довольно просто, ничего сложного в реализации этой возможности не будет. Мы сделаем приложение, при запуске которого нужно будет выполнить вход с помощью ввода логина и пароля - если данные введены верно мы попадаем на другой экран, если не правильно, то видим сообщение об ошибке. Здесь пригодится вспомнить простенький урок о переходе между двумя экранами, этот прием встречался уже неоднократно, поэтому разъяснений по нему делать уже не буду. Создаем новый проект, выбираем Blank Activity. Для начала создадим пользовательский интерфейс для приложения. Он будет состоять из полей ввода логина/пароля и кнопки для совершения входа. Открываем файл activity_main.xml и добавляем туда следующее:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
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">
<TextView
android:id="@+id/Login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="Авторизация"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/user_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/Login"
android:layout_marginTop="75dp"
android:layout_marginLeft="10dp"
android:text="Пользователь:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/edit_user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/user_text"
android:layout_marginLeft="35dp"
android:layout_toRightOf="@+id/user_text"
android:hint="введите имя " >
<requestFocus />
</EditText>
<TextView
android:id="@+id/password_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/user_text"
android:layout_below="@+id/user_text"
android:layout_marginTop="40dp"
android:text="Пароль:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/edit_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/password_text"
android:layout_alignLeft="@+id/edit_user"
android:layout_alignRight="@+id/edit_user"
android:hint="введите пароль"
android:inputType="textPassword" />
<TextView
android:id="@+id/attempts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/password_text"
android:layout_below="@+id/password_text"
android:layout_marginLeft="30dp"
android:layout_marginTop="48dp"
android:text="Попыток:"
android:visibility="invisible"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
android:id="@+id/button_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_password"
android:layout_centerHorizontal="true"
android:layout_marginTop="94dp"
android:onClick="Login"
android:text="Войти" />
<TextView
android:id="@+id/number_of_attempts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/user_text"
android:layout_alignTop="@+id/attempts"
android:visibility="invisible" />
<TextView
android:id="@+id/login_locked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:layout_alignParentBottom="true"
android:layout_marginBottom="57dp"
android:layout_alignRight="@+id/edit_password"
android:layout_alignEnd="@+id/edit_password"
android:layout_alignLeft="@+id/attempts"
android:layout_alignStart="@+id/attempts" />
</RelativeLayout>
Мы получили вот такой вид пользовательского интерфейса:
Сразу разберемся со вторым экраном, на который будет совершаться переход в случае успешного ввода логина и пароля. Создаем новый класс по имени Second.java:
import android.app.Activity;
import android.os.Bundle;
public class Second extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
}
}
И соответствующий ему layout файл по имени second_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Вы успешно залогинились!"
android:padding="5pt"
android:layout_gravity="center"
android:textSize="12pt"/>
</LinearLayout>
Ну а теперь переходим к файлу основному MainActivity.java. Основной процесс будет происходить в методе обработки нажатия кнопки "Войти". В нем мы сравниваем введенные логин и пароль со словом admin и в зависимости от их совпадения или не совпадения настраиваем дальнейшие действия. Если введены логин и пароль admin, то высвечивается Toast сообщение об успехе входа и выполняется переход на второй экран с помощью Intent. Если данные введены не верно, то высвечивается сообщение с ошибкой, а после 3 неудачных попыток появляется надпись, что количество попыток исчерпано, а кнопка "Войти" становится неактивной. Итак, чтобы реализовать сказанное, открываем файл MainActivity.java и добавляем в него следующий код:
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
// Объявляем об использовании следующих объектов:
private EditText username;
private EditText password;
private Button login;
private TextView loginLocked;
private TextView attempts;
private TextView numberOfAttempts;
// Число для подсчета попыток залогиниться:
int numberOfRemainingLoginAttempts = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Связываемся с элементами нашего интерфейса:
username = (EditText) findViewById(R.id.edit_user);
password = (EditText) findViewById(R.id.edit_password);
login = (Button) findViewById(R.id.button_login);
loginLocked = (TextView) findViewById(R.id.login_locked);
attempts = (TextView) findViewById(R.id.attempts);
numberOfAttempts = (TextView) findViewById(R.id.number_of_attempts);
numberOfAttempts.setText(Integer.toString(numberOfRemainingLoginAttempts));
}
// Обрабатываем нажатие кнопки "Войти":
public void Login(View view) {
// Если введенные логин и пароль будут словом "admin",
// показываем Toast сообщение об успешном входе:
if (username.getText().toString().equals("admin") &&
password.getText().toString().equals("admin")) {
Toast.makeText(getApplicationContext(), "Вход выполнен!",Toast.LENGTH_SHORT).show();
// Выполняем переход на другой экран:
Intent intent = new Intent(MainActivity.this,Second.class);
startActivity(intent);
}
// В другом случае выдаем сообщение с ошибкой:
else {
Toast.makeText(getApplicationContext(), "Неправильные данные!",Toast.LENGTH_SHORT).show();
numberOfRemainingLoginAttempts--;
// Делаем видимыми текстовые поля, указывающие на количество оставшихся попыток:
attempts.setVisibility(View.VISIBLE);
numberOfAttempts.setVisibility(View.VISIBLE);
numberOfAttempts.setText(Integer.toString(numberOfRemainingLoginAttempts));
// Когда выполнено 3 безуспешных попытки залогиниться,
// делаем видимым текстовое поле с надписью, что все пропало и выставляем
// кнопке настройку невозможности нажатия setEnabled(false):
if (numberOfRemainingLoginAttempts == 0) {
login.setEnabled(false);
loginLocked.setVisibility(View.VISIBLE);
loginLocked.setBackgroundColor(Color.RED);
loginLocked.setText("Вход заблокирован!!!");
}
}
}
}
Кстати, не забудьте добавить вторую activity в файл манифеста AndroidManifest.xml:
<activity android:name=".Second">
</activity>
Проверяем работоспособность своего творения:
Вот так, все отлично работает, теперь мы можем сделать свое приложение насколько крутым, что им смогут пользоваться только знающие данные логина и пароля для входа. | |
|
Всего комментариев: 1 | |
0
Спам
| |