안드로이드에서 게임을 만들지 않는 한 Custom View를 만드는 일은 그리 흔치 않다고 한다.
그래도 한번 공부 삼아 만들어 보자
1. View 클래스를 상속 받는 CustomView 생성
2. CustomView 를 Activity에 세팅
3. 이벤트 등록
[View 클래스를 상속 받는 CustomView 생성]
View 클래스를 상속 받는 CustomView를 만들자.
View 클래스를 구현 하려면 3개의 생성자 및 onDraw 메소드를 override 해서 구현해야 한다.
[CustomView 를 Activity에 세팅]
기본적으로 CustomView를 세팅하는 방법을 setContentView() 메소드를 호출하는 것은 똑같다.
기존에 res/layout 의 xml 파일의 R.layout 값을 파라미터로 넘기는것과 달리 CustomView 객체를 생성하여 넘겨준다.
[이벤트 등록]
마우스 클릭 이벤트를 등록 한다면, 아래 코드를 추가하면 된다.
View.onClickListener 클래스를 구현한 객체를 setOnClickListener 메소드를 호출하여 넘겨주면 되는데 다양한 방법 중 아래 방법(익명클래스생성)으로 넘기는게 보편적인 방법이다.
위 코드는 람다표기법이라고 해서 아래 코드랑 동일하게 동작한다.
JDK 1.8 부터 가능하다고 한다
1. View 클래스를 상속 받는 CustomView 생성
2. res/layout 에다가 해당 CustomView 를 사용하도록 xml 파일에 추가
3. CustomView 를 Activity에 세팅
[res/layout 에다가 해당 CustomView 를 사용하도록 xml 파일에 추가]
[CustomView 를 Activity에 세팅]
그래도 한번 공부 삼아 만들어 보자
직접 클래스 생성을 통한 CustomView 생성
1. View 클래스를 상속 받는 CustomView 생성
2. CustomView 를 Activity에 세팅
3. 이벤트 등록
[View 클래스를 상속 받는 CustomView 생성]
View 클래스를 상속 받는 CustomView를 만들자.
View 클래스를 구현 하려면 3개의 생성자 및 onDraw 메소드를 override 해서 구현해야 한다.
public class CircleView extends View { public CircleView(Context context) { super(context); } public CircleView(Context context, AttributeSet attrs) { super(context, attrs); } public CircleView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.BLUE); canvas.drawCircle(50, 50, 30, paint); } }
[CustomView 를 Activity에 세팅]
기본적으로 CustomView를 세팅하는 방법을 setContentView() 메소드를 호출하는 것은 똑같다.
기존에 res/layout 의 xml 파일의 R.layout 값을 파라미터로 넘기는것과 달리 CustomView 객체를 생성하여 넘겨준다.
public class CustomViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.ch07_activity_custom_view); CircleView circle = new CircleView(this); setContentView(circle); } }
[이벤트 등록]
마우스 클릭 이벤트를 등록 한다면, 아래 코드를 추가하면 된다.
View.onClickListener 클래스를 구현한 객체를 setOnClickListener 메소드를 호출하여 넘겨주면 되는데 다양한 방법 중 아래 방법(익명클래스생성)으로 넘기는게 보편적인 방법이다.
circle.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Log.d(this.getClass().getSimpleName(), "2-5. 리스너 인터페이스 그냥 바로 추가"); } });
위 코드는 람다표기법이라고 해서 아래 코드랑 동일하게 동작한다.
JDK 1.8 부터 가능하다고 한다
circle.setOnClickListener( (v) -> { Log.d(this.getClass().getSimpleName(), "2-5. 리스너 인터페이스 그냥 바로 추가"); });
직접 클래스 생성을 통한 CustomView 생성
1. View 클래스를 상속 받는 CustomView 생성
2. res/layout 에다가 해당 CustomView 를 사용하도록 xml 파일에 추가
3. CustomView 를 Activity에 세팅
[res/layout 에다가 해당 CustomView 를 사용하도록 xml 파일에 추가]
<mypackage.CircleView android:id="@+id/circle" android:layout_width="wrap_content" android:layout_height="wrap_content" />
[CustomView 를 Activity에 세팅]
setContentView(R.layout.ch07_activity_custom_view);
댓글 없음:
댓글 쓰기