Android Fundamentals - 사용자 정의 View에서 구성 코드 블록 사용

사용자 정의 뷰는 모두가 낯설지 않을 것이다. 사용자 정의 뷰의 첫 번째 단계는 서로 다른 구조 방법을 추가하는 것이다. 그리고 여기에는 서로 다른 문법이 있을 수 있다. 다음은 두 가지 흔히 볼 수 있는 문법이다.
첫 번째는 구조 방법마다 초기화 방법을 넣는 거예요.
public CustomView(Context context) {
        super(context);
        init();
    }

    public CustomView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
}

두 번째는 현재 구조 방법을 체인식으로 호출하는 것이다
public CustomView(Context context) {
        this(context, null);
    }

    public CustomView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

이렇게 쓰는 것은 모두 맞지만, 좀 번거롭다. 매번 View를 계승한 후에 많은 것을 쓴다. 친구들은 코드 블록을 만들어 보는 것도 괜찮다
public class CustomView extends View {

    public CustomView(Context context) {
        super(context);
    }

    public CustomView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    
    {
        init();
    }
}

이렇게 하면 위보다 약간 게으름을 피울 수 있다. 구조 코드 블록에 대해 아래에 간단하게 소개한다.
구조 코드 블록을 꺼내면 정적 코드 블록을 꺼내지 않을 수 없다
우선 정적 코드 블록을 보겠습니다.
public class Block {
        static{
            System.out.println("     ");
        }
    }

정적 코드 블록은 클래스가 불러올 때 실행되며, 한 번만 실행되며, 각종 코드 블록과 구조 함수보다 우선합니다.클래스에 정적 코드 블록이 여러 개 있으면 쓰기 순서대로 실행됩니다.(Java 클래스의 로드 메커니즘에 대해 잘 모르는 파트너는 이 기사를 볼 수 있습니다.https://blog.csdn.net/sinat_33150417/article/details/90783312)
일반적으로 프로젝트가 시작될 때 실행해야 하는 코드가 있으면 정적 코드 블록이 필요합니다.예를 들어 하나의 프로젝트를 시작하려면 불러오는 많은 프로필 등 자원을 정적 코드 블록에 넣을 수 있다.
주의해야 할 것은 정적 코드 블록은 어떤 방법체에도 존재할 수 없고 일반 변수에 접근할 수 없다는 것이다.
 
구조 코드 블록의 사용 방식은 바로 사용자 정의View의 사용 방식이다. 구조 코드 블록은 대상을 만들 때 호출되고 매번 대상을 만들 때마다 한 번씩 호출되지만 구조 함수 실행보다 우선하며 정적 코드 블록 다음에 호출된다.

좋은 웹페이지 즐겨찾기