Android DataBinding 소개

7477 단어 Android
Android DataBinding 소개
공식 소개 주소:http://developer.android.com/intl/zh-cn/tools/data-binding/guide.html
머리말
2015 Google IO 총회 에서 가 져 온 Data Binding 라 이브 러 리 는 Android 개발 자 들 이 MVVM 구조 모델 을 편리 하 게 구현 할 수 있 게 해 줍 니 다.DataBinding 을 사용 하면 응용 프로그램의 개발 을 개선 하고 코드 를 더욱 깨끗 하고 우아 하 게 할 수 있 습 니 다.구 글 의 Yigit Boyar 와 George Mount 가 안 드 로 이 드 를 위해 개발 한 Data Binding 라 이브 러 리 는 개발 자 들 로 하여 금 최소한 의 힘 으로 풍부 한 호응 성 을 가 진 사용자 체험 을 신속하게 구축 할 수 있 게 한다.George 는 구 글 Android UI 도구 팀 의 소프트웨어 엔지니어 로 주로 애니메이션 과 과도 에 힘 쓰 는데 Activity 와 Fragment 의 과도 효 과 를 포함한다.구 글 에 가입 하기 전에 George 는 NVIDIA, Intuit, 인터넷 에서 각각 일 한 적 이 있 으 며 주로 데스크 톱 UI 와 서버 애플 리 케 이 션 을 개발 했다.George 는 스 탠 퍼 드 대 석사 학위 와 오 레 곤 주 립 대학의 학사 학 위 를 받 았 다.
 Yigit 도 Android UI 도구 팀 의 일원 으로 UI 구성 요 소 를 만 들 고 레이아웃 성능 을 향상 시 키 는 데 주력 합 니 다.구 글 에 가입 하기 전에 Path. com 에서 안 드 로 이 드 프로젝트 주관 을 맡 았 고 그곳 에서 그 는 주로 응용 프로그램의 구조, 실시 간 사진 필터 와 최 적 화 된 UI 인터페이스의 유창 성에 전념 했다.그 는 터키 중동 과학기술 대학 에서 컴퓨터 공학 학사 학 위 를 받 았 다.
환경 설정
최신 버 전의 Android Studio 에는 Android Data Binding 프레임 워 크 에 대한 지원 이 내장 되 어 있 습 니 다. 설정 도 간단 합 니 다. app 의 build. gradle 파일 에 아래 내용 만 추가 하면 됩 니 다.
android {
    ....
    dataBinding {
        enabled = true
    }
}

필자 가 현재 사용 하고 있 는 as 버 전 은 2.0.0 - preview 4 이 고 buildToolsVersion 버 전 은 23.0.2 이 며 copileSdkVersion 버 전 은 23 이다.공식 소개 에서 안 드 로 이 드 gradle 버 전 은 1.5.0 - alpha 보다 커 야 한 다 는 명확 한 지적 이 있다.
To use data binding, Android Plugin for Gradle 1.5.0-alpha1 or  higher is required.

PS: 전에 gradle 2.0.0 - alpha 1 버 전 을 사용 해 봤 는데 컴 파일 이 잘못 되 었 습 니 다. 왜 그런 지 모 르 겠 습 니 다. 이 유 를 아 는 사람 이 있 으 면 stackoverflow 에 답 해 주세요.
설정 이 완료 되면 프로젝트 구축 이 완료 되면 프로젝트 External Libraries 에 aar 가방 이 네 개 더 있 는 것 을 발견 할 수 있 습 니 다.
adapters-1.0-rc3         DataBinding   
baseLibrary-1.0-rc5          DataBinding annotation     
compiler-1.0-rc5             DataBinding    
library-1.0-rc3          Observable    

네 개의 jar 가방 을 합치 면 모두 200 KB 를 넘 지 않 을 것 이다.
쓰다
DataBinding 라 이브 러 리 를 사용 하면 android 전통 개발 프로 세 스에 서 Layout 파일 의 작성 방식 을 바 꿀 수 있 습 니 다. 이것 이 ViewModel 의 핵심 입 니 다. 보기 와 Model 을 연결 합 니 다. Model 층 의 값 만 수정 하면 해당 하 는 View 층 은 자동 으로 자신 을 수정 할 수 있 습 니 다.
데이터 바 인 딩 레이아웃 파일
android 의 res / layot 파일 아래 에 응용 프로그램의 모든 인터페이스 보기 가 놓 여 있 습 니 다. Data Binding Layout 파일 도 이 디 렉 터 리 에 놓 여 있 습 니 다. 사실은 전통 적 인 layot 파일 을 수정 하면 Data Binding Layout 파일 로 만 들 수 있 습 니 다.
Data Binding layot 파일 은 약간 다른 것 이 있 습 니 다. 시작 루트 라벨 은 layot 이 고 다음 data 요소 와 view 의 루트 요소 입 니 다.이 view 요 소 는 Data Binding 을 사용 하지 않 은 layot 파일 의 루트 요소 입 니 다.예 를 들 어 다음 과 같이 설명 한다.



   


   
   



data 에서 user 라 는 변수 속성 을 설명 하여 이 layot 에서 사용 할 수 있 도록 합 니 다.


layot 의 속성 표현 식 에 @ {} 을 작성 합 니 다. 다음은 TextView 의 text 가 user 의 firstName 속성 으로 설정 되 어 있 습 니 다.


이 layot 의 파일 이름 을 주의 하 십시오. DataBinding 은 이 layot 의 파일 이름 에 따라 xx Binding 류 를 생 성 합 니 다. 이 종 류 는 View DataBiding 에서 계승 합 니 다.layot 파일 이름 이 content 이면main. xml 는 ContentMainBinding 류 를 생 성 합 니 다. 공식 설명 에 따 르 면 layot 파일 이름 의 하강 선 을 자동 으로 제거 한 다음 에 낙타 봉 식 이름 규칙 을 사용 한 다음 에 Binding 접 두 사 를 추가 합 니 다.이것 은 안 드 로 이 드 의 layot 컴 파일 러 가 하나의 단독 클래스 로 바 뀌 고 모든 layot 는 하나의 layot 클래스 에 대응 한 다 는 것 을 설명 한다.DataBinding 라 이브 러 리 로 이 layot 류 를 다시 만 들 었 을 뿐 입 니 다.
Data Object
사용자 의 plain - old Java Object (POJO) 가 있다 고 가정 하 십시오.
public class User {
    public final String firstName;
    public final String lastName;
    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

이 유형의 대상 은 변 하지 않 는 데 이 터 를 가지 고 있 습 니 다.app 에서 흔히 볼 수 있 습 니 다. 한 번 읽 을 수 있 고 그 후에 변 하지 않 습 니 다.물론 자바 빈 스 대상 도 사용 할 수 있 습 니 다.
public class User {
    private final String firstName;
    private final String lastName;
    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
}
public String getFirstName() {
       return this.firstName;
}
public String getLastName() {
      return this.lastName;
}
}

Data Binding 의 측면 에서 볼 때 이 두 종 류 는 등가 이다.TextView 의 android: text 속성 에 사용 할 표현 식 @ {user. firstName} 은 전자 POJO 대상 의 firstName 과 후자 자바 Beans 대상 의 getFirstName () 방법 에 접근 합 니 다.
바 인 딩 데이터
public class MainFragment extends Fragment {

private ContentMainBinding mMainBinding;
private UserModel mUserModel;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.content_main, container, false);
    //   1,        Binding   
    mMainBinding = ContentMainBinding.bind(view);

    //   2,    ViewDataBinding  
//        ViewDataBinding viewDataBinding = ContentMainBinding.bind(view);
//        mMainBinding = (ContentMainBinding) viewDataBinding;

    //  3,     Binding inflater,
//        mMainBinding = ContentMainBinding.inflate(inflater);

    //  4,     Binding inflater,  Inflater api
//        mMainBinding = ContentMainBinding.inflate(inflater, container, false);

    //  5,          Binding    ,      layout  
//        ViewDataBinding viewDataBinding = DataBindingUtil.inflate(inflater, R.layout.content_main, container, false);
//        mMainBinding = (ContentMainBinding) viewDataBinding;

    //  6,          Binding    
//        ViewDataBinding viewDataBinding = DataBindingUtil.bind(view);

    mUserModel = new UserModel(this, getResources());

    mMainBinding.setUser(mUserModel);

    attachButtonListener();
    return view;
}

단계 1: layot 에 대응 하 는 Binding 클래스 를 초기 화 합 니 다.단계 2: layot 에 대응 하 는 Model 클래스 를 초기 화 합 니 다.단계 3: layot 에 대응 하 는 Model 클래스 와 Binding 클래스 를 연결 합 니 다.
위 layot 에서 기본적으로 자동 으로 생 성 되 는 Binding 류 를 사 용 했 습 니 다. 여러 가지 API 가 Binding 류 를 초기 화 할 수 있 고 서로 다른 방법 은 상황 에 따라 구체 적 으로 호출 할 수 있 습 니 다.
Model 클래스 와 Binding 클래스 의 바 인 딩 api 는 data binding layot 의 설정 에 의존 합 니 다.여기에 설 정 된 것 은:


즉, variable name = "user" 여기 name 속성 은 user 입 니 다. Binding 류 에 대응 하 는 setUser 방법 입 니 다. 이 방법 도 기본적으로 자동 으로 생 성 되 며 낙타 봉 식 을 사용 합 니 다.그리고 UserModel 의 값 을 수정 하여 View 를 자동 으로 수정 하 는 효 과 를 얻 을 수 있 습 니 다.
위 에서 가장 간단 한 Data Binding 라 이브 러 리 의 사용 을 보 여 주 었 고 더 깊이 있 고 고 급 스 러 운 공식 문 서 를 사용 하 는 것 이 우리 에 게 소개 되 었 습 니 다.그러나 이런 모델 의 개발 에 익숙해 지 려 면 적응 하 는 데 시간 이 필요 하 다.
참고 자료:http://developer.android.com/intl/zh-cn/tools/data-binding/guide.htmlhttps://realm.io/cn/news/data-binding-android-boyar-mount/?utm_source=tuicool&utm_medium=referralhttp://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0603/2992.html

좋은 웹페이지 즐겨찾기