티스토리 뷰
여태까지 실습을 하면서 사용한 Layout들과 위젯들은 안드로이드 프레임워크에서
기본적으로 제공하는 라이브러리 였습니다.
이것 말고도 개발자가 직접 View 클래스를 상속받아 만들 수 있는데
이것을 커스텀뷰(CustomView)라고 합니다
지금까지 액티비티에 레이아웃을 그려준 방법은 java 파일에서
setcontentView(.xml) 이런식으로 불러와서 그려주었습니다.
하지만 커스텀 뷰를 사용하면 이런 방식이 아니라
java 파일에서 View를 상속받아 만든 파생클래스를 setcontentView(.java)로 불러와서 그려주게됩니다.
이 커스텀 뷰를 이용해서 점, 선, 면, 원을 만들어보겠습니다.
MainActivity.java에서 이제 setContentView에 xml을 불러오지 않습니다.
//MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
CustomView customView = new CustomView(this);
setContentView(customView); // customView : 직접 만든 파생 클래스
}
//CustomView.java
public class CustomView extends View {
public CustomView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
//super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
canvas.drawRect(150,10,250,150, paint);
paint.setColor(Color.RED);
canvas.drawPoint(110, 110, paint);
paint.setColor(Color.GRAY);
canvas.drawLine(50,50,100,100,paint);
paint.setColor(Color.BLUE);
canvas.drawCircle(200,200,70,paint);
}
}
이 클래스는 View 클래스를 상속받아서 만들었습니다.
protected void onDraw(Canvas canvas)
이 함수는 다른 Activity에서 setContentView로 커스텀 뷰를 불러올 때 자동으로 실행되는 메소드입니다.
canvas.drawRect(150,10,250,150, paint);
네모 그리기. 네모의 좌상단 좌표가 (150, 10) 이고 우하단 좌표가 (250, 150) 입니다.
canvas.drawPoint(110, 110, paint);
점 그리기. (110(x),110(y))
canvas.drawLine(50,50,100,100,paint);
선 그리기 (50, 50) -> (100, 100) 으로 그리기
canvas.drawCircle(x좌표,y좌표,반지름, paint);
원그리기
좌표를 조금 조정해서 그린 커스텀 뷰이다.
점은 워낙 작아서 안보이고 선도 너무 얇다..
선을 두껍게 출력하는 방법이 따로 있나 궁금증이 생기고
두껍게가 되지 않는다면 Rect를 얇게해서 쓰는 방법밖에 없을까 라는 생각도 든다.
이런 커스텀 뷰를 이용해서 만들 수 있는 기능은
내가 집에서부터 다닌 곳을 GPS 수신으로 내 좌표를 찍어 점이나 LINE을 그리는 기능을 만들 때 사용이 된다.
이상으로 커스텀 뷰에 대해 글을 마치겠습니다.
'Android Studio > 이론위주' 카테고리의 다른 글
안드로이드스튜디오 - RelativeLayout (0) | 2019.11.15 |
---|---|
안드로이드 스튜디오 - 기본 위젯 (0) | 2019.11.15 |
안드로이드 스튜디오 - 레이아웃, LinearLayout (0) | 2019.11.14 |
- Total
- Today
- Yesterday
- 객체
- 정렬
- 기초
- 문자열
- php
- 관계형데이터베이스
- css
- 생활코딩#MySQL
- javascript
- 변수
- 알고리즘
- 선택자
- GRID
- PHP&MySQL
- 안드로이드 스튜디오
- 차이점
- 글로
- Link
- 동영상을
- TAG
- 언리얼엔진4
- visual studio code
- C언어
- 생활코딩
- 네트워크 프로그래밍
- HTML
- 생활코딩#동영상을#글로#html
- 조건문
- 언리얼엔진
- inline
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |