{"id":21602182,"url":"https://github.com/tanpuer/skiaui2","last_synced_at":"2025-07-28T19:08:30.375Z","repository":{"id":222752487,"uuid":"752601536","full_name":"tanpuer/SkiaUI2","owner":"tanpuer","description":"Android UI based on Skia and Yoga","archived":false,"fork":false,"pushed_at":"2025-07-24T16:29:32.000Z","size":180666,"stargazers_count":19,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-24T20:31:40.609Z","etag":null,"topics":["android","compose","javascript","skia","ui"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tanpuer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-02-04T10:29:32.000Z","updated_at":"2025-07-24T16:29:36.000Z","dependencies_parsed_at":"2024-09-16T10:06:26.817Z","dependency_job_id":"2bfa2ca0-c5fa-4223-aa42-2b1841648f26","html_url":"https://github.com/tanpuer/SkiaUI2","commit_stats":null,"previous_names":["tanpuer/skiaui2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tanpuer/SkiaUI2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanpuer%2FSkiaUI2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanpuer%2FSkiaUI2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanpuer%2FSkiaUI2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanpuer%2FSkiaUI2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tanpuer","download_url":"https://codeload.github.com/tanpuer/SkiaUI2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanpuer%2FSkiaUI2/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267569639,"owners_count":24109114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","compose","javascript","skia","ui"],"created_at":"2024-11-24T19:12:21.910Z","updated_at":"2025-07-28T19:08:25.352Z","avatar_url":"https://github.com/tanpuer.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SkiaUI\n\nUsing Skia, Yoga, SurfaceView/TextureView to build a simple Flexbox-UI framework for Android.\n\nsteps：\n\n1. Compile skia https://skia.org/docs/user/build/ ，or **unzip arm64-v8a.zip and x86-64.zip files in jniLibs.**\n2. Using Skia GL context.\n3. Two threads: ui-thread \u0026 render-thread.\n4. Only support FlexboxLayout. Measure/Layout/Draw are triggered by Vsync.\n5. TouchEvents: dispatchTouchEvent/interceptTouchEvent/onTouchEvent.\n6. Animations support scale/rotate/translate，and will be performed before measure.  \n   support easing functions: https://easings.net/en\n7. Dirty-Render: markDirty if next draw is necessary.\n8. **Supported Widgets**:   \n   View, ImageView, TextView, Icon, ProgressBar, SVGView, ShaderView, Lottie, VideoView,\n   YUVVideoView, ScrollView, MovingArea, RecyclerView, Swiper, Loading, Switch, Radio, Picker,\n   LyricView, InputView, FlexboxLayout, Page...\n9. **PlatformView**:  \n   render Android-Views such as WebView/EditText by SurfaceTexture/SkImage, just like Flutter.  \n   render 3D View by Filament(other engines can also supported)/SurfaceTexture/SkImage.  \n   render Video(ExoPlayer)/Camera by SurfaceTexture/SkImage.  \n   ...\n10. **Development**:   \n    |  |  |  |\n    |--------|--------------------------------------|-------------------------------------------------------------------------|\n    | C++    | ``                                   | See ExamplePage.cpp.\n    | js     | `Import v8 to evaluate javascript`   | See test.js in assets. Support **debug in chrome**.  \n    | Kotlin | `Import kotlin`\u003cbr\u003e`Compose-runtime` | Support **Live-Edit**, save code then ui will refresh. See HYComposeExamplePage.kt in java. |                    |\n    | React  | `Import react/react-reconciler`      | demo: https://github.com/tanpuer/skia-ui-react |\n    | Vue    | `Import @vue/runtime-core`           | demo: https://github.com/tanpuer/skia-ui-vue. Need import CSS-Selector(TODO). |\n11. **Cross Platform**  \n    ios: https://github.com/tanpuer/HYSkiaUI-iOS  \n12. Performance Problems:  \n    Skia: Shader Compilation jank, cache kSKSL  \n\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example1.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example2.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example3.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example4.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example5.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example6.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example7.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example8.png)\n![image](https://github.com/tanpuer/SkiaUI2/blob/main/app/example9.gif)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanpuer%2Fskiaui2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftanpuer%2Fskiaui2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanpuer%2Fskiaui2/lists"}