Code Monkey home page Code Monkey logo

virtualview_tools's Introduction

VirtualView Tools

中文文档

This project is a tool library as a part of VirtualView library, used to compile XML files:

How-to

Run From CMD

Tools Introduction

Download the source code, the executable is located at folder TemplateWorkSpace. There are several files here:

File Introduction
config.properties configs of widget's ID and attribute's value type
templatelist.properties the file list of XML template
build output folder after compiling XML files
template the source code XML files
compiler.jar executable jar file exported from the total source code
buildTemplate.sh the command script to run compiler.jar
How to Run
  • Execute the follow command in Terminal: sh buildTemplate.sh
  • The artifacts is located at folder build
How to Configure config.properties
  • VIEW_ID_XXXX
    • Define the widget's id, User's custom widget's should start from 1000;
    • For example, VIEW_ID_FrameLayout=1 means the tag <FrameLayout> in XML will be compiled to number 1;
    • The property name in should start with VIEW_ID_;  - Widget's Id value from 1 t0 1000 are reserved for system, so custom widget's id should be assigned start 1001;
  • property=ValueType
    • Define the attribute's value type, which decide how to parse and compile original value into a compiled data in.
    • Currently supported defination is:
      • Normal type:String(Default, no need configuration)、FloatColorExprNumberIntBool
      • Special type: FlagTypeAlignLayoutWidthHeightTextStyleDataModeVisibility
      • Enum type: Enum<name:value,……>
        • Enum desp:
          • For example: flexDirection=Enum<row:0,row-reverse:1,column:2,column-reverse:3>
          • This means the attribute row will be converted into number 0, and row-reverse into number 1
How to Configure templatelist.properties
  • Format: xmlFileName=outFileName,Version[,platform]
    • xmlFileName; The file name need to be compiled under folder template, no need to add file extension here;
    • outFileName: The output file name after compiling;
    • Version: XML file's version;
    • platform: Optional, valid value are android and iphone. Used to describe which platform current XML is target to, the output artifacts will be stored at a separate folder;
How to Write XML
  • The same way as before, while no need to write Java code to process new attributes, the only thing need to do is add a ValueType defination in config.properties;
Artifacts after Compiling
  • File under folder out: the binary data serialized from template file, all the other three outputs are generated from this.
  • File under folder java: the binary data in form of Java byte array. May be copied to Android project to run.
  • File udner folder sign: the md5 of binary data;
  • File under folder txt: the binary data in form of HEX string.

Use as API

Except that use as a command tool to compile file, there is an another way to compile XML data from an IDE plugin, a client, a backend service or somewhere else. So it's possible to use JAVA API to compile data, the example code is as follow:

//Build a ViewCompilerApi instance
ViewCompilerApi viewCompiler = new ViewCompilerApi();
//init a ConfigLoader to load config.properties.
viewCompiler.setConfigLoader(new LocalConfigLoader());
//read XML data from file or somewhere else
FileInputStream fis = new FileInputStream(rootDir);
//Parameters are XML data's InputStream, template name, template version
byte[] result = viewCompiler.compile(fis, "icon", 13);

Contributing

Before you open an issue or create a pull request, please read Contributing Guide first.

LICENSE

VirtualView tools is available under the MIT license.

virtualview_tools's People

Contributors

longerian avatar mikeafc avatar mingjunli avatar pmwy avatar alibaba-oss avatar harrisonxi avatar jadyli avatar isaced avatar rysle avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.