Android CodeView: Snippet으로 코드 편집기 만들기

6941 단어 androidkotlinjava
안녕하세요. 저는 소프트웨어 엔지니어인 Amr Hesham입니다. 저는 Android 개발 및 컴파일러 디자인에 관심이 있습니다. 지난 몇 기사에서 CodeView 라이브러리를 사용하여 사용자 정의 언어 또는 구문 형광펜, 자동 완성, 오류 및 경고 형광펜, 검색 결과 강조 표시 등의 데이터 형식. 이 기사에서는 CodeView 1.1.0을 사용하여 편집기에서 코드 조각을 쉽게 구현하는 방법을 보여줍니다.

스니펫 또는 라이브 템플릿은 매우 유용한 기능이며 Visual Studio Code와 같은 대부분의 최신 코드 편집기 및 IDE와 Android Studio, IntelliJ IDEA와 같은 모든 JetBrains IDE에서 찾을 수 있습니다. 문자를 입력하고 코드를 더 빠르게 작성하는 데 도움이 되며, 이 기능은 코드 편집기 앱에서 사용자가 모바일 장치에서 빠르게 작성할 수 있도록 하는 데 매우 필요합니다.

버전 1.1.0부터 CodeView를 사용하면 몇 줄의 코드로 스니펫을 쉽게 지원할 수 있습니다. 예제를 구현하여 시작하겠습니다. 이 예제에서는 Java 개발자 사용자가 코드 작성을 빠르게 시작할 수 있도록 하므로 목표는 다음과 같습니다. 사용자가 접두사 'main'이 있는 스니펫을 클릭하면 Hello World 코드가 삽입됩니다.

프로젝트에 CodeView를 추가하는 방법과 Java용 형광펜을 만드는 방법을 배우려면 이 기사와 공식 리포지토리를 확인하여 코드 조각 기능에 집중할 수 있습니다.
  • Github 저장소: AmrDeveloper/codeview .

  • Java Highlighter를 구현한 후에는 키워드와 스니펫을 추가할 차례입니다.

    CodeView 라이브러리에서 키워드 및 스니펫은 Code 인터페이스를 구현하는 클래스입니다.

    public interface Code {
        String getCodeTitle();
        String getCodePrefix();
        String getCodeBody();
    }
    


    이 클래스에는 title, prefix 및 body의 세 가지 속성이 있습니다. 이들의 차이점을 아는 것이 중요합니다.
  • 제목은 자동 완성 드롭다운 메뉴에 표시되는 텍스트이므로 예를 들어 "키워드 패키지"가 될 수 있습니다.
  • 접두사는 자동 완성 어댑터에서 필터링에 사용하는 텍스트입니다(예: "패키지"
  • ).
  • 본문은 사용자가 접두사의 하위 집합인 문자열을 입력한 다음 "package main;"과 같은 제목을 클릭할 때 코드에 삽입한 것입니다.

  • 몇 가지 예를 작성할 때 다른 Cleary를 이해할 수 있으므로 첫 번째 예부터 시작하겠습니다.

    먼저 모든 키워드와 스니펫이 포함된 목록을 만들어야 합니다.

    String mainPackageTitle = Main Code;
    String mainPacakgePrefx = main;
    String mainPackageBody = package main;\n\npublic class Main { +
     “\n\tpublic static void main(String[] args){ +
     “\n\t\tSystem.out.println(\”Hello, World!\”);\n\t}\n};
    List<Code> codes = new ArrayList<>();
    codes.add(new Snippet(mainPackageTitle, mainPacakgePrefx, mainPackageBody));
    


    그런 다음 CodeViewAdapter를 만들고 CodeView 개체로 설정해야 합니다.

    CodeViewAdapter codeAdapter = new CodeViewAdapter(this, codes);
    codeview.setAdapter(codeAdapter);
    


    여기서 우리는 접두사 'main'을 사용하여 스니펫을 만들었습니다. 따라서 사용자 입력이 'main'의 하위 집합이면 사용자는 자동 완성 드롭다운 메뉴에서 "메인 코드"옵션을 볼 수 있으며 선택하면 Hello World 예제가 코드에 삽입됩니다. 뷰 편집기와 최종 결과는 다음과 같습니다.



    원하는 만큼 스니펫을 추가할 수 있지만 자동 완성 드롭다운 메뉴에서 스니펫과 키워드를 함께 표시하려면 어떻게 해야 할까요? 두 클래스가 모두 코드 유형이므로 두 클래스를 모두 목록에 추가할 수 있기 때문에 쉽습니다.

    List<Code> codes = new ArrayList<>();
    codes.add(new Keyword(.., .., ..));
    codes.add(new Snippet(.., .., ..));
    


    그것은 쉽고 이 예제를 확장하여 사용자에게 키워드와 스니펫을 정의할 수 있는 권한을 부여할 수 있습니다! 작업이 목록에 삽입되어 CodeViewAdapter에 전달됩니다.

    1.1.0 이전 버전 사용자의 경우 일반 ArrayAdapter를 사용하여 문자열 배열로 자동 완성 기능을 만드는 이전 옵션이 있으므로 이전 코드가 손상되지 않습니다.

    결국 이 기능이 마음에 드셨기를 바랍니다. GitHub 리포지토리에서 CodeView의 전체 문서와 예제를 확인할 수 있습니다. 마음에 들면 별표를 주고 기능 제안, 버그 보고, 기사 작성, 기여를 가장 환영합니다. 코드에.

    당신은 나를 찾을 수 있습니다: GitHub , , .

    CodeView와 프로그래밍을 즐기세요 😋

    좋은 웹페이지 즐겨찾기