package com.example.book;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
class myView extends View {
private static int[] color = {Color.GREEN, Color.YELLOW, Color.YELLOW, Color.BLUE, Color.RED, Color.WHITE};
private static int index = 0;
public myView(Context context) {
super(context);
}
public myView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public myView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(color[index]);
changeBgColor();
super.onDraw(canvas);
}
public void changeBgColor(){
index = ((index+1) % 5);
}
}
public class Main4Activity extends Activity {
private myView customview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
Button btn = (Button)findViewById(R.id.id_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
customview = (myView)findViewById(R.id.id_myview);
}
});
}
}
안녕하세요.
버튼을 클릭하면 배경색이 바뀌는 커스텀 뷰를 만들었는데
클릭할때마다 index가 초기화되서 색이 변하질 않고 있습니다.
전역변수로 사용하기 위해(static)을 붙여주었고
상수화하려고 (fianl)을 붙이면 어떨가 했는데 changeBgcolor(함수)에서 초기화되기때문에
(final)을 붙이면 오류가 뜹니다. 버튼을 클릭해도 index값이 0으로 초기화되지 않고 changeBgcolor함수 내용을 따르게 하는 방법이 있을까요?