You are on page 1of 9

 Навчальна програма курсу Android_Intro

№ Теми навчальної програми

1 Перша програма. XML-файл. Віджет TextView.

2 Робота з кнопками. Віджет Button.

3 Анімація. Простий та затухаючий поступальні рухи.

4 Обертовий рух.

5 Анімація масивів елементів.

6 Навігація однобічна та з повертанням, без та з передаванням даних.

7 Гра Flappy Birds. Intro.

8 Гра Flappy Birds. Аnimation.

Матеріали до навчальних тем


Тема 1. Перша програма. XML-файл. Віджет TextView.
Відео: android_1.
Домашнє завдання. Написати код для виведення кількох текстів згідно малюнку.
Для другого (центрального) варіанту підняття (опускання) другого або третього
текстів має супроводжуватись відповідним рухом третього або другого текстів. Для
третього (правого) варіанту підняття четвертого тексту або опускання першого
тексту не має спотворювати вигляд ромбу.
Тема 2. Робота з кнопками. Віджет Button.
Відео: Buttons.
Домашнє завдання. Створити калькулятор згідно рисунку. Числа X, Y задавати
фіксованими.

Тема 3. Анімація. Простий та затухаючий поступальні рухи.


Відео: animationFirst.
Домашнє завдання. Написати код для керування кнопками руху повітряної кулі
догори та вправо.
Тема 4. Обертовий рух.
Відео: androidRotate.
Код з відео:
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.graphics.*;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyDraw(this));
}
}

class MyDraw extends View {

int angle = 0;

public MyDraw(Context context) {


super(context);
}
protected void onDraw(Canvas canvas) {

canvas.drawColor(Color.YELLOW);

Paint p = new Paint();


p.setColor(Color.BLUE);

Path path = new Path();


path.addCircle(680, 305, 30, Path.Direction.CCW);
path.addCircle(520, 305, 30, Path.Direction.CCW);
path.addCircle(600, 225, 75, Path.Direction.CCW);
path.addCircle(600, 400, 100, Path.Direction.CCW);

Matrix matrix = new Matrix();


matrix.setRotate(angle, 600, 500);
path.transform(matrix);

canvas.drawPath(path, p);
angle = angle - 1;
invalidate();
}
}
Домашнє завдання.
1.Написати код для затухаючого руху математичного маятника.

2.Написати код для простого руху вправо автомобіля з однією лінією на колесах.

Тема 7. FlappyBirds_Intro.
Відео: FlappyBirds1, FlappyBirds2.
Коди з відео:
/////////////////////// CODES 1 //////////////////////////////
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void startGame(View view){
Intent intent = new Intent(this, StartGameActivity.class);
startActivity(intent);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout

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"
android:background="@drawable/nightbackground"
tools:context=".MainActivity">

<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/play"
android:onClick="startGame"/>

</androidx.constraintlayout.widget.ConstraintLayout>

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.View;

public class GameView extends View {


Bitmap background;
GameView(Context context){
super(context);
background = BitmapFactory.decodeResource(getResources(),

R.drawable.daybackground);
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, 0, 0, null);
}
}

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class StartGameActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GameView(this));
}
}
/////////////////////// CODE 2 //////////////////

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.View;

public class GameView extends View {


Bitmap background;
Rect rectangle;
int rectHeight, rectWidth;
GameView(Context context){
super(context);
background = BitmapFactory.decodeResource(getResources(),

R.drawable.daybackground);
createDisplay();
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, null, rectangle, null);
}
public void createDisplay(){
Display display = ((Activity)getContext()).getWindowManager().
getDefaultDisplay();
Point point = new Point();
display.getSize(point);
rectHeight = point.y;
rectWidth = point.x;
rectangle = new Rect(0, 0, rectWidth, rectHeight);
}
}

/////////////////////// CODE 3 //////////////////

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.View;

public class GameView extends View {

Bitmap background;
Rect rectangle;
int rectHeight, rectWidth;
Bitmap[] birds = new Bitmap[3];
int birdsX, birdsY;
GameView(Context context){
super(context);
createDisplay();
background = BitmapFactory.decodeResource(getResources(),
R.drawable.daybackground);
birds[0] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingup);
birds[1] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingdown);
birdsX = rectWidth / 2;
birdsY = rectHeight / 2;
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, null, rectangle, null);
canvas.drawBitmap(birds[0], birdsX, birdsY, null);

}
public void createDisplay(){
Display display = ((Activity)getContext()).getWindowManager().
getDefaultDisplay();
Point point = new Point();
display.getSize(point);
rectHeight = point.y;
rectWidth = point.x;
rectangle = new Rect(0, 0, rectWidth, rectHeight);
}
}

Домашнє завдання. Додати код для реалізації руху крил пташки спочатку на 2
позиції - догори та донизу, потім - на 4 позиції - посередині, догори, посередині та
донизу.

Тема 8. FlappyBirds_Animation.
Відео: FlappyBirds3.
Код з відео:
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View {


Bitmap background;
Rect rectangle;
int rectHeight, rectWidth;
Bitmap[] birds = new Bitmap[3];
Bitmap tubeTop, tubeBottom;
int tubesX = 0, tubeTopY = 0, tubeBottomY = 1150;
int birdX, birdY;
int nowBird = 0;
boolean toUp = true;
int velocity = 2, gravity = 1;

GameView(Context context){
super(context);
createDisplay();
background = BitmapFactory.decodeResource(getResources(),
R.drawable.daybackground);
birds[0] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingup);
birds[1] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingmiddle);
birds[2] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingdown);
tubeTop = BitmapFactory.decodeResource(getResources(),
R.drawable.tubetop);
tubeBottom = BitmapFactory.decodeResource(getResources(),
R.drawable.tubebottom);
birdX = rectWidth / 2;
birdY = rectHeight / 2;
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, null, rectangle, null);
canvas.drawBitmap(birds[nowBird], birdX, birdY, null);
canvas.drawBitmap(tubeTop, tubesX, tubeTopY, null);
canvas.drawBitmap(tubeBottom, tubesX, tubeBottomY, null);
velocity += gravity;
if(toUp){
if(nowBird == 2){
toUp = false;
nowBird = 1;
}else{
nowBird++;
}
}else{
if(nowBird == 0){
toUp = true;
nowBird = 1;
}else{
nowBird--;
}
}
if(birdY < 0){
birdY = 0;
}else{
if(birdY >= rectHeight - 250){
birdY = rectHeight - 250;
}else{
birdY += velocity;
}
}
// try {
// Thread.sleep(1000);
// }catch(Exception e){}
invalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN){
birdY -= 200;
velocity = 2;
}
return true;
}
public void createDisplay(){
Display display = ((Activity)getContext()).getWindowManager().
getDefaultDisplay();
Point point = new Point();
display.getSize(point);
rectHeight = point.y;
rectWidth = point.x;
rectangle = new Rect(0, 0, rectWidth, rectHeight);
}
}

Домашнє завдання. Додати код для нескінченного руху масиву пар колон з
випадковими значеннями початку верхньої та нижньої колон по вертикалі:

You might also like