10. Основи графіки

1. Створіть новий проект. Скачайте будь-яку картинку та скопіюйте її в папку drawable.

2. Перейдіть у MainActivity та замініть метод OnCreate:

1
2
3
4
5
6
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.activity_main); це вже не потрібно
        Draw2D draw2D = new Draw2D(this);
        setContentView(draw2D);
    }

3. Створіть новий клас з назвою Draw2D.

4. У новому класі оголосіть змінні:

1
2
3
    private Paint mPaint = new Paint(); // змінна для холста
    private Rect mRect = new Rect(); // змінна для фігур
    private Bitmap mBitmap; // змінна для зображення

5. Оголосіть нові методи Draw2D та OnDraw:

1
2
3
4
5
6
7
8
9
10
11
12
 public Draw2D(Context context) {
        super(context);
 
        // показ картинки із ресурсів
        Resources res = this.getResources();
        mBitmap = BitmapFactory.decodeResource(res, R.drawable.snake);
    }
 
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }

6. Метод OnDraw буде містити  команди малювання. Створіть холст білого кольору:

1
2
3
4
5
6
       // стиль "заливка"
        mPaint.setStyle(Paint.Style.FILL);
 
        // холст білого кольору
        mPaint.setColor(Color.WHITE);
        canvas.drawPaint(mPaint);

7. Намалюйте жовте коло з написом під кутом "Sun":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
     // малюємо жовте коло
        mPaint.setAntiAlias(true);
        mPaint.setColor(Color.YELLOW);
        canvas.drawCircle(300, 30, 25, mPaint);
 
        // текст "сонце" під кутом
        int x = 285;
        int y = 85;
 
        mPaint.setColor(Color.GRAY);
        mPaint.setTextSize(27);
        String str2rotate = "Sun ^_^";
 
        // створюється прямокнутник
        // поворот текста відносно прямокутника
        canvas.rotate(-45, x + mRect.exactCenterX(), y + mRect.exactCenterY());
 
        // пишемо текст
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawText(str2rotate, x, y, mPaint);

8. Намалюйте зелений прямокутник, який імітуватиме траву.

1
2
3
        // зелена "трава"
        mPaint.setColor(Color.GREEN);
        canvas.drawRect(0, 650, 800, 680, mPaint);

9. На попередньому прямокутнику розмістіть ваше зображення і напис(на ваш розсуд).

1
2
3
4
5
6
7
8
9
10
11
12
        // малюємо текст
        mPaint.setColor(Color.BLUE);
        mPaint.setStyle(Paint.Style.FILL);
        mPaint.setAntiAlias(true);
        mPaint.setTextSize(32);
        canvas.drawText("Snake is here", 30, 648, mPaint);
 
        // відновлюємо холст
        canvas.restore();
 
        // показ зображення
        canvas.drawBitmap(mBitmap, 0, 100, mPaint);

10. Запустіть на виконання. Результат(всі змінні бралися під розмір екрану 400х800. Якщо у вашого емулятора інші розміри, то вам необхідно буде підбирати їх самотужки):

Контрольні питання:

1. Як створити новий клас?

2. Як виконується заливка?

3. Як намалювати коло?

4. Як намалювати прямокутник?