Учебное пособие по выполнению практических заданий по курсу "Разработка облачных и мобильных приложений на платформе Google Android"



Pdf көрінісі
бет15/35
Дата12.10.2023
өлшемі4.1 Mb.
#480634
түріУчебное пособие
1   ...   11   12   13   14   15   16   17   18   ...   35
AndroidStudioMeth (1)

// название 

private int 
imageRes
;
// картинка 
 
 

public 
Image
(
String 
name, 
int 
image){ 
this
.
name
=name; 
this
.
imageRes
=image; 

public 
String 
getName
() { 
return this
.
name


public void 
setName
(
String 
name) { 
this
.
name 
= name; 

public int 
getImageResource
() { 
return this
.
imageRes


public void 
setImageResource
(
int 
flagResource) { 
this
.
imageRes 
= flagResource; 


Второй класс назовём CustomRecyclerAdapter, он нужен для того
чтобы определить свой кастомный адаптер для RecyclerView, и чтобы в итоге 
связывать нужные данные и отображать список. 


43 
public class 
CustomRecyclerAdapter 
extends 
RecyclerView
.
Adapter
<
CustomRecyclerAdapter
.
ViewHolder
>{ 
private final 
LayoutInflater 
inflater

private final 
List
<
Image

images

CustomRecyclerAdapter
(
Context 
context, 
List
<
Image
> images) { 
this
.
images 
= images; 
this
.
inflater 

LayoutInflater
.from(context); 

public void 
onBindViewHolder
(
CustomRecyclerAdapter
.
ViewHolder 
holder, 
int 
position) { 
Image image 

images
.get(position); 
holder.
text
.setText(
image
.getName()); 
holder.
image
.setImageResource(
image
.getImageResource()); 

@NonNull 
@Override 
public 
CustomRecyclerAdapter
.
ViewHolder 
onCreateViewHolder
(
@NonNull 
ViewGroup 
parent, 
int 
viewType) { 
View view 

inflater
.inflate(
R
.
layout
.
list_item
, parent, 
false
); 
return new 
ViewHolder(
view
); 

@Override 
public int 
getItemCount
() { 
return 
images
.size(); 

public class 
ViewHolder 
extends 
RecyclerView
.
ViewHolder 

final 
ImageView 
image

final 
TextView 
text

ViewHolder
(
View 
view){ 
super
(view); 
image 
= view.findViewById(
R
.
id
.
imageView
); 
text 
= view.findViewById(
R
.
id
.
textView
); 



И теперь, когда у нас есть всё необходимое, в MainActivity.java 
достаточно добавить код, наполняющий с помощью кастомного адаптера 
список RecyclerView. Данные добавляются в методе setData(): 
public class 
MainActivity 
extends 
AppCompatActivity 

ArrayList
<
Image

images 

new 
ArrayList<
Image
>(); 
@Override 
protected void 
onCreate
(
Bundle 
savedInstanceState) { 
super
.onCreate(savedInstanceState); 
setContentView(
R
.
layout
.
activity_main
); 


44 
setData(); 
RecyclerView recyclerView 
= findViewById(
R
.
id
.
review1
); 
CustomRecyclerAdapter adapter 

new 
CustomRecyclerAdapter(
this

images
); 
recyclerView
.setAdapter(
adapter
); 

private void 
setData
(){ 
images
.add(
new 
Image (
"cat1"

R
.
drawable
.
image1
)); 
images
.add(
new 
Image (
"cat2"

R
.
drawable
.
image2
)); 
images
.add(
new 
Image (
"mycat"

R
.
drawable
.
image3
)); 
images
.add(
new 
Image (
"nyancat"

R
.
drawable
.
image4
)); 


Таким образом, получим тот же список из котов, но теперь он 
пролистывается вниз, каждый кот расположен на отдельной странице, и 
список можно значительно расширить. 
 
 


45 
Лабораторная работа №6. Работа с анимацией 
Задание: 
создать 
приложение, 
содержащее 
анимированные 
интерфейсные элементы (например, увеличивающиеся при клике на них 
кнопки, вращающиеся TextView и т.д.). 
Самым простым видом анимации является покадровая анимация, когда 
картинки (кадры) сменяют друг друга, создавая эффект движения или 
изменения изображения. Это слишком простой, но утомительный процесс, 
поэтому рассмотрим анимацию другого типа, так называемую tween-
анимацию. Создайте новое приложение с Empty Activity, перейдите в файл 
activity_main.xml, удалите текстовое поле и поместите в центр экрана кнопку, 
а внизу – как обычно, текстовое поле с ФИО. Затем необходимо создать 
новый xml-файл для описания анимации. Для этого нажмите правой кнопкой 
мыши по папке res и создайте новый файл Android resource с параметрами, 
которые изображены на рисунке 27. 
Рисунок 27 – Создание файла анимации 


46 
После данных действий в папке res появится новая папка anim с 
файлом tween_anim.xml внутри. Переходим в этот файл и добавляем 
следующий код внутрь тэга set: 
<
scale 
android
:fromXScale=
"2.0" 
android
:toXScale=
"0.5" 
android
:fromYScale=
"2.0" 
android
:toYScale=
"0.5" 
android
:pivotX=
:duration=_"2000"_/>_Здесь_описывается_уменьшение_объекта_с_длительность_анимации_в_2_секунды_(_android'>"50%" 
android
:pivotY=
"50%" 
android
:duration=
"2000" 
/> 
Здесь описывается уменьшение объекта с длительность анимации в 2 
секунды (
android
:duration
). Так как анимация будет отображаться на 
кнопке, нужно будет вернуть её в исходный размер, для этого добавляем ещё 
немного кода: 
<
scale 
android
:fromXScale=
"0.5" 
android
:toXScale=
"2.0" 
android
:fromYScale=
"0.5" 
android
:toYScale=
"2.0" 
android
:pivotX=
"50%" 
android
:pivotY=
"50%" 
android
:duration=
"2000" 
android
:startOffset=
"2000" 
/> 
Теперь кнопка сможет обратно увеличиться до своих размеров, 
анимация увеличения также будет длиться 2 секунды, но она будет 
отрабатывать не сразу, а с задержкой в 2 секунды (
android
:startOffset
). 
То есть сначала идёт анимация уменьшения объекта, а затем анимация 
увеличения. Ну и в заключение добавим анимацию вращения кнопки: 
<
rotate 
android
:pivotX=
"50%" 
android
:pivotY=
"50%" 
android
:fromDegrees=
"0" 
android
:toDegrees=
"360" 


47 
android
:duration=
"2000" 
android
:startOffset=
"4000" 
/> 
Анимация вращения будет ждать 4 секунды (пока отработают первые 
две анимации), а затем за 2 секунды провернёт кнопку на 360 градусов по 
часовой стрелке. 
Ещё одним важным свойством анимации является параметр 
interpolator. Интерполятор позволяет ускорить или замедлить выполнение 
анимации на устройстве, а также добавить некоторые эффекты. Добавим 
следующий код в конец открывающего тэга set: 
android
:interpolator=
"@android:anim/bounce_interpolator"
Набрав 
@android:anim
в кавычках, можно увидеть, какие типы 
интерполяторов бывают, см. рисунок 28. Можно поэкспериментировать с 
разными типами интерполяторов. 
Рисунок 28 – Варианты интерполяторов 


48 
Итак, в нашем случае открывающий тэг set должен выглядеть 
следующим образом: 
<
set 
xmlns:
android
=
"http://schemas.android.com/apk/res/android" 
android
:interpolator=
"@android:anim/bounce_interpolator"
>
С описанием анимации закончили, теперь необходимо перейти в файл 
MainActivity.java и выполнить анимацию после нажатия на кнопку. Для этого 
в методе onCreate создаём ссылку на кнопку: 
final 
Button button = findViewById(R.id.
button
); 
И создаём для неё listener и onClick. В onClick добавляем анимацию: 
Animation animation = 
AnimationUtils.loadAnimation(MainActivity.
this

R.anim.
tween_anim
); 
button
.startAnimation(animation); 
Импортируем все зависимости и исправляем ошибки, после чего 
запускаем проект на эмуляторе. Теперь необходимо изменить параметры в 
файле tween_anim.xml на собственные, чтобы все не сдавали одну и ту же 
анимацию. Поэкспериментируйте с различными параметрами, можете также 
производить анимацию не с кнопкой, а с каким-нибудь другим элементом. 
Результат выполнения работы показан на рисунке 29. 


49 
Рисунок 29 – Результат анимации 


50 
Лабораторная работа №7. Работа с картами 
Задание: создать приложение, отображающее после запуска карты 
Google или какие-нибудь другие карты. 
Создайте новый проект, но на этот раз выберите Google Maps Activity 
вместо Empty Activity. Для того, чтобы пользоваться картами Google
необходимо получить персональный ключ для приложения. Переходим в 
файл res/values/google_maps_api.xml (открывается по умолчанию), и в 
комментариях видим инструкцию на английском языке о том, как получить 
ключ для приложения. Если коротко, то необходимо перейти по 
персональной ссылке из комментария, залогиниться в свой Google аккаунт, 
нажать кнопку Continue и затем Create API key, после чего перед вами 
появится окно API key created с ключом, начинающимся на "AIza". Копируем 
значение ключа из поля и вставляем в файл res/values/google_maps_api.xml 
вместо фразы YOUR_KEY_HERE. 
Теперь переходим в файл MapsActivity.java, и в самом последнем 
методе onMapReady добавляем следующее в начало, после строки 


Достарыңызбен бөлісу:
1   ...   11   12   13   14   15   16   17   18   ...   35




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет