MCPcopy Index your code
hub / github.com/pedrovgs/EffectiveAndroidUI

github.com/pedrovgs/EffectiveAndroidUI @main sqlite

repository ↗ · DeepWiki ↗
390 symbols 788 edges 54 files 97 documented · 25%
README

Effective Android UI Android Arsenal

🔝 Top sponsors 🔝

EmergeLogo

Sample project created to reinforce some of the main concepts described in the tech talk "Effective Android UI".

In this repository you are going to find some interesting samples like:

  • MVP and MVVM (without data binding engine) samples.
  • How to use fragments.
  • How to use Dagger to implement dependency injection.
  • Use resource qualifiers to change the layout used in different screen sizes.
  • Use resource qualifiers to change the layout used in different screen densities.
  • Use resource qualifiers to change the layout in different Android version.
  • How to use styles and themes.
  • How to communicate fragments in the same activity.
  • Butterknife library usage to avoid UI duplicated code.
  • Uniform naming for Android resources.
  • How to use Navigator or ActionCommands to implement the navigation inside the application.
  • Use resource custom qualifiers to split resource files by domain.
  • Different layout usage: RelativeLayout, LinearLayout, FrameLayout.
  • Usage of merge, include and view stub.
  • Correct ListView implementation with view recycle using Renderers.
  • Interactor implementation described in the talk "Software Design Patterns on Android".
  • Usage of Dagger to implement two different scopes: Application scope and Activity scope.

Implementation description

EffectiveAndroid UI Video - Spanish

EffectiveAndroid UI Slides - English

Screenshots

Demo Screenshot 1 Demo Screenshot 2 Demo Screenshot 3

Libraries used on the sample project

Developed By

Follow me on X Add me to Linkedin

License

Copyright 2014 Pedro Vicente Gómez Sánchez

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Extension points exported contracts — how you extend this code

Executor (Interface)
Executor implementation can be based on different frameworks or techniques of asynchronous execution, but every implemen [6 …
app/src/main/java/com/github/pedrovgs/effectiveandroidui/executor/Executor.java
Interactor (Interface)
Common interface to every Interactor declared in the application. This interface represents a execution unit for differe [7 …
app/src/main/java/com/github/pedrovgs/effectiveandroidui/executor/Interactor.java
GetTvShows (Interface)
Returns every available TvShow in the system. This interactor will not the result is the execution finish with a onConn [4 …
app/src/main/java/com/github/pedrovgs/effectiveandroidui/domain/GetTvShows.java
GetTvShowById (Interface)
Get a TvShow given a TvShow identifier. Return the result using a Callback. This interactor can execute onTvShowNotFoun [4 …
app/src/main/java/com/github/pedrovgs/effectiveandroidui/domain/GetTvShowById.java
ActionCommand (Interface)
Interface created to represent ActionCommands associated to MVVM implementation. View models returns ActionCommands to p [4 …
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/viewmodel/action/ActionCommand.java

Core symbols most depended-on inside this repo

addEpisode
called by 253
app/src/main/java/com/github/pedrovgs/effectiveandroidui/domain/tvshow/TvShow.java
add
called by 21
app/src/main/java/com/github/pedrovgs/effectiveandroidui/domain/tvshow/ChapterCollection.java
getTitle
called by 10
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/viewmodel/ChapterViewModel.java
post
called by 8
app/src/main/java/com/github/pedrovgs/effectiveandroidui/executor/MainThread.java
add
called by 7
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/renderer/tvshow/TvShowCollection.java
inject
called by 7
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/activity/BaseActivity.java
isReady
called by 6
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/presenter/TvShowCatalogPresenter.java
hideLoading
called by 5
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/presenter/TvShowCatalogPresenter.java

Shape

Method 330
Class 48
Interface 12

Languages

Java100%

Modules by API surface

app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/presenter/TvShowCatalogPresenter.java27 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/presenter/TvShowPresenter.java26 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/viewmodel/TvShowViewModel.java24 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/fragment/TvShowDraggableFragment.java24 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/fragment/TvShowCatalogFragment.java20 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/fragment/TvShowFragment.java18 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/renderer/chapterviewmodel/ChapterViewModelRenderer.java13 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/viewmodel/ChapterViewModel.java11 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/renderer/tvshow/TvShowRenderer.java11 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/domain/GetTvShowByIdInteractor.java11 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/renderer/tvshow/TvShowCollection.java10 symbols
app/src/main/java/com/github/pedrovgs/effectiveandroidui/ui/renderer/chapter/ChapterRenderer.java10 symbols

For agents

$ claude mcp add EffectiveAndroidUI \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact