Skip to content

Latest commit

 

History

History
1665 lines (1043 loc) · 88 KB

backup.md

File metadata and controls

1665 lines (1043 loc) · 88 KB

List of Android Libraries I browsed EveryDay.

Project status API library android

About android library I will Keep update everyday.The Image is upload to github's servers or markdown's servers not qiniu so If your are an Android developer from China,It is well known that The image loading will be very slow ,no hurry please just waiting.

Other lists

Tips

Contains the following content:

  • library
  • article/blog
  • website
  • tools
  • apps
  • news

Maintainers

xiaomeixw xiaomeixw

Index (quick look)


Day10


Time : October 31th,2015 / Author : xiaomeixw

library

1.UI:

  • GestureViews --- (From alexvasilkov) : ImageView and FrameLayout with gestures control and position animation. [手势控制图片查看].

  • MaskProgressView --- (From iammert) : Yet another android custom progress view for your music player. [音乐进读条].

  • MusicPlayerView --- (From iammert) : Android custom view and progress for music player,A good simple to learn custom view. [音乐播放旋转效果,是学习自定义View的非常好的范例].

  • InteractivePlayerView --- (From iammert) : Custom android music player view. [作者的又一个自定义音乐播放view].

  • PhotoPicker --- (From donglua) : A picture pick and view library like chinese what'app : wechat. [类似微信的图片选择、预览组件].

  • bubbles-for-android --- (From txusballesteros) : Bubbles for Android is an Android library to provide chat heads capabilities on your apps. With a fast way to integrate with your development. [桌面展示头像view].

2.Logic:

  • SharedPreferencesGenerator --- (From noties & Tag is Annotation ) : Android annotation based SharedPreferences Generator. [编译时注解,实现SharedPreferences].

      @SPGPreference
      class Simplest {
          String someString;
          long someLong;
          int someInt;
          boolean someBool;
      }
    
      @SPGPreference(imports = "com.example.SomeClass")
      public class MyPrefs {
          @SPGKey(defaultValue = "${SomeClass.getString()}")
          String someKey;
      }
    
  • dexposed --- (From alibaba & Tag is AOP) : dexposed enable 'god' mode for single android application, can hotfix app and Performance Monitoring,base on xposed. [Android平台免Root无侵入AOP框架,性能监控、在线热补丁].

      //application:initialization 
      public class MyApplication extends Application {
          @Override public void onCreate() {        
              // Check whether current device is supported (also initialize Dexposed framework if not yet)
              if (DexposedBridge.canDexposed(this)) {
                  // Use Dexposed to kick off AOP stuffs.
                  ...
              }
          }
          ...
      }
      
      //Basic usage
      DexposedBridge.findAndHookMethod(Activity.class, "onCreate", Bundle.class, new XC_MethodReplacement() {
    
          @Override protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
              // Re-writing the method logic outside the original method context is a bit tricky but still viable.
              ...
          }
    
      });
    

    Follow is support status.

    Runtime Android Version Support
    Dalvik 2.2 Not Test
    Dalvik 2.3 Yes
    Dalvik 3.0 No
    Dalvik 4.0-4.4 Yes
    ART 5.0 Testing
    ART 5.1 No
    ART M No
  • Paper --- (From pilgr & Tag is Caching) : Paper is a fast NoSQL data storage for Android that lets you save/restore Java objects by using efficient Kryo serialization and handling data structure changes automatically. [NoSQL型数据存取].

      //application:Initialize Paper
      Paper.init(context);
    
      //Save:
      Paper.book().write("city", "Lund"); // Primitive
      Paper.book().write("task-queue", queue); // LinkedList
      Paper.book().write("countries", countryCodeMap); // HashMap
    
      //Read
      String city = Paper.book().read("city");
      LinkedList queue = Paper.book().read("task-queue");
      HashMap countryCodeMap = Paper.book().read("countries");
    

    Running Benchmark on Nexus 4, in ms:

    Benchmark Paper Hawk sqlite
    Read/write 500 contacts 187 447
    Write 500 contacts 108 221
    Read 500 contacts 79 155

3.Architecture:

  • xUtils --- (From wyouflf A developer from China) : a lightweight Android Architecture with orm/bitmap/http/view inject. One Line can call API. [一个android框架,含有:Http/View/DB/Bitmap,一行代码调用].

      //DbUtils:
      DbUtils db = DbUtils.create(this);
      db.save(user);
    
      //ViewUtils:
      @ViewInject(R.id.textView)
      TextView textView;
    
      //HttpUtils:Get
      HttpUtils http = new HttpUtils();
      http.send(HttpRequest.HttpMethod.GET,
          "http://www.lidroid.com",
          new RequestCallBack<String>(){
              @Override
              public void onLoading(long total, long current, boolean isUploading) {
                  testTextView.setText(current + "/" + total);
              }
      
              @Override
              public void onSuccess(ResponseInfo<String> responseInfo) {
                  textView.setText(responseInfo.result);
              }
      
              @Override
              public void onStart() {
              }
      
              @Override
              public void onFailure(HttpException error, String msg) {
              }
      });
    
      //BitmapUtils:
      BitmapUtils bitmapUtils = new BitmapUtils(this);
      bitmapUtils.display(testImageView, "http://bbs.lidroid.com/static/image/common/logo.png");
    

article

  • FRAGMENTARGS --- (From Author sockeqwe blog http://hannesdorfmann.com) --- [Source in Github]

    Developing for Android is sometimes painful. You have to write lot of code to do simple things like setting up a Fragment. Fortunately java supports a powerful tool: Annotation Processors.

    The Problem with Fragments is that you have to set arguments (the parameters) for a fragment to make them work correctly. Many new android developers that write the first fragment do something like this:[Translation:FragmentArgs(让你的Fragment的代码更少)讲解].

    Chinese Translation Address : Thanks To KEVIN_CHEN

App-Demo

  • android-UniversalMusicPlayer --- (From googlesamples ) : This sample shows how to implement an audio media app that works across multiple form factors and provide a consistent user experience on Android phones, tablets, Auto, Wear and Cast devices. [一个google开源音乐播放器,适配不同的安卓系统环境,手机、手表和web端].

    Check the Source in Github.

Video

  • Animation to Guide Us All --- (From touchlab on Youtube) : Animation to Guide Us All - How animations can improve the User Experience of your application[2015 Droidcon NYC开发者大会,聚焦Android-material design动画表现形态的演讲视频].

website

  • www.youtube.com --- (Build By Steve Chen&Chad Hurley&Jawed Karim,February 14, 2005) :YouTube is a video-sharing website headquartered in San Bruno, California, United States. The service was created by three former PayPal employees in February 2005. In November 2006, it was bought by Google for US$1.65 billion. YouTube now operates as one of Google's subsidiaries. [全球最大视频分享网站].


Day9


Time : October 30th,2015 / Author : xiaomeixw

library

1.UI:

  • FlippableStackView --- (From blipinsk) : An Android library introducing a stack of Views with the first item being flippable. [显示view堆栈效果的库].

  • PhotoView --- (From chrisbanes) : Implementation of ImageView for Android that supports zooming, by various touch gestures. [图片手势控件、缩放,老牌优质控件].

  • PinchImageView --- (From boycy815) : An Android library introducing Picture gesture control like photoview supports zooming, can use with viewpager. [图片手势控制、缩放].

  • subsampling-scale-image-view --- (From davemorrissey) : Highly configurable, easily extendable view with pan and zoom gestures for displaying huge images without loss of detail. Perfect for photo galleries, maps, building plans etc. [缩放和显示大图(加载超1MB大图片)的Android类库].

2.Logic:

  • fragmentargs --- (From sockeqwe & Tag is Annotation) : Annotation Processor for setting arguments in android fragments. [编译时注解,用于activity和Fragment的参数传值].

      //Fragment:
      public class MyFragment extends Fragment {
    
          @Arg
          int id;	
          @Arg
          String title;
      
          @Override
          public void onCreate(Bundle savedInstanceState){
              super.onCreate(savedInstanceState);
              FragmentArgs.inject(this); // read @Arg fields
          }
      
          @Override
          public View onCreateView(LayoutInflater inflater, 
              ViewGroup container, Bundle savedInstanceState) {	
                  Toast.makeText(getActivity(), "Hello " + title, 
                      Toast.LENGTH_SHORT).show();		
                  return null;
            }		
      }
    
      //Activity:
      public class MyActivity extends Activity {
          public void onCreate(Bundle savedInstanceState){
              super.onCreate(savedInstanceState);	
              int id = 123;
              String title = "test";	
              // Using the generated Builder
              Fragment fragment = 
                  new MyFragmentBuilder(id, title)
                  .build();	
      
              // Fragment Transaction
              getFragmentManager()
                  .beginTransaction()
                  .replace(R.id.container, fragment)
                  .commit();		
          }	
      }
    

    Want to know more see Tomorrow's article.

  • auto --- (From google & Tag is APT) : A collection of source code generators for Java. [google出品的Java 源代码生成器集合].

    • AutoFactory - JSR-330-compatible factories.(兼容 JSR-330 的工厂)

    • AutoService - Provider-configuration files for ServiceLoader(ServiceLoader 的 Provider-configuration 文件)

    • AutoValue - Immutable value-type code generation for Java 1.6+.(Java 1.6+ 的不可变 value-type 代码生成)

    • Common - Helper utilities for writing annotation processors.(Helper 实用工具,用来编写注释处理器)

      E.g:AutoService will generate the file META-INF/services/javax.annotation.processing.Processor in the output classes folder.

      @AutoService(Processor.class) 
      public class FactoryProcessor extends AbstractProcessor {
      		...
      }	
      
  • GAlette --- (From uPhyca & Tag is Annotation) : Annotation-triggered tracking along with Google Analytics for Android. [编译时注解,结合Google Analytics追踪统计].

      //Application:
      public class MyApplication extends Application implements TrackerProvider {	
          private Tracker mTracker;		
          @Override
          public void onCreate() {
              super.onCreate();
              GoogleAnalytics ga = GoogleAnalytics.getInstance(this);
              mTracker = ga.newTracker(R.xml.your_tracker_resource);
          }	
          @Override
          public Tracker getByName(String trackerName) {
              return mTracker;
          }
      }
    
      //track appView:@SendScreenView
      public class MainActivity extends Activity {
          @Override
          @SendScreenView(screenName = "main")
          protected void onCreate(Bundle savedInstanceState) {
              ...
          }
      }	
    
      //track event:@SendEvent
      public class MainActivity extends Activity {
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              ...	
              findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                  @Override
                  @SendEvent(category = "button", action = "click")
                  public void onClick(View v) {
                      onButtonClicked();
                  }
              });
          }	
      }	
    

3.Architecture:

  • cube-sdk --- (From liaohuqiu A Developer from China) : A light package for Android development, it handles loading image and network request. [一套图片网络请求的框架].

    Want See more imformation check this website

    DEMO project has been moved to HERE.

  • android-flux-todo-app --- (From lgvalle) : Example of how to implement an Android TODO App using Facebook Flux Architecture. [在android上探索Flux架构].

    There are two key features to understand Flux:

    • The data flow is always unidirectional.

      An [unidirectional data flow][unidirectional] is the core of the Flux architecture and is what makes it so easy to learn. It also provides great advantages when testing the application as discussed below.

    • The application is divided into three main parts:

      • View: Application interface. It create actions in response to user interactions.
      • Dispatcher: Central hub through which pass all actions and whose responsibility is to make them arrive to every Store.
      • Store: Maintain the state for a particular application domain. They respond to actions according to current state, execute business logic and emit a change event when they are done. This event is used by the view to update its interface.

    This three parts communicate through Actions: Simple plain objects, identified by a type, containing the data related to that action.

    Want See more imformation check today's article.

article

  • flux-architecture --- (From Author lgvalle blog http://lgvalle.xyz/) --- [Source in Github]

    Finding a good architecture for Android applications is not easy. Google seems to not care much about it, so there is no official recommendation on patterns beyond Activities lifecycle management.

    But defining an architecture for your application is important. Like it or not, every application is going to have an architecture. So you'd better be the one defining it than let it just emerge. [Translation:探索Facebook的Web-Flux 架构在android上的尝试].

    Chinese Translation Address : Thanks To android-tech-frontier

    Introducing Flux Architecture:

    Stores:

    Network requests and asynchronous calls:

App-Demo

  • plaid --- (From nickbutcher Design news and inspiration) : Plaid is a showcase of material design that we hope you will keep installed. It pulls in news & inspiration from Designer News, Dribbble & Product Hunt. [带Material Design设计风格的App-Demo,从Designer News, Dribbble 以及 Product Hunt中获取内容].

    Check the Source in Github.Want to know more about the App-Demo see GooglePlay

website

  • http://www.8thlight.com --- :Every Friday at noon, 8th Light hosts a lunch and talk on various software topics. Talks are given by 8th Light craftsmen or the occasional guest speaker, and they can range from discussions to hands-on exercises. All talks are recorded and available online. [一个轻量级的Blog].


Day8


Time : October 29th,2015 / Author : xiaomeixw

library

1.UI:

  • FoldableLayout --- (From worldline) : An Android demo of a foldable layout implementation,The author say: This code is a demo and not a library. [一个折叠效果].

  • FoldableLayout --- (From alexvasilkov) : Android widgets to implement folding animation,It was wonderful library. [一个折叠效果,效果很棒].

  • Android-FoldingLayout --- (From elementsinteractive) : A layout to switch over its children using a page folding animation,LIKE Flipboard application. [一个折叠效果,类似Flipboard的翻页效果].

  • android-FlipView --- (From emilsjolander) : A small, easy to use android library for implementing flipping between views as seen in the popular Flipboard application,very smoothly. [一个折叠效果,类似Flipboard的翻页效果,很流畅,API比较丰富].

  • FlipViewPager.Draco --- (From Yalantis) : This project aims to provide a working page flip implementation for usage in ListView. [ListView联系人翻页效果].

  • android-flip --- (From openaphid) : A component for flip animation on Android, which is similar to the effect in Flipboard iPhone/Android. [一个类似Flipboard翻页效果].

2.Logic:

  • Favor --- (From soarcn & Tag is Caching) : A easy way to use android sharepreference. [使用注解简单操作sharepreference].

      //1 Define a interface.
      @AllFavor
      public interface Account {
          @Default("No Name")
          String getUserName();
          String setPassword(String password);
      }
    
      //2 The FavorAdatper class generates an implementation of the interface.
      account = new FavorAdapter.Builder(getContext()).build().create(Account.class);
      account.setPassword("Passw0rd");
      String username = account.getUserName();
    
  • AndroidChannel --- (From skyfe79 & Tag is AsyncTask) : AndroidChannel is helper library for thread communication between mainthread and workerthread. [异步调度,主线程和工作线程通信].

      channel = new AndroidChannel(new AndroidChannel.UiCallback() {
          @Override
          public boolean handleUiMessage(Message msg) {
      
              if(msg.what == PING) {
                  Log.d("TAG", "PING");
                  channel.toWorker().sendEmptyMessageDelayed(PONG, 1000);
              }
              return false;
          }
      }, new AndroidChannel.WorkerCallback() {
          @Override
          public boolean handleWorkerMessage(Message msg) {
      
              if(msg.what == PONG) {
                  Log.d("TAG", "PONG");
                  channel.toUI().sendEmptyMessageDelayed(PING, 1000);
              }
              return false;
          }
      });
      channel.toUI().sendEmptyMessage(PING);
    

3.Architecture:

  • Backeasy --- (From Pierry) : Android - DI, DDD, Specification Pattern, Repository Pattern, IoC. [探索JAVA成熟模式在Android上的分层架构].

    • Domain driven-design start
    • Domain entities
    • Contracts (Interfaces)
    • Repository Pattern
    • Specification Pattern
    • ActiveAndroid (Database)
    • Dependency Injection - IoC (RoboGuice)
    • View Injection & Threads (Android Annotations)
    • SOLID
  • droidparts --- (From yanchenko) : a carefully crafted Android framework:DI, ORM, JSON.... [封装一套可复用的Android框架].

    a carefully crafted Android framework that includes:

    • DI - injection of Views, Fragments, Services, etc.
    • ORM - efficient persistence utilizing Cursors & fluent API.
    • EventBus for posting event notifications.
    • Simple JSON (de)serialization capable of handling nested objects.
    • Improved AsyncTask & IntentService with Exceptions & result reporting support.
    • Logger that figures out tag itself & logs any object.
    • RESTClient for GETting, PUTting, POSTing, DELETing & InputStream-getting, also speaks JSON.
    • ImageFetcher to asynchronously attach images to ImageViews, with caching, cross-fade & transformation support.
    • Numerous Utils.

article

  • ANNOTATION PROCESSING 101 --- (From Author sockeqwe blog http://hannesdorfmann.com) --- [Source in Github]

    (Editor's note : A wonderful article to learn ANNOTATION PROCESSING in android. A lot of famous library is based on it like ParcelableGenerator、butterknife and androidannotaion).

    In this blog entry I would like to explain how to write an annotation processor. So here is my tutorial. First, I am going to explain to you what annotation processing is, what you can do with that powerful tool and finally what you cannot do with it. In a second step we will implement a simple annotation processor step by step.

    To clarify a very important thing from the very beginning: we are not talking about evaluating annotations by using reflections at runtime (run time = the time when the application runs). Annotation processing takes place at compile time (compile time = the time when the java compiler compiles your java source code).[Translation:Java注解处理器使用详解].

    Chinese Translation Address : Thanks To codeceo

    DroidconDE 2015: Hannes Dorfmann – Annotation Processing 101. Want to see the video , See Youtube. Want to see the Author's PDF in DroidconDE 2015.

website

  • http://droidcon.de/ --- (started in 2008 in Berlin) : Droidcon is the franchise name for a series of commercial conferences in Europe, focused on software development for Google's Android smartphone framework. The Droidcon conferences are the largest Android developer conferences held outside the USA. [欧洲最大的Android技术交流公开活动组织].


Day7


Time : October 28th,2015 / Author : xiaomeixw

library

1.UI:

  • FAImageView --- (From skyfe79) : FAImageView is a Frame Animation ImageView for Android. [自定义帧动画View].

  • CircleImageView --- (From hdodenhof) : A circular ImageView for Android. [圆形图片].

  • RoundedImageView --- (From vinc3m1) : A fast ImageView that supports rounded corners, ovals, and circles. [各种自定义形状图片].

  • android-crop --- (From jdamcd) : Android library project for cropping images. [裁剪图片].

  • cropper --- (From edmodo) : Android widget for cropping and rotating an image. [裁剪图片].

  • SimpleCropView --- (From IsseiAoki) : A simple image cropping library for Android. [裁剪图片].

  • CropImageView --- (From cesards) : Widget allows you crop from whatever side in an ImageView. Currently Android only supports centerCrop type of cropping. [各种不同的角度中间centerCrop截取图片].

  • Masaccio --- (From Subito-it) : An Android library providing a useful widget class which automatically detects the presence of faces in the source image and crop it accordingly so to achieve the best visual result. [自动识别图片中人脸并截取出来].

2.Logic:

  • android-priority-jobqueue --- (From path & Tag is AsyncTask) : A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability. [后台异步线程调度,Path出品,必属精品].

      // A job to send a tweet
      public class PostTweetJob extends Job {
          public static final int PRIORITY = 1;
          private String text;
          public PostTweetJob(String text) {
              // This job requires network connectivity,
              // and should be persisted in case the application exits before job is completed.
              super(new Params(PRIORITY).requireNetwork().persist());
          }
          @Override
          public void onAdded() {
              // Job has been saved to disk.
              // This is a good place to dispatch a UI event to indicate the job will eventually run.
              // In this example, it would be good to update the UI with the newly posted tweet.
          }
          @Override
          public void onRun() throws Throwable {
              // Job logic goes here. In this example, the network call to post to Twitter is done here.
              webservice.postTweet(text);
          }
          @Override
          protected boolean shouldReRunOnThrowable(Throwable throwable) {
              // An error occurred in onRun.
              // Return value determines whether this job should retry running (true) or abort (false).
          }
          @Override
          protected void onCancel() {
              // Job has exceeded retry attempts or shouldReRunOnThrowable() has returned false.
          }
      }
    

3.Architecture:

  • mv2m --- (From fabioCollini) : Android MVVM lightweight library based on Android Data Binding. [基于google的Android Data Binding基础的MVVM架构探索].

    Model:

    A Model class contains the data used to populate the user interface using Data Binding library. It's saved automatically in Actvity/Fragment state, for this reason it must implement Parcelable interface.

    View:

    The View is an Activity or a Fragment, the user interface is managed using Android Data Binding. You need to extend ViewModelActivity or ViewModelFragment class and implement createViewModel method returning a new ViewModel object.

    ViewModel:

    The ViewModel is a subclass of ViewModel class, it is automatically saved in a retained fragment to avoid the creation of a new object on every configuration change. The ViewModel is usually the object bound to the layout using the Data Binding framework. It manages the background tasks and all the business logic of the application.

App-Demo

  • GEM --- (From Substance-Project A Organization from United States) : A music player for Android, in stunning Material Design. [带Material Design设计风格的音乐App-Demo].

    Check the Source in Github.Want to know more about the App-Demo see http://substanceproject.net

  • StickerCamera --- (From Skykai521 A Developer from China) : This is an Android application with camera,picture cropping,collage sticking and tagging. [图片裁剪图片标签App-Demo].

    Check the Source in Github.

article

  • JOE'S GREAT ADAPTER HELL ESCAPE --- (From Author sockeqwe blog http://hannesdorfmann.com) --- [Source in Github]

    Favor composition over inheritance!

    Let me tell you a story about Joe Somebody an android developer at MyLittleZoo Inc. and how he walked through the hell while trying to create reusable RecyclerView Adapters with different view types and how he finally managed to implement reusable Adapters painlessly. [Translation:组合优于继承,逃离Adapter-Type的地狱].

      public class AdapterDelegatesManager<T> {
    
          SparseArrayCompat<AdapterDelegate<T>> delegates = new SparseArrayCompat();
          
          public AdapterDelegatesManager<T> addDelegate(@NonNull AdapterDelegate<T> delegate) {
              return addDelegate(delegate, false);
          }
      
      
          public AdapterDelegatesManager<T> addDelegate(@NonNull AdapterDelegate<T> delegate,boolean allowReplacingDelegate) {
              return this;
          }
      
      
          public AdapterDelegatesManager<T> removeDelegate(@NonNull AdapterDelegate<T> delegate) {
              return this;
          }
      
      
          public AdapterDelegatesManager<T> removeDelegate(int viewType) {
              delegates.remove(viewType);
              return this;
          }
      
      
          public int getItemViewType(@NonNull T items, int position) {
              for (int i = 0; i < delegatesCount; i++) {
                  AdapterDelegate<T> delegate = delegates.valueAt(i);
                  if (delegate.isForViewType(items, position)) {
                      return delegate.getItemViewType();
                  }
              }
              
          }
      
      
          @NonNull public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
              AdapterDelegate<T> delegate = delegates.get(viewType);
              RecyclerView.ViewHolder vh = delegate.onCreateViewHolder(parent);
              return vh;
          }
      
      
          public void onBindViewHolder(@NonNull T items, int position, @NonNull RecyclerView.ViewHolder viewHolder) {
              AdapterDelegate<T> delegate = delegates.get(viewHolder.getItemViewType());
              delegate.onBindViewHolder(items, position, viewHolder);
          }
      }
    

website

  • jsonschema2pojo --- (Build By joelittlejohn) :Generates Java types from JSON Schema (or example JSON) and annotates those types for data-binding with Jackson 1.x or 2.x, Gson, etc. [自动将json转成pojo对象,简化JavaBean对象书写].


Day6


Time : October 27th,2015 / Author : xiaomeixw

library

1.UI:

  • AVLoadingIndicatorView --- (From 81813780) : Nice loading animations for Android. [多个酷炫的loading动画].

  • android-slidingactivity --- (From klinker41) : Android library which allows you to swipe down from an activity to close it. [下拉关闭Activity].

  • pull-back-layout --- (From oxoooo) : Pull down to finish an Activity. [下拉关闭Activity].

  • SwipableLayout --- (From SerhatSurguvec) : Swipe up or down to close view or activity or anything. [下拉或上拉关闭界面].

  • SwipeBack --- (From sockeqwe) : SwipeBack for Android Activities to do pretty the same as the android "back-button" will do, but in a really intuitive way by using a swipe gesture. [下拉或上拉关闭界面].

  • SwipeBack --- (From liuguangqiang) : SwipeBack is an android library that can finish a activity by using gesture. [右滑关闭Activity].

  • SwipeBackLayout --- (From ikew0ng) : An Android library that help you to build app with swipe back gesture. [滑动关闭Activity].

  • ParallaxSwipeBack --- (From bushijie) : Swipe back to finish the activity with Parallax effect. [带视差滑动布局].

  • SwipeBackHelper --- (From Jude95) : Swipe back to finish the activity with Parallax effect. [带视差滑动布局].

2.Logic:

  • android-job --- (From evernote & Tag is AsyncTask) : Android library to handle jobs in the background,Evernote 's Library would never disappointed you. [后台执行Job的线程调度,Evernote出品,必属精品].

      public class MyActivity extends Activity {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
      
              Task myTask = new MyTask();
              int taskId = TaskExecutor.getInstance().execute(myTask, this);
          }
      
          @TaskResult
          public void onResult(Integer result) {
              // handle result, this method gets called on the UI thread and only if the activity is visible
          }
      }
      
      public class MyTask extends Task<Integer> {
      
          @Override
          protected Integer execute() {
              return 5;
          }
      }
    

3.Architecture:

  • libraryofalexandria --- (From rallat) : sample android project to show how to refactor legacy code. [Twitter工程师Trallat的MVP进化之旅].

article

  • Android Basic Project Architecture for MVP --- (From Author MuratCanBur blog http://muratcanbur.com/) --- [No Source]

    Nowadays, I read lots of articles about how to create a basic project structure for our Android applications. As far as I understand from them, the main approach is implementing MVP (Model View Presenter) pattern which is also important in the development of Android community.

    After I learned some useful things from other developers, blog posts and example projects, I decided to create a basic project structure approach so that I can implement it to our client applications for mobiwise. I have choosen MVP pattern for main app structure. Let’s start with it and try to understand. [Translation:探索android MVP架构].

    Chinese Translation Address : waitting for someone to translate it.

  • Custom view- Part 1 & Part 2 --- (From Author shem8 blog https://shem8.wordpress.com) --- [Source in Github]

    Until couple of months ago I’ve been a bit afraid writing custom views. I thought it’s too complicated and had a lot of overhead with handling all layouting and interactions, I felt there is not enough documentation out there, not mention the edge cases and performance. I had my default Android view component in my toolbox and thought that everything I needed can be composed from those.

    The last part is true for most cases. Most of Android apps can be built only with the basic layouts and views out there, so why do we still need to build custom views sometimes?

    Chinese Translation Address : waitting for someone to translate it.

website

  • https://dribbble.com --- (Build By Dan Cederholm and Rich Thornett ,2009) :Dribbble is an online community for showcasing user-made artwork. It functions as a self-promotion and networking platform for graphic design, web design, illustration, photography, and other creative areas. [设计喵群体聚集地].


Day5


Time : October 26th,2015 / Author : xiaomeixw

library

1.UI:

  • PagerSlidingTabStrip --- (From astuetz) : An interactive indicator to navigate between the different pages of a ViewPager. [ViewPage指示器].

  • PagerSlidingTabStrip --- (forked from astuetz/PagerSlidingTabStrip & Author jpardogo) : An interactive indicator to navigate between the different pages of a ViewPager but this library can change the tab's color.. [ViewPage指示器,能改变tab的颜色].

  • AndroidRubberIndicator --- (From LyndonChin) : A rubber indicator for ViewPager. [View滑动指示器].

  • rubber-loader --- (From greenfrvr) : Android indeterminate loader widget with rubber shape and color transitions. [loading时的橡胶动画效果].

  • hashtag-view --- (From greenfrvr) : Android fully customizable widget for representing data like hashtags collection and similiar. [自定义的标签View].

2.Logic:

  • quitnow-cache --- (From Fewlaps & Tag is Caching) : A memcached-like Java cache, focused on portability. [可限时销毁的cache].

      QNCache cache = new QNCacheBuilder().createQNCache();
      
      cache.set("key", "value", 60 * 1000); // It can store things for a minute,
      cache.set("key", "value", 60 * 60 * 1000); // for an hour,
      cache.set("key", "value", 0); // or forever.
      cache.set("key", "value"); // And also for the short version of forever.
      
      cache.get("key"); // It can get them again,
      cache.remove("key"); // and remove it if you want.
      
      cache.get("unExistingKey"); // If something doesn't exists, it returns null
      cache.get("tooOldKey"); // The same if a key is too old
      
      cache.set("AnInteger", new Integer(42)); // You can save all kind of Objects...
      cache.set("ACollection", new ArrayList()); // ...whatever you want
      
      cache.removeAll(); // You can also clean it,
      cache.size(); // and ask it how many elements it has
    
  • tray --- (From grandcentrix & Tag is Caching) : a SharedPreferences replacement for Android with multiprocess support. [对系统的SharedPreferences添加多进程支持].

    Tray is this mentioned explicit cross-process data management approach powered by a ContentProvider. Tray also provides an advanced API which makes it super easy to access and maintain your data with upgrade and migrate mechanisms. Welcome to SharedPreferences 2.0 aka Tray.

      // create a preference accessor. This is for global app preferences.
      final AppPreferences appPreferences = new AppPreferences(getContext()); // this Preference comes for free from the library
      // save a key value pair
      appPreferences.put("key", "lorem ipsum");
      
      // read the value for your key. the second parameter is a fallback (optional otherwise throws)
      final String value = appPreferences.getString("key", "default");
      Log.v(TAG, "value: " + value); // value: lorem ipsum
      
      // read a key that isn't saved. returns the default (or throws without default)
      final String defaultValue = appPreferences.getString("key2", "default");
      Log.v(TAG, "value: " + defaultValue); // value: default
    
  • Stanley --- (From iambmelt & Tag is Caching) : Convenient stashing of simple data formats on Android with SharedPreferences(A small library for study Annotation & Proxy). [使用注解&代理模式来操作SharedPreferences].

      //Define an interface		
      @Proxy(name = "Prefs", mode = Context.MODE_PRIVATE)
      public interface Person {
          @Accessor
          void setLastName(String name);
      }
    
      //Make an instance		
      Person elvis = new ProxyGenerator().create(context, Person.class);
    
      //And go!		
      elvis.setLastName("presley");
    
  • SharedSqlite --- (From Jhonnyc & Tag is Caching) : A Sqlite class library implementation of the android 'SharedPreferences' object. [一个用Sqlite构建的SharedPreferences类库].

      //To create a new instance simply call
      SharedSqlite.initialize(context);
    
      //Then you are free to add
      SharedSqlite.addValue(key, value);
      
      //Then get
      getStringValue(key, defaultValue)
      getIntValue(key, defaultValue)
      getLongValue(key, defaultValue)
      getDoubleValue(key, defaultValue)
      getFloatValue(key, defaultValue)
      getBooleanValue(key, defaultValue)
    
  • hawk --- (From orhanobut & Tag is Caching) : Secure Simple Key-Value Storage for Android & Support for RxJava. [安全简单的key-value存储].

      //Initialize the hawk
      Hawk.init(this)
          .setEncryptionMethod(HawkBuilder.EncryptionMethod.MEDIUM)
          .setStorage(HawkBuilder.newSqliteStorage(this))
          .setLogLevel(LogLevel.FULL)
          .build();
    
      //save
      Hawk.put(key, T); // Returns the result as boolean
    
      //get
      T result = Hawk.get(key);
    
  • Remember --- (From tumblr & Tag is Caching) : A preferences-backed key-value store. [tumblr出品的key-value存储,必属精品].

      //initialize Remember in  Application
      @Override
      public void onCreate() {
          super.onCreate();
          Remember.init(getApplicationContext(), "com.mysampleapp.whatever");
      }
    
      //Now you can freely use Remember from anywhere in your app:
      Remember.putString("some key", "some value");
      String value = Remember.getString("some key", "");
    
  • android-easy-cache --- (From vincentbrison & Tag is Caching) : This android library provide a cache with 2 layers, one in RAM in top of one disk. [两层缓存,一层是内存RAM一层是磁盘Disk].

      //A cache with default serializer in RAM and disk disable
      DualCache<AbstractVehicule> cache = new DualCacheBuilder<AbstractVehicule>(CACHE_NAME, TEST_APP_VERSION, AbstractVehicule.class)
      		.useDefaultSerializerInRam(RAM_MAX_SIZE)
                     .noDisk();
    
      //To put an object into your cache, simply call put
      DummyClass object = new DummyClass();
      object = cache.put("mykey", object);
    
      //To get an object from your cache, simply call get
      DummyClass object = null;
      object = cache.get("mykey");
    

3.Architecture:

  • picasso --- (From square) : A powerful image downloading and caching library for Android. [图片加载框架,square出品,必属精品].

There are some libraries let picasso become stronger:

  • picasso-transformations --- (From wasabeef) : An Android transformation library providing a variety of image transformations for Picasso. [给picasso添加各种图像效果].

  • picasso-transformations --- (From TannerPerrien) : A transformation library for Picasso. [给picasso添加各种图像效果].

  • PicassoPalette --- (From florent37) : Android Lollipop Palette is now easy to use with Picasso. [picasso&Android L的采色板Palette].

  • CatKit --- (From cesarferreira) : Android kit for cat placeholders. [结合picasso实现图片的占位].

article

website

  • https://tinypng.com : Advanced lossy compression for PNG images that preserves full alpha transparency. [在线PNG压缩神器].


Day4

library library

Weekend Special:A man who name is JakeWharton!

Time : October 25th,2015 / Author : xiaomeixw

###More To Know

Tagline:

Craft brewer of Java and Android bytecode at Square.

Work:

Square, Inc.
Android Engineer, 2012 - present

Champion International Moving, Ltd.
Java Developer, 2009 - 2012							---

Places:

Currently
San Francisco, CA

Previously
Pittsburgh, PA

Contributing to the Android community:

###Open Source

Library Describe Usage
NineOldAndroids [DEPRECATED] Android library for using the Honeycomb animation API on all versions of the platform back to 1.0!
butterknife View "injection" library for Android
kotterknife View "injection" library for Android WITH Kotter
ActionBarSherlock [DEPRECATED] Action bar implementation which uses the native action bar on Android 4.0+ and a custom implementation on pre-4.0 through a single API and theme
ViewPagerIndicator Paging indicator widgets compatible with the ViewPager from the Android Support Library and ActionBarSherlock
salvage Generic view recycler and ViewPager PagerAdapter implementation
ProcessPhoenix Process Phoenix facilitates restarting your application process
scalpel A surgical debugging tool to uncover the layers under your app
TronWallpaper An Android live wallpaper which races lightcycles around your icons against Master Control
SwipeToDismissNOA Backport of Roman Nurik's "Swipe-to-dismiss" sample code using NineOldAndroids to work on all API levels
timber A logger with a small, extensible API which provides utility on top of Android's normal Log class
hugo Annotation-triggered method call logging for your debug builds
DiskLruCache Java implementation of a Disk-based LRU cache which specifically targets Android compatibility
u2020 A sample Android app which showcases advanced usage of Dagger among other open source libraries

###At Last

More public contribution to Android see Square


Day3


Time : October 24th,2015 / Author : xiaomeixw

library

1.UI:

  • TextSurface --- (From elevenetc) : A little animation framework which could help you to show message in a nice looking way. [让TextView动画飞起来].

  • DraggableView --- (From elevenetc) : Draggable views with rotation and skew/scale effects. [带动画效果拖拽View条目].

  • BadgeView --- (From elevenetc) : Badge view with animated effect which shows a bitmap or a text. [带动画效果的在徽章中显示图片或者文字].

  • BGABadgeView-Android --- (From bingoogolapple) : Android badge view copy from the china "twitter" : sina weibo. [模仿新浪微博的Android徽章控件].

  • android-viewbadger --- (From jgilfelt) : A simple way to "badge" any given Android view at runtime without having to cater for it in layout. [徽章View].

  • BadgeView --- (From stefanjauker) : An extended TextView that mimics the iOS Springboard 'badges'. It can be overlaid on any other item. [徽章View].

2.Logic:

  • AsyncManager --- (From boxme & Tag is AsyncTask) : Android Multithreading Library For Easy Asynchronous Management. [后台异步线程].

      // A BackgroundTask object will be returned from this method. Reference it if require.
      AsyncManager.runBackgroundTask(new TaskRunnable<Params, Result, Void>() {
          @Override
          public Result doLongOperation(Params params) throws InterruptedException {
              // checkForThreadInterruption();
              // Your long operation
              return result;
          }
      
          // Override this callback if you need to handle the result on the UI thread
          @Override
          public void callback(Result result) {
              // Handle the result from doLongOperation()
          }
      }.setParams(params));	
    

3.Architecture:

  • MvpCleanArchitecture --- (From glomadrian) : A sample project using Clean architecture and MVP in Android. [探索MVP架构].

  • androidmvp --- (From antoniolg) : MVP Android Example used to explain how to use this pattern in our Android apps. [MVP架构的一个Simple范例].

  • UpcomingMoviesMVP --- (From jlmd) : Sample project of MVP and Material Design using as repository a list of upcoming movies. [MVP架构 & Material Design的一个电影Simple范例].

  • FastAndroid --- (From huntermr) : A Rapid development framework With MVP & some famous libraries . [融入了MVP模式,集成了多个开源项目后,进行整合形成的Android快速开发框架].

article

website

  • https://medium.com/android-news --- (Build By Evan Williams,2012) : Medium is a blog-publishing platform.The platform has evolved into a hybrid of non-professional contributions and professional, paid contributions. [基于主题的协作型媒体Blog文章消费写作平台].


Day2


Time : October 23th,2015 / Author : xiaomeixw

library

1.UI:

  • FlowingDrawer --- (From mxn21) : swipe right to display drawer with flowing effects[贝塞尔曲线弹性抽屉菜单].

  • SlidingCard --- (From mxn21) : Sliding cards with pretty gallery effects [手指滑动图片效果].

  • Android-ScalableVideoView --- (From yqritc) : Android Texture VideoView having a variety of scale types like the scale types of ImageView. [像Imageview一样展示视频动画,extends TextureView].

  • RecyclerView-FlexibleDivider --- (From yqritc) : Android library providing simple way to control divider items of RecyclerView. [给RecyclerView添加分格线].

  • RecyclerView-MultipleViewTypesAdapter --- (From yqritc) : RecyclerView adapter classes for managing multiple view types. [RecyclerView多类型布局].

  • debugoverlay --- (From sockeqwe) : A tiny window overlay to log app internal on top of your android app. [做一个透明层让log显示在上面].

2.Logic:

  • android-asyncservice --- (From JoanZapata & Tag is AsyncTask) : AsyncService uses annotations to shorten the code needed to start asynchronous long running tasks and return result. [使用注解@AsyncService & @OnMessage来完成异步请求].

      @AsyncService
      public class DemoService {
    
      	public User getUser(String name) {
      		// Runs asynchronously.
      		return …;
      	}
    
      }
      ... then use it.
      … {
      	service.getUser("joan");
      }
    
      @OnMessage void onUser(User e) {
      	// Runs on UI thread.
      }
    

3.Architecture:

  • mosby --- (From sockeqwe) : A Model-View-Presenter library for modern Android apps. [一个Android的MVP架构].

    (more information want to know please see today's Article)

article

  • Model-View-Presenter --- (From Author sockeqwe blog http://hannesdorfmann.com) --- [Source in Github]

    The name of this library, Mosby, has been chosen in honor of Ted Mosby, the architect of the famous tv series How I Met Your Mother. The aim of this library is to help you build modern android apps with a clean Model-View-Presenter architecture. Furthermore, Mosby helps you to handle screen orientation changes by introducing ViewState and retaining Presenters. [Translation:MVP框架 – Ted Mosby的软件架构].

    Chinese Translation Address : Thanks To android-tech-frontier

    This page describes the principle of Model-View-Presenter (MVP) and how to use Mosby to create MVP based applications.

    • The model is the data that will be displayed in the view (user interface).
    • The view is an interface that displays data (the model) and routes user commands (events) to the Presenter to act upon that data. The view usually has a reference to its Presenter.
    • The Presenter is the “middle-man” (played by the controller in MVC) and has references to both, view and model. Please note that the word “Model” is misleading. It should rather be business logic that retrieves or manipulates a Model. For instance: If you have a database storing User in a database table and your View wants to display a list of users, then the Presenter would have a reference to your database business logic (like a DAO) from where the Presenter will query a list of Users.

website


Day1


Time : October 22th,2015 / Author : xiaomeixw

library

1.UI:

2.Logic:

  • smash --- (From appformation & Tag is Networking) : Smash is Volley inspired networking library that's using OkHttp in its core [结合OkHttp的类Volley网络请求library].

  • ThinDownloadManager --- (From smanikandan14 & Tag is Networking) : Thin DownloadManager is an android library primary to download files and to avoid using DOWNLOAD_WITHOUT_NOTIFICATION permission when using Android provided DownloadManager in your application. [一个类volley架构思想的下载框架,无需 DownloadManager permission].

3.Architecture:

  • Base --- (From thiagokimo) : Base is a lightweight library that gives you a clean architecture foundation for your Android MVP's [探索MVP架构].

  • rx-android-architecture --- (From tehmou) : An example project of an Android architecture built on RxJava [基于RxJava架构的Simple].

  • EffectiveAndroid --- (From rallat) :This sample project shows how to apply MVP and Clean architecture on an Android app [Twitter工程师rallat的MVP进化之旅].

article

  • When the Avengers meet Dagger2, RxJava and Retrofit in a clean way --- (From Author saulmm blog http://saulmm.github.io) --- [Source in Github]

    Today, if you are an Android developer and don't recognize the words Dagger 2, RxJava or Retrofit, you are missing something, this series will put some focus on giving the basic ideas of how to use these frameworks together with a Clean Architecture perspective. [Translation:当复仇者联盟遇上Dagger2、RxJava和Retrofit的巧妙结合].

    Chinese Translation Address : Thanks To android-tech-frontier

    When Avengers meet Dagger2, RxJava & Retrofit in a clean way

    This is the blog's source code of a series focused on giving some basic ideas about how to use Retrofit, Dagger2 & RxJava together with a Clean Architecture.

    In this first part it explains how Dagger 2 can help the decoupling of the layers in a project, removing dependencies so that it is easily scalable and testable.

    This part focuses on the understanding of what are the Reactive Extensions, its Java implementation, and use RxJava operators, all it integrated with a clean architecture

  • Introduce RxJava To Android developer --- (From Author rengwuxian blog http://gank.io/) --- [No Source & Translation: 给 Android 开发者的 RxJava 详解]

    我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么?.

    English translation Address : Have No One translated it At the moment (If You are interested In this article,please translate it to English).

website

  • http://gank.io/ --- (Build By daimajia) :To start a serious writing For Android developer [重新开始一次认真的写作].