Порядок выполнения работы. Разработка программы «Угадай звезду»




Лабораторная работа №3

Разработка программы «Угадай звезду»

 

Цель работы: Приобретение навыков работы с библиотекой Volley для загрузки изображений на Android Studio

.

Порядок выполнения работы

Задание 1

Выводится фото знаменитости и в текстовое поле вводится имя знаменитости, если пользователь вводит имя и пользователь нажимает кнопку «Ответ» то выводится сообщение «Правильный ответ» или «Неверный ответ» случайным образом. Как показано на рисунке

 

Фото знаменитостей загружаются с сайта
https://www.forbes.ru/rating/403469-40-samyh-uspeshnyh-zvezd-rossii-do-40-let-reyting-forbes

 

Или возможно с другого сайта на ваше усмотрение.

 

Классы для загрузки изображений по ссылке и кода HTML переданного адреса сайта

private static class DownloadContentTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... strings) {
URL url = null;
HttpURLConnection urlConnection = null;
StringBuilder result = new StringBuilder();
try {
url = new URL(strings[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
String line = reader.readLine();
while (line!= null) {
result.append(line);
line = reader.readLine();
}
return result.toString();
}
catch (MalformedURLException e)
{
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (urlConnection!= null)
urlConnection.disconnect();
}
return null;
}
}

private static class DownloadImageTask extends AsyncTask<String, Void, Bitmap>
{
@Override
protected Bitmap doInBackground(String...strings) {
URL url = null;
HttpURLConnection urlConnection = null;
StringBuilder result = new StringBuilder();
try {
url = new URL(strings[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
Bitmap bitmap = BitmapFactory. decodeStream (inputStream);
return bitmap;

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (urlConnection!=null)
urlConnection.disconnect();
}
return null;
}
}

 

Метод, который загружает в массив список изображений:

private void getContent()
{
DownloadContentTask task = new DownloadContentTask();
try {
String content = task.execute(url).get();
String start = "div class=\"items\"";
String finish = "<div class=\"panel-pane pane-rating-content\">";
Pattern pattern = Pattern. compile (start+ "(.*?)"+ finish);
Matcher matcher = pattern.matcher(content);
String splitContent = "";
while (matcher.find())
splitContent = matcher.group(1);

Pattern paternImg = Pattern. compile ("<img src=\"(.*?)\"");
Pattern patternName = Pattern. compile ("title=\"(.*?)\"");
Matcher matcherImg = paternImg.matcher(splitContent);
Matcher matcherName = patternName.matcher(splitContent);
while (matcherImg.find())
urls.add(matcherImg.group(1));
while (matcherName.find())
names.add(matcherName.group(1));
//for (String s:urls)
// Log.i("MyResult", s);


} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}

}

 

Метод который отображает на экране фото:

private void playGame()
{
numberOfImage = (int) (Math. random ()* urls. size());

RequestQueue requestQueue = Volley. newRequestQueue (getApplicationContext());
ImageRequest imageRequest = new ImageRequest(
urls. get(numberOfImage), // Image URL
new Response.Listener<Bitmap>() { // Bitmap listener
@Override
public void onResponse(Bitmap response) {
// Do something with response
imageViewStar. setImageBitmap(response);
}
},
0, // Image width
0, // Image height
ImageView.ScaleType. CENTER_CROP, // Image scale type
Bitmap.Config. RGB_565, //Image decode configuration
new Response.ErrorListener() { // Error listener
@Override
public void onErrorResponse(VolleyError error) {
// Do something with error response
Log. i ("JSON error:", error.getMessage());
error.printStackTrace();

}
}
);

// Add ImageRequest to the RequestQueue
requestQueue.add(imageRequest);

}

 

 

Задание 2. Вариант №1

Написать приложение, которое моделирует сбор информации на АЗС. Приложение должно многократно принимать вид топлива и количество заправляемого топлива, цена топлива зависит от выбранного вида топлива. Вид топлива выбирается из списка. По «завершению смены» приложение должно выводить на экран итоговую информацию: количество топлива каждого вида, проданного на станции, сумму вырученную за каждый вид топлива, общую сумму выручки.

Приложение имеет меню: «Новый заказ», «Завершение смены».

 

Задание 2. Вариант №2.

Написать программу в Android Studio, которая отображает форму, где пользователь вводит количество покупок, цену товаров, количество, есть кнопка «далее», «завершить заказ». При нажатии на кнопку «далее» вводится следующее значение, при нажатии на кнопку «завершить заказ» показывается форма со всеми введенными значениями.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-05 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: