1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/marshalchen-UltimateAndroid

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
demo_of_ui.md 33 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 23.04.2025 12:07 860371e

Версия:0.7.2

Обратите внимание, что этот документ предназначен для версии 0.7.2 библиотеки UltimateAndroid

Обновление интерфейса для Material Design! Поддерживает Android Studio 1.0
Вы можете посмотреть javadoc здесь
В библиотеке есть отличный recyclerview, который включает в себя обновление при прокрутке, загрузку дополнительных данных, удаление элементов при свайпе, перетаскивание, анимации, показ или скрытие toolbar и floating action button при прокрутке, а также множество других функций. Вы можете попробовать его здесь UltimateRecyclerView.

Английское введение

Китайское введение

Introduction


UltimateAndroid is a fast framework for developing applications. The UltimateAndroid framework includes a variety of features such as view injection, ORM, asynchronous networking and image loading, usage scenario testing, over 100 UI effects, and much more. It also includes useful features such as WebViewUtils, DaoUtils, Https Utils, CryptographyUtils, FileUploadUtils, and others. The framework will be expanded with new features in the future.##### Фреймворк похож на Flask (фреймворк для веб-разработки), который включает в себя несколько других открытых проектов, таких как [Butter Knife][1], [Asynchronous Http Client for Android][2], [Universal Image Loader for Android][3] и многие другие, которые упомянуты в конце README или в разделе обновлений.На данный момент я написал демонстрационные примеры для большинства модулей пользовательского интерфейса и внедрения представлений. Демонстрационные примеры могут быть скучными, но вы можете увидеть множество различных модулей пользовательского интерфейса. Скриншоты демонстрационного примера пользовательского интерфейса приведены ниже, и вы можете скачать apk напрямую.

Скриншоты демонстрационного примера пользовательского интерфейса здесь.

Нововведения для версии 0.7.0:

Проект UltimateAndroidUi теперь состоит из четырёх отдельных проектов пользовательского интерфейса: widget, component, animations и lollipop. Если вы хотите использовать только часть проекта пользовательского интерфейса, вы можете использовать отдельные проекты. Однако, если вы хотите использовать всё, вы также можете использовать проект UltimateAndroidUi.

Журнал обновлений

Руководство по демонстрационным примерам

Быстрое настройки (Основное использование)

Рекомендуемый способ с использованием Gradle:

Основной фреймворк:

repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroid:0.7.2'
}

Ui framework:

repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroidui:0.7.2'
}

Отдельные Ui фреймворки:```groovy repositories { jcenter() } dependencies { ... compile 'com.marshalchen.ultimateandroid:ultimateandroiduiwidget:0.7.2' }


```groovy
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroiduicomponent:0.7.2'
}
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroiduianimation:0.7.2'
}
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroiduilollipop:0.7.2'
}

Проект UltimateAndroidUi теперь состоит из четырёх отдельных Ui проектов: widget, component, animation и lollipop. Если вы хотите использовать только часть Ui проекта, вы можете использовать отдельные проекты. Однако, если вы хотите использовать все их, вы также можете использовать проект UltimateAndroidUi (вы можете использовать четыре отдельных проекта вместе).

Обычный способ:

Если вы хотите использовать фреймворк и редактировать его одновременно, вы можете использовать Import Project (необходимо использовать версию Android Studio выше 1.0) и выбрать папку UltimateAndroidGradle.

Если вы хотите использовать UltimateAndroid без UIModules, вы можете просто зависеть от UltimateAndroid, что сделает приложение более гибким. Если вы используете обычный способ в Eclipse, вы можете импортировать папку UltimateAndroidNormal и обратить внимание на то, что UltimateAndroid зависит от appcompat, UltimateAndroidUi зависит от UltimateAndroid, а DemoOfUi зависит от UltimateAndroidUi (Обратите внимание, что проект UltimateAndroidNormal был отозван).2. Как функция View Injection, использующая ButterKnife, вам нужно настроить вашу IDE перед компиляцией проекта. Большинство IDE требуют дополнительной настройки для включения обработки аннотаций для Butter Knife, или вы можете посмотреть [настройку IntelliJ IDEA для Butter Knife][101] или [настройку Eclipse для Butter Knife][102].

Обратите внимание: Последняя версия фреймворка требует Android SDK версии 21. Если вы используете проект Gradle, вам следует использовать Android Studio версии 1.0.0+. Если вы используете последнюю версию Android Studio, вам не нужно настраивать обработку аннотаций.

  1. Внедрение представлений:

Пример:

  class ExampleActivity extends Activity {
  @InjectView(R.id.title) TextView title;
  @InjectView(R.id.subtitle) TextView subtitle;
  @InjectView(R.id.footer) TextView footer;

  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.inject(this);
    // TODO Использовать "внедренные" представления...
  }
}

Еще одно применение — упрощение паттерна представления-холдера внутри адаптера списка.

public class MyAdapter extends BaseAdapter {
@Override public View getView(int position, View view, ViewGroup parent) {
    ViewHolder holder;
    if (view != null) {
      holder = (ViewHolder) view.getTag();
    } else {
      view = inflater.inflate(R.layout.whatever, parent, false);
      holder = new ViewHolder(view);
      view.setTag(holder);
    }
    holder.name.setText("John Doe");
    // и т.д...
    return view;
  }
  static class ViewHolder {
    @InjectView(R.id.title) TextView name;
    @InjectView(R.id.job_title) TextView jobTitle;
    public ViewHolder(View view) {
      ButterKnife.inject(this, view);
    }
  }
}
```4. Асинхронная сеть:

  Используйте асинхронные утилиты, вам не нужно создавать дополнительный поток для доступа к сети. Также включает загрузку файлов и т.д.

```java
HttpUtilsAsync.get("http://www.google.com", new AsyncHttpResponseHandler() {

  @Override
  public void onStart() {
      // вызывается перед началом запроса
  }

  @Override
  public void onSuccess(int statusCode, Header[] headers, byte[] response) {
      // вызывается, когда HTTP-статус ответа "200 OK"
  }

  @Override
  public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
      // вызывается, когда HTTP-статус ответа "4XX" (например, 401, 403, 404)
  }

  @Override
  public void onRetry(int retryNo) {
      // вызывается, когда запрос повторяется
  }
});

Запрос POST:

HttpUtilsAsync.post("http://www.google.com", params, new AsyncHttpResponseHandler() {

  @Override
  public void onStart() {
      // вызывается перед началом запроса
  }

  @Override
  public void onSuccess(int statusCode, Header[] headers, byte[] response) {
      // вызывается, когда HTTP-статус ответа "200 OK"
  }

  @Override
  public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
      // вызывается при HTTP-статусе ответа "4XX" (например, 401, 403, 404)
  }

  @Override
  public void onRetry(int retryNo) {
      // вызывается при повторной попытке запроса
  }
});
  1. Отображение изображений:

Если вы уже используете или расширяете CommonApplication, вы можете использовать следующий код:

ImageLoader.getInstance().displayImage(imageUri, imageView);

Или для некоторых дополнительных возможностей:```java imageLoader.displayImage(imageUri, imageView, displayOptions, new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { ... } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { ... } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { ... } @Override public void onLoadingCancelled(String imageUri, View view) { ... } }, new ImageLoadingProgressListener() { @Override public void onProgressUpdate(String imageUri, View view, int current, int total) { ... } });

  // Загрузка изображения, декодирование его в Bitmap и возврат Bitmap в коллбэк
  ImageSize targetSize = new ImageSize(120, 80); // результат Bitmap будет соответствовать этому размеру
  imageLoader.loadImage(imageUri, targetSize, displayOptions, new SimpleImageLoadingListener() {
    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        // Вы можете сделать с Bitmap что угодно
    }
  });
```

Примеры допустимых URI:

```java
String imageUri = "http://site.com/image.png"; // из сети
String imageUri = "file:///mnt/sdcard/image.png"; // из SD-карты
String imageUri = "content://media/external/audio/albumart/13"; // из провайдера контента
String imageUri = "assets://image.png"; // из assets
String imageUri = "drawable://" + R.drawable.image; // из ресурсов (только изображения, не-9patch)
```

**ЗАМЕЧАНИЕ**: Используйте `drawable://` только если это действительно необходимо! Всегда учитывайте стандартный способ загрузки ресурсов - `ImageView.setImageResource(...)` вместо использования `ImageLoader`.


6.ORM:

Вы можете ознакомиться с документацией по [GreenDao](https://github.com/greenrobot/greenDAO)

## Модули пользовательского интерфейса

- Поддержка анимаций для Android 2.3

- EnhanceListView для списка, который позволяет свайпать элементы для их удаления

- Shimmer и Titanic для того, чтобы сделать текстовые поля более впечатляющими

- SmoothProgressBar для того, чтобы сделать полосу прогресса похожей на Gmail или Google+

- Flip View для реализации переключения между видами, как в популярном приложении Flipboard

- PhotoView для помощи в создании легко используемой реализации масштабируемого изображения в Android ImageView- PagerSlidingTabStrip и ViewPagerIndicator для помощи в кастомизации View Pager

- SwipeBackLayout для помощи в завершении активности свайпом экрана

- Material Design

- И многое другое (более 100 модулей пользовательского интерфейса, которые я не упоминаю здесь).

---

#### В настоящее время основные функции включают вставку View, ORM, асинхронные сетевые запросы и загрузку изображений, автоматизированные скрипты тестирования, управление диском LRU и другие. Также предоставляются различные утилиты, такие как TripleDes, быстрое настройка WebView, обработка шифрования, обработка строк, обработка HTTPS, загрузка файлов и т.д. Кроме того, есть более 100 различных эффектов UI. И эти функции постепенно расширяются.

##### UltimateAndroid  это фреймворк, подобный Flask (Python), который включает в себя множество других открытых проектов, таких как [Butter Knife][1], [Asynchronous Http Client for Android][2], [Universal Image Loader for Android][3] и многое другое, что я упоминаю в Readme или updatelog.

Приглашаем к форку и предложениям.

Если у вас есть необходимые функции, присоединяйтесь к обсуждению.

###### Версия 0.7.0:

Проект UltimateUI разделен на четыре подпроекта: widget, component, animations и lollipop. Если вам нужны только некоторые эффекты UI, вы можете зависеть только от этих подпроектов. Если вы хотите использовать несколько типов UI проектов, вы также можете легко зависеть от проекта UltimateAndroidUi (конечно, вы также можете зависеть от четырех подпроектов).[Примеры UI здесь](#demo_of_ui)

[Описание некоторых модулей UI](http://arccode.net/2015/02/03/UltimateAndroid-demo%E6%95%88%E6%9E%9C%E5%9B%BE%E6%96%87%E6%A1%A3-%E4%B8%80/) (спасибо arccode)

##### Приглашаем к форку.

### QQ общение: 341970175 (пожалуйста, укажите Android разработку)

---

## Пример использования

Пример зависит от appcompat и UltimateAndroid. Вы можете добавить следующие зависимости в IDE или конфигурационные файлы.

### Быстрый старт (базовое использование)

##### Рекомендуемый способ (Gradle):

Основной фреймворк:

```groovy
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroid:0.7.2'
}
```

Фреймворк UI:

```groovy
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroidui:0.7.2'
}
```

Отдельные UI проекты:

```groovy
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroiduiwidget:0.7.2'
}
```

```groovy
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroiduicomponent:0.7.2'
}
```

```groovy
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroiduilollipop:0.7.2'
}
```

```groovy
repositories {
        jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimateandroid:ultimateandroiduianimation:0.7.2'
}
```

##### Обычный способ:1. Традиционные библиотеки и библиотеки Gradle находятся в разных папках. Если вы используете способ Gradle, вы можете скопировать "ultimateandroid.aar" в ваш проект и добавить ``compile(name:'ultimateandroid', ext:'aar')`` в файл gradle. Если вы используете способ Gradle и хотите одновременно изменять фреймворк, вы можете импортировать папку ``UltimateAndroidGradle`` с помощью ``Import Studio Project`` (требуется версия Android Studio 1.0 и выше). Если вы используете Eclipse, обратите внимание, что UltimateAndroid зависит от appcompat, UltimateAndroidUi зависит от UltimateAndroid, а DemoOfUi зависит от UltimateAndroidUi. Если вам не требуется UiModule, вы можете напрямую зависеть от UltimateAndroid, что сделает ваш проект более компактным.2. Файлы APK демо-приложения можно скачать и использовать. Поскольку фреймворк использует View Injection, **большинство IDE должны включить компиляцию аннотаций (используется Butter Knife), если вы не знаете, как это сделать, вы можете посмотреть на [настройку IntelliJ IDEA для Butter Knife][101] или [настройку Eclipse для Butter Knife][102].**

***Внимание: фреймворк UltimateAndroid требует версии Android SDK API 21 для компиляции. Если вы используете проект Gradle, версия Android Studio должна быть выше OnClickListener 1.0.0. Если вы используете последнюю версию Android Studio, вам не нужно явно включать обработку аннотаций.***3. Внедрение представлений:

Пример:

```java
class ExampleActivity extends Activity {
    @InjectView(R.id.title) TextView title;
    @InjectView(R.id.subtitle) TextView subtitle;
    @InjectView(R.id.footer) TextView footer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_activity);
        ButterKnife.inject(this);
        // TODO Использовать "внедренные" представления...
    }
}
```

Еще одно применение  упрощение паттерна представления-холдера внутри адаптера списка.

```java
public class MyAdapter extends BaseAdapter {
    @Override
    public View getView(int position, View view, ViewGroup parent) {
        ViewHolder holder;
        if (view != null) {
            holder = (ViewHolder) view.getTag();
        } else {
            view = inflater.inflate(R.layout.whatever, parent, false);
            holder = new ViewHolder(view);
            view.setTag(holder);
        }
        holder.name.setText("John Doe");
        // и т.д...
        return view;
    }

    static class ViewHolder {
        @InjectView(R.id.title) TextView name;
        @InjectView(R.id.job_title) TextView jobTitle;
    }
}
```        public ViewHolder(View view) {
            ButterKnife.inject(this, view);
        }
    }
}
```

4. Асинхронные сетевые запросы:

Используя инструменты для асинхронных сетевых запросов, вам не нужно объявлять дополнительный поток для выполнения сетевых запросов. Также включаются функции загрузки файлов и другие операции.

```java
HttpUtilsAsync.get("http://www.google.com", new AsyncHttpResponseHandler() {

    @Override
    public void onStart() {
        // вызывается перед началом запроса
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
        // вызывается, когда HTTP-статус ответа "200 OK"
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
        // вызывается, когда HTTP-статус ответа "4XX" (например, 401, 403, 404)
    }

    @Override
    public void onRetry(int retryNo) {
        // вызывается, когда запрос повторяется
    }
});
```

Запрос POST:

```java
HttpUtilsAsync.post("http://www.google.com", new AsyncHttpResponseHandler() {

    @Override
    public void onStart() {
        // вызывается перед началом запроса
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
        // вызывается, когда HTTP-статус ответа "200 OK"
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
        // вызывается при HTTP-статусе ответа "4XX" (например, 401, 403, 404)
    }

    @Override
    public void onRetry(int retryNo) {
        // вызывается при повторной попытке запроса
    }
});
```

5. Отображение изображений:

Если вы уже используете или наследуете CommonApplication, вы можете использовать следующий код:  \```ImageLoader.getInstance().displayImage((imageUri, imageView));```

  Или продвинутый вариант использования:

``` java
imageLoader.displayImage(imageUri, imageView, displayOptions, new ImageLoadingListener()  {
    @Override
    public void onLoadingStarted(String imageUri, View view) {
        ...
    }
    @Override
    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
        ...
    }
    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
    ...
    }
    @Override
    public void onLoadingCancelled(String imageUri, View view) {
     ...
     }
}, new ImageLoadingProgressListener() {
 @Override
 public void onProgressUpdate(String imageUri, View view, int current, int total) {
 ...
 }
});
```

``` java
// Загрузка изображения, декодирование его в Bitmap и возврат Bitmap обратному вызову
ImageSize targetSize = new ImageSize(120, 80); // результирующий Bitmap будет подстроен под этот размер
imageLoader.loadImage(imageUri, targetSize, displayOptions, new SimpleImageLoadingListener() {
  @Override
  public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
      // Вы можете сделать с Bitmap все, что вам нужно
  }
});
```

Можно использовать следующие форматы URI:

``` java
String imageUri = "http://site.com/image.png"; // из интернета
String imageUri = "file:///mnt/sdcard/image.png"; // из SD-карты
String imageUri = "content://media/external/audio/albumart/13"; // из провайдера контента
String imageUri = "assets://image.png"; // из assets
String imageUri = "drawable://" + R.drawable.image; // из ресурсов (только изображения, не-9patch)
```

**ЗАМЕЧАНИЕ**: Используйте `drawable://` только если это действительно необходимо! Всегда учитывайте стандартный способ загрузки ресурсов - `ImageView.setImageResource(...)` вместо использования `ImageLoader`.6. ORM:

  Вы можете ознакомиться с документацией Greendao: [GreenDao](https://github.com/greenrobot/greenDAO)


## UI модуль  Поддержка Android 2.3 и выше для анимационных эффектов

- Удаление элементов в ListView при свайпах

- Динамическое изменение TextView

- Прогресс-бары, подобные Gmail и Google+

- Эффект перелистывания страниц, подобный приложению FlipBoard

- Модуль для масштабирования изображений

- Изменение изображений с эффектами кино и телевидения

- Упрощённая настройка ViewPager

- Свайп для возврата

- Дизайн в стиле Material Design

  ```Более 100 модулей не упомянуты```Предупреждение

Некоторые элементы реализованы только для демонстрации их функциональности, поэтому они не оптимизированы с точки зрения производительности, и не созданы с учетом "наилучших практик".


<h2 id="demo_of_ui">Скриншот:</h2>  

![tutorials2](https://bytebucket.org/marshalchen/images/raw/0bed76fcdecb604afab39df9ce1a509af4b6f995/ultimaterecyclerview/ultimate_recyclerview6.gif)



![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-14.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-1.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-2.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-3.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-4.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-5.gif)![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-6.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-7.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-8.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-9.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-10.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-11.gif)

![tutorials2](https://bytebucket.org/marshalchen/images/raw/e943b6016246e1f3c2085a24e1a773e0107775b3/ultimateandroid/tutorial2-12.gif)

<br>

<h2><a name="sample">Пример</a></h2>

Вы можете клонировать проект и скомпилировать его самостоятельно (включает пример), или вы можете проверить его уже скомпилированный на Google Play[![Google Play](http://developer.android.com/images/brand/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=com.marshalchen.common.demoofui)

[Прямая загрузка демонстрационного apk](https://bitbucket.org/marshalchen/files/raw/13a1eb02b1afed10cbd7d0783f7a245f15d0a7f3/demoofui.apk)

> Обратите внимание, что это может не быть самой последней версией

The UltimateAndroid использует множество открытых проектов, и я очень признателен авторам этих проектов.

Открытые проекты, которые я использую:

1. JakeWharton's [Butter Knife][1] для инъекции представлений.

2. loopj's [Asynchronous Http Client for Android][2].

3. nostra13's [Universal Image Loader for Android][3]

4. greenrobot's [greenDAO][4]

5. pardom's [ActiveAndroid][5]

6. JakeWharton's [DiskLruCache][6]7. Issacw0ng's [SwipeBackLayout][7]

8. [google-gson][8]

9. RobotiumTech's [robotium][9]

10. JakeWharton's [NineOldAndroids][10]

11. JakeWharton's [Android-ViewPagerIndicator][11]

12. [RippleEffect](https://github.com/traex/RippleEffect)

13. [Material Menu](https://github.com/balysv/material-menu)

14. [FloatingActionButton](https://github.com/futuresimple/android-floating-action-button)

15. [FloatingActionButtonWithListView](https://github.com/makovkastar/FloatingActionButton)

16. [Android View Animations](https://github.com/daimajia/AndroidViewAnimations)

17. [android-common](https://github.com/Trinea/android-common)

18. [ListviewAnimations](https://github.com/nhaarman/ListViewAnimations)

19. [PagerSlidingTabStrip](https://github.com/astuetz/PagerSlidingTabStrip)

20. [Rebound](https://github.com/facebook/rebound)

21. [Titanic](https://github.com/RomainPiel/Titanic)

22. [FaceCrop](https://github.com/Todd-Davies/ProgressWheel)

23. [KenBurns](https://github.com/flavioarfaria/KenBurnsView)

24. [AndroidSwipeLayout](https://github.com/daimajia/AndroidSwipeLayout)

Есть также другие проекты, которые я описал в [Истории обновлений](https://github.com/cymcsg/UltimateAndroid/blob/master/deprecated/updateLog.md).

Если я что-то упустил, я буду очень признателен, если вы мне об этом сообщите.

[1]: https://github.com/JakeWharton/butterknife
[2]: https://github.com/loopj/android-async-http
[3]: https://github.com/nostra13/Android-Universal-Image-Loader
[4]: https://github.com/greenrobot/greenDAO
[5]: https://github.com/pardom/ActiveAndroid
[6]: https://github.com/JakeWharton/DiskLruCache
[7]: https://github.com/Issacw0ng/SwipeBackLayout
[8]: https://code.google.com/p/google-gson/
[9]: https://github.com/RobotiumTech/robotium
[10]: https://github.com/JakeWharton/NineOldAndroids
[11]: https://github.com/JakeWharton/Android-ViewPagerIndicator
[12]: https://github.com/RomainPiel/Shimmer-android
[101]: http://jakewharton.github.io/butterknife/ide-idea.html
[102]: http://jakewharton.github.io/butterknife/ide-eclipse.html
[13]: https://github.com/moagrius/TileView/tree/master

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/marshalchen-UltimateAndroid.git
git@api.gitlife.ru:oschina-mirror/marshalchen-UltimateAndroid.git
oschina-mirror
marshalchen-UltimateAndroid
marshalchen-UltimateAndroid
master