Множественный выбор изображений, реализованный как в WeChat. Поддерживает одиночный и множественный режимы выбора.
Английская версия документации
./gradlew installDebug
Шаг 0
Добавьте модуль multi-image-selector
в качестве зависимости вашего проекта.
Шаг 1
Добавьте разрешение android.permission.READ_EXTERNAL_STORAGE
в вашем файле AndroidManifest.xml
. Не забудьте также объявить Activity MultiImageSelectorActivity
в этом же файле.
<activity
android:configChanges="orientation|screenSize"
android:name="me.nereo.multi_image_selector.MultiImageSelectorActivity" />
Intent intent = new Intent(mContext, MultiImageSelectorActivity.class);
// Отображает ли вызов камеры
intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, true);
// Максимальное количество выбранных изображений
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, 9);
// Устанавливаем режим (поддерживает одиночный выбор / MultiImageSelectorActivity.MODE_SINGLE или множественный выбор / MultiImageSelectorActivity.MODE_MULTI)
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, MultiImageSelectorActivity.MODE_MULTI);
startActivityForResult(intent, REQUEST_IMAGE);
```* Шаг 3
Получите результат в методе `onActivityResult`. Например:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE) {
if (resultCode == RESULT_OK) {
// Получаете список выбранных изображений
List<String> пути = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
// Обрабатываете свою логику...
}
}
}
```* Шаг 4
Нет шага 4, всё готово! :)
-------------------### Пользовательская отрисовка
* Пользовательская активность
```java
class CustomerActivity extends Activity implements MultiImageSelectorFragment.Callback{
@Override
protected void onCreate(Bundle savedInstanceState) {
// Ваш логика...
Bundle bundle = new Bundle();
bundle.putInt(MultiImageSelectorFragment.EXTRA_SELECT_COUNT, mDefaultCount);
bundle.putInt(MultiImageSelectorFragment.EXTRA_SELECT_MODE, mode);
bundle.putBoolean(MultiImageSelectorFragment.EXTRA_SHOW_CAMERA, isShow);
// Добавление основного фрагмента в активность
getSupportFragmentManager().beginTransaction()
.add(R.id.image_grid, Fragment.instantiate(this, MultiImageSelectorFragment.class.getName(), bundle))
.commit();
}
@Override
public void onSingleImageSelected(String path) {
// Когда режим выбора установлен как одиночный/MODE_SINGLE, этот метод получает данные от фрагмента
}
}
@Override
public void onImageSelected(String path) {
// Изображение выбрано, здесь можно настроить поведение Actionbar
}
@Override
public void onImageUnselected(String path) {
// Изображение отмечено как незначительное, здесь можно настроить поведение Actionbar
}
@Override
public void onCameraShot(File imageFile) {
// При использовании камеры, после съемки возвращается файл фотографии
}
}
2015-5-5
ListPopupWindow
не заполнялся родительским контролем.2015-4-9
EXTRA_SHOW_CAMERA
равным true
, клик по первому элементу приводил к ошибкам.The MIT License (MIT)
Copyright (c) 2015 Nereo
Разрешается бесплатно использовать, копировать, модифицировать, объединять, публиковать, распространять, передавать по лицензии и продавать копии данного программного обеспечения и связанных с ним документов («Программное обеспечение»), а также предоставлять лицам, которым это Программное обеспечение было предоставлено, право делать то же самое, при условии выполнения следующих условий:
Вышеупомянутая надпись об авторском праве и данное разрешение должны быть включены во все копии или значительные части Программного обеспечения.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )