some android libraries to speed up development.

Related tags

App emo
Overview

logo

emo - speed up android development

This repository contains series of libraries for android developers:

  • ui-core: Contain some basic components such as TopBar, Loading, ... and some util methods.
  • photo: To view/pick/clip pictures with Jetpack Compose.
  • modal: A new way to implement Dialog,Toast, BottomSheet, ... with Jetpack Compose.
  • more libraries are on the way.

design principles

  • Support API Level 24+.
  • Based on JDK 11.
  • All in Jetpack Compose.
  • Use coroutines for concurrency and data flow.

compose versions

Compose UI 1.2.x ui-core 0.0.1 | photo 0.0.2 | modal 0.0.1

Download

// ui-core
implementation("cn.qhplus.emo:ui-core:0.0.1")
// photo
implementation("cn.qhplus.emo:photo-coil:0.0.2")
// modal
implementation("cn.qhplus.emo:modal:0.0.1")

Demo apk

Download apk or scan the qrcode below(pay attention to the wall):

apk

==========================================================================

关注我的公众号,获取 emo 相关的技术解析:

公众号

给个赞赏,以资鼓励:

赞赏码

You might also like...
Proguard configurations for common Android libraries

android-proguard-snippets Example Proguard configurations for common Android libraries. This project assumes that your ProGuard configuration is based

One UI libraries for Android apps.
One UI libraries for Android apps.

⚠️ W.I.P. For Wear OS, please look at seslw. This repo contains a collection of the libraries used by Samsung in their One UI apps. Samsung's One UI a

Movie application created with TMDB API, Architecture Components, Android Jetpack libraries

MovieApp Movie application created with TMDB API, Architecture Components, Android Jetpack libraries Built With 🛠️ • Kotlin - The language used in th

The application is developed using Modern tools/libraries with UI implementations with Navigation architecture
The application is developed using Modern tools/libraries with UI implementations with Navigation architecture

This is mobile application which actual users will interact with. The application is developed using Modern tools/libraries with UI implementations with Navigation architecture. It connects with the Dog API to retrieve data. more detail of api can be found here - https://dog.ceo/dog-api/documentation/random This project a basic example of Retrofit and mvvm

It is a NBAApp developed by Kotlin. It uses MVVM design pattern, Coroutines, Retrofit and JetPack libraries like Room, Lifecycle, ViewBinding, DataBinding, Hilt and Navigation.
It is a NBAApp developed by Kotlin. It uses MVVM design pattern, Coroutines, Retrofit and JetPack libraries like Room, Lifecycle, ViewBinding, DataBinding, Hilt and Navigation.

NbaApp It is a NBAApp developed by Kotlin. It uses MVVM design pattern, Coroutines, Retrofit and JetPack libraries like Room, Lifecycle, ViewBinding,

An app to view libraries used in apps in your device.
An app to view libraries used in apps in your device.

An app to view libraries used in apps in your device.

WatchFaceAlphaKotlin - Demonstrates watch faces using the new androidX alpha libraries (Kotlin)

Alpha WatchFace Sample (Kotlin) Demonstrates watch faces using the new androidX

Native-loader - Safely load native libraries in Java

Native Loader 📦️ Safe native loading in Java based off of the native-loader use

Project allowing to query products (languages, libraries, databases, etc) by their properties.

Products app This project allow to search products (mostly software products for now such as languages, libraries etc) based on their properties. For

Comments
  • [Bug] 多次设置PageContent

    [Bug] 多次设置PageContent

    file: /cn/qhplus/emo/photo/activity/PhotoPickerActivity.kt:187

    setContent {
        PageContentWithConfigProvider(viewModel)
        PageContent(viewModel) //这里重复了 
    }
    

    在这里重复用了两个PageContent(因为PageContentWithConfig里已经设置了PageContent),所以二者其实重叠了。

    @Composable
        protected open fun PageContentWithConfigProvider(viewModel: PhotoPickerViewModel) {
            DefaultPhotoPickerConfigProvider {
                PageContent(viewModel = viewModel) // 这里已经设置过了
            }
        }
    
    opened by FunnySaltyFish 1
  • 【Bug】图片裁剪器导致应用崩溃

    【Bug】图片裁剪器导致应用崩溃

    EMO 的 图片选择器和图片裁剪器被我用在了真实项目中,前段时间收到了崩溃报告,显示崩溃如下:

    OS Version:12_31 Vendor: Xiaomi Model: Mi 10 Exception: x must be >= 0 android.graphics.Bitmap.checkXYSign(Bitmap.java:441) android.graphics.Bitmap.createBitmap(Bitmap.java:871) cn.qhplus.emo.photo.ui.clipper.ClipperKt$PhotoClipper$2.invoke(Clipper.kt:74) cn.qhplus.emo.photo.ui.clipper.ClipperKt$PhotoClipper$2.invoke(Clipper.kt:71) cn.qhplus.emo.photo.ui.clipper.ClipperKt$PhotoClipper$3$doClip$1$func$1.invoke(Clipper.kt:114) cn.qhplus.emo.photo.ui.clipper.ClipperKt$PhotoClipper$3$doClip$1$func$1.invoke(Clipper.kt:103) cn.qhplus.emo.photo.activity.PhotoClipperActivity$PageContent$1$1$1$3$1.invoke(PhotoClipperActivity.kt:180) cn.qhplus.emo.photo.activity.PhotoClipperActivity$PageContent$1$1$1$3$1.invoke(PhotoClipperActivity.kt:179) cn.qhplus.emo.ui.core.modifier.ThrottleHandler.process(Click.kt:155) cn.qhplus.emo.ui.core.modifier.ClickKt$throttleClick$2$1.invoke(Click.kt:55) cn.qhplus.emo.ui.core.modifier.ClickKt$throttleClick$2$1.invoke(Click.kt:51) androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$1$2.invoke-k-4lQ0M(Clickable.kt:167) androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$1$2.invoke(Clickable.kt:156) androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1$1.invokeSuspend(TapGestureDetector.kt:234) kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178) kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166) kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397) kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431) kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420) kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328) androidx.compose.ui.input.pointer.SuspendingPointerInputFilter$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:566) androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.dispatchPointerEvent(SuspendingPointerInputFilter.kt:456) androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:469) androidx.compose.ui.node.BackwardsCompatNode.onPointerEvent-H0pRuoY(BackwardsCompatNode.kt:394) androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:314) androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301) androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:183) androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:102) androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:98) androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1329) androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1275) androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1214) android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3131) android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2812) android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3131) android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2812) android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3131) android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2812) android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3131) android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2812) com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:573) com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1895) android.app.Activity.dispatchTouchEvent(Activity.java:4320) com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:531) android.view.View.dispatchPointerEvent(View.java:15135) android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6685) android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6473) android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5914) android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5971) android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5937) android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6102) android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5945) android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6159) android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5918) android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5971) android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5937) android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5945) android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5918) android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8946) android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8897) android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:8865) android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9079) android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:281) android.os.MessageQueue.nativePollOnce(Native Method) android.os.MessageQueue.next(MessageQueue.java:340) android.os.Looper.loopOnce(Looper.java:168) android.os.Looper.loop(Looper.java:299) android.app.ActivityThread.main(ActivityThread.java:8293) java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)

    相关代码:此处

    联系到对应的用户,给出操作截图如下:

    https://user-images.githubusercontent.com/46063434/208941461-0cc68d4a-6240-4876-8d02-d70a06c4e228.mp4

    emo 版本为 0.1.0 ,查看 commit 发现之后版本并没有相关更改,故提交此 issue

    opened by FunnySaltyFish 0
Releases(v0.3.0)
Owner
cgspine
Android 开发
cgspine
This repo provides a sample application that demonstrates how you can speed up the authentication experience for frontline workers on shared devices using QR codes.

Project This repo has been populated by an initial template to help get you started. Please make sure to update the content to build a great experienc

Microsoft 5 Dec 7, 2022
Don't know what to do next? Don't worry, NEG or NotEnoughGoals will give you some help by giving you some goals to achieve to make skyblock less boring.

NotEnoughGoals Don't know what to do next? Don't worry, NEG or NotEnoughGoals will give you some help by giving you some goals to achieve to make skyb

UpFault 0 Dec 26, 2021
Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it

Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it

Victor 3 Aug 18, 2022
A sample app illustrating Android development using Kotlin with MVVM architecture, Android Jetpack, and other commonly used libraries.

Anime Facts A sample app illustrating Android development using Kotlin with MVVM architecture, Android Jetpack, and other commonly used libraries. Ani

Eugene Javiñas 0 Dec 5, 2021
A simple Android project using modern Android development tools and libraries.

A simple Android project using modern Android development tools and libraries.

Ahmed Sumeiry 0 Feb 3, 2022
The Rick And Morty - MVVM with a clean architecture approach using some of the best practices in Android Development.

Rick-and-Morty The Rick And Morty - App consuming a Rick and Morty API to display Characters it has been built with clean architecture principles, Rep

Akhilesh Patil 61 Jan 7, 2023
Android playground project with modularization by feature (android libraries), unit tests, MVVM & MVI.

Movies Movies is a simple project to study and play with some android components, architecture and tools for Android development. Tech Stack This proj

Christopher Elias 333 Dec 30, 2022
🌄 Photo editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

React Native Photo Editor (RNPE) ?? Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and Ph

Baron Ha. 242 Dec 28, 2022
An android application which shows usage of various jetpack libraries built by the android team

JetPacker JetPacker is an android application which implements various jetpack libraries created by the android team. FEATURES - (Will be updated as m

Ibrahim 14 Dec 9, 2022
A sample Android app which showcases advanced usage of Dagger among other open source libraries.

U+2020 A sample Android app which showcases advanced usage of Dagger among other open source libraries. Watch the corresponding talk or view the slide

Jake Wharton 5.7k Dec 27, 2022