├── kratos
├── .gitignore
├── src
│ └── main
│ │ ├── java
│ │ └── kratos
│ │ │ ├── package-info.java
│ │ │ ├── card
│ │ │ ├── render
│ │ │ │ ├── SearchMenu.kt
│ │ │ │ ├── SearchStyle.kt
│ │ │ │ ├── Menu.kt
│ │ │ │ ├── Header.kt
│ │ │ │ ├── Style.kt
│ │ │ │ └── Template.kt
│ │ │ ├── entity
│ │ │ │ └── KData.kt
│ │ │ ├── utils
│ │ │ │ ├── OnCardRenderListener.kt
│ │ │ │ ├── DelegateExt.kt
│ │ │ │ ├── Skip.java
│ │ │ │ ├── FixSwipeRefreshLayout.kt
│ │ │ │ ├── NotNullCardRenderListenter.kt
│ │ │ │ ├── JsonVerify.java
│ │ │ │ ├── DrawableUtils.java
│ │ │ │ ├── StringUtils.java
│ │ │ │ ├── GsonUtilsCreator.java
│ │ │ │ ├── GsonUtils.java
│ │ │ │ └── ActivityUtils.java
│ │ │ ├── event
│ │ │ │ ├── FailEvent.java
│ │ │ │ ├── ExceptionEvent.java
│ │ │ │ ├── SuccessEvent.java
│ │ │ │ ├── KMenuClickEvent.java
│ │ │ │ └── KOnClickEvent.java
│ │ │ ├── KCard.kt
│ │ │ ├── KCardActivity.kt
│ │ │ └── RenderExt.kt
│ │ │ ├── internal
│ │ │ ├── KBinder.java
│ │ │ ├── KBase.kt
│ │ │ ├── KStringDeserializer.java
│ │ │ ├── ViewExt.kt
│ │ │ ├── KFinder.java
│ │ │ ├── KBoolean.kt
│ │ │ ├── Binding.java
│ │ │ └── KString.kt
│ │ │ └── Kratos.java
│ │ ├── res
│ │ ├── menu
│ │ │ └── empty.xml
│ │ ├── layout
│ │ │ ├── inc_toolbar.xml
│ │ │ └── kcard_main.xml
│ │ └── values
│ │ │ └── style.xml
│ │ └── AndroidManifest.xml
├── gradle.properties
├── proguard-rules.pro
└── build.gradle
├── kratos-sample
├── .gitignore
├── src
│ └── main
│ │ ├── java
│ │ └── me
│ │ │ └── ele
│ │ │ └── kratos_sample
│ │ │ ├── package-info.java
│ │ │ ├── entity
│ │ │ ├── KText.java
│ │ │ └── Customer.java
│ │ │ ├── TextCard.java
│ │ │ ├── CardSampleActivity.java
│ │ │ └── SimpleActivity.java
│ │ ├── res
│ │ ├── values
│ │ │ ├── strings.xml
│ │ │ └── colors.xml
│ │ ├── raw
│ │ │ └── sample.json
│ │ └── layout
│ │ │ ├── kcard_text.xml
│ │ │ └── activity_simple.xml
│ │ └── AndroidManifest.xml
├── build.gradle
└── proguard-rules.pro
├── images
├── card.gif
├── demo.png
├── logo.jpg
├── example.gif
├── customer.png
└── complexcard.png
├── gradle
├── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── gradle-mvn-push.gradle
├── kratos-compiler
├── gradle.properties
├── src
│ └── main
│ │ └── java
│ │ └── kratos
│ │ └── compiler
│ │ ├── KBinding.java
│ │ ├── binding
│ │ ├── KBindingGeneric.java
│ │ ├── KBooleanBinding.java
│ │ └── KStringBinding.java
│ │ ├── UpdateKStringBinding.java
│ │ ├── FieldViewBinding.java
│ │ ├── KBindings.java
│ │ ├── BindingClass.java
│ │ └── KratosProcessor.java
└── build.gradle
├── kratos-annotation
├── gradle.properties
├── src
│ └── main
│ │ └── java
│ │ └── kratos
│ │ ├── WithBind.java
│ │ ├── PackageName.java
│ │ ├── Binds.java
│ │ ├── LBindLayout.java
│ │ ├── LBindText.java
│ │ ├── OnKStringChanged.java
│ │ ├── OnKBooleanChanged.java
│ │ ├── BindText.java
│ │ ├── BindLayout.java
│ │ └── Bind.java
└── build.gradle
├── settings.gradle
├── .gitignore
├── gradle.properties
├── gradlew.bat
├── gradlew
├── LICENSE
└── README.md
/kratos/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/kratos-sample/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/package-info.java:
--------------------------------------------------------------------------------
1 | package kratos;
2 |
--------------------------------------------------------------------------------
/images/card.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ACEMerlin/Kratos/HEAD/images/card.gif
--------------------------------------------------------------------------------
/images/demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ACEMerlin/Kratos/HEAD/images/demo.png
--------------------------------------------------------------------------------
/images/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ACEMerlin/Kratos/HEAD/images/logo.jpg
--------------------------------------------------------------------------------
/images/example.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ACEMerlin/Kratos/HEAD/images/example.gif
--------------------------------------------------------------------------------
/images/customer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ACEMerlin/Kratos/HEAD/images/customer.png
--------------------------------------------------------------------------------
/kratos/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_ARTIFACT_ID=kratos
2 | POM_NAME=Kratos
3 | POM_PACKAGING=aar
4 |
--------------------------------------------------------------------------------
/images/complexcard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ACEMerlin/Kratos/HEAD/images/complexcard.png
--------------------------------------------------------------------------------
/kratos/src/main/res/menu/empty.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/kratos/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ACEMerlin/Kratos/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/kratos-compiler/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=Kratos Compiler
2 | POM_ARTIFACT_ID=kratos-compiler
3 | POM_PACKAGING=jar
4 |
--------------------------------------------------------------------------------
/kratos-annotation/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=Kratos Annotations
2 | POM_ARTIFACT_ID=kratos-annotations
3 | POM_PACKAGING=jar
4 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/render/SearchMenu.kt:
--------------------------------------------------------------------------------
1 | package kratos.card.render
2 |
3 | class SearchMenu : Menu() {
4 | }
--------------------------------------------------------------------------------
/kratos-sample/src/main/java/me/ele/kratos_sample/package-info.java:
--------------------------------------------------------------------------------
1 | @PackageName package me.ele.kratos_sample;
2 |
3 | import kratos.PackageName;
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/render/SearchStyle.kt:
--------------------------------------------------------------------------------
1 | package kratos.card.render
2 |
3 | class SearchStyle : Style() {
4 |
5 | var expand: Boolean = false
6 | }
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':kratos'
2 | include ':kratos-annotation'
3 | include ':kratos-compiler'
4 | include ':kratos-sample'
5 |
6 | rootProject.name = 'kratos-parent'
--------------------------------------------------------------------------------
/kratos-compiler/src/main/java/kratos/compiler/KBinding.java:
--------------------------------------------------------------------------------
1 | package kratos.compiler;
2 |
3 | /**
4 | * Created by merlin on 15/12/7.
5 | */
6 | public interface KBinding {
7 | }
8 |
--------------------------------------------------------------------------------
/kratos-sample/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Kratos-sample
3 | Jump to Card Sample Activity
4 |
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | /kratos/build
9 | /kratos-annotation/build
10 | /kratos-compiler/build
11 | /kratos-sample/build
12 | *.hprof
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/internal/KBinder.java:
--------------------------------------------------------------------------------
1 | package kratos.internal;
2 |
3 | /**
4 | * Created by merlin on 15/12/7.
5 | */
6 | public interface KBinder {
7 | void bind(T target, KFinder finder);
8 | }
9 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/entity/KData.kt:
--------------------------------------------------------------------------------
1 | package kratos.card.entity
2 |
3 | import kratos.card.render.Style
4 | import java.io.Serializable
5 |
6 | open class KData : Serializable {
7 | var style: Style? = null
8 | }
9 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/utils/OnCardRenderListener.kt:
--------------------------------------------------------------------------------
1 | package kratos.card.utils
2 |
3 | /**
4 | * Created by sanvi on 11/16/15.
5 | */
6 | interface OnCardRenderListener {
7 | open fun onRender(json: String): String
8 | }
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/utils/DelegateExt.kt:
--------------------------------------------------------------------------------
1 | package kratos.card.utils
2 |
3 | import kotlin.properties.ReadWriteProperty
4 |
5 | object DelegateExt {
6 | fun notNullCardRenderListener():
7 | ReadWriteProperty = NotNullCardRenderListener()
8 | }
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Oct 21 11:34:03 PDT 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
7 |
--------------------------------------------------------------------------------
/kratos-sample/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #ffffff
4 | #0086ff
5 | #444444
6 | #888888
7 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/event/FailEvent.java:
--------------------------------------------------------------------------------
1 | package kratos.card.event;
2 |
3 | public class FailEvent {
4 |
5 | public String code;
6 | public String message;
7 |
8 | public FailEvent(String code, String message) {
9 | this.code = code;
10 | this.message = message;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/event/ExceptionEvent.java:
--------------------------------------------------------------------------------
1 | package kratos.card.event;
2 |
3 | public class ExceptionEvent {
4 | public String message;
5 | public String code;
6 |
7 | public ExceptionEvent(String code, String message) {
8 | this.code = code;
9 | this.message = message;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/event/SuccessEvent.java:
--------------------------------------------------------------------------------
1 | package kratos.card.event;
2 |
3 | public class SuccessEvent {
4 |
5 | public String code;
6 | public String message;
7 |
8 | public SuccessEvent(String code, String message) {
9 | this.code = code;
10 | this.message = message;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/kratos-sample/src/main/java/me/ele/kratos_sample/entity/KText.java:
--------------------------------------------------------------------------------
1 | package me.ele.kratos_sample.entity;
2 |
3 | import kratos.card.entity.KData;
4 | import kratos.internal.KString;
5 |
6 | /**
7 | * Created by merlin on 15/12/17.
8 | */
9 | public class KText extends KData {
10 | public KString text1;
11 | public KString text2;
12 | }
13 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/utils/Skip.java:
--------------------------------------------------------------------------------
1 | package kratos.card.utils;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Retention(RetentionPolicy.RUNTIME)
9 | @Target(ElementType.FIELD)
10 | public @interface Skip {
11 | }
12 |
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/render/Menu.kt:
--------------------------------------------------------------------------------
1 | package kratos.card.render
2 |
3 | import java.io.Serializable
4 |
5 | open class Menu : Serializable {
6 | var type: String? = null
7 | var style: T? = null
8 | var id: Int = 0
9 | var hint: String? = null
10 |
11 | companion object {
12 | val SEARCH = "search"
13 | val TEXT = "text"
14 | }
15 | }
--------------------------------------------------------------------------------
/kratos/src/main/java/kratos/card/render/Header.kt:
--------------------------------------------------------------------------------
1 | package kratos.card.render
2 |
3 | import java.io.Serializable
4 |
5 | class Header : Serializable {
6 | var title: String? = null
7 | var arrow: Boolean = false
8 | var icon: String? = null
9 | var background: String? = null
10 | var bodyBackgroud: String? = null
11 | var menus: MutableList