Notas sobre el selector de imágenes de Android Zhihu Matisse

项目地址:GitHub - zhihu/Matisse: Un selector de imágenes y videos locales bien diseñado para Android :fireworks: Un selector de imágenes y videos locales bien diseñado para Android - GitHub - zhihu/Matisse: Un selector de imágenes y videos locales bien diseñado para Android https://github.com/zhihu/Matisse

Dependencias directas:

repositories {
    jcenter()
}

dependencies {
    implementation 'com.zhihu.android:matisse:$latest_version'
}

Hay un problema: cuando la galería local se abre de forma predeterminada, todo se muestra normalmente, pero cuando se cambia a otros álbumes, la visualización está en blanco;

Actualmente, el autor no ha solucionado este problema, se puede modificar de las siguientes maneras:

(1) Descargue el código fuente;

(2) Utilice el módulo de importación para importar al proyecto;

(3) Busque MatisseActivity, en el método onAlbumSelected():

private void onAlbumSelected(Album album) {
        if (album.isAll() && album.isEmpty()) {
            mContainer.setVisibility(View.GONE);
            mEmptyView.setVisibility(View.VISIBLE);
        } else {
            mContainer.setVisibility(View.VISIBLE);
            mEmptyView.setVisibility(View.GONE);
            Fragment fragment = MediaSelectionFragment.newInstance(album);

            // 修复matisse源码存在的,切换其他相册空白问题
            Fragment oldFragment = getSupportFragmentManager().findFragmentByTag(MediaSelectionFragment.class.getSimpleName());
            if (oldFragment instanceof MediaSelectionFragment) {
                MediaSelectionFragment newFragment = (MediaSelectionFragment) oldFragment;
                newFragment.destroyManagerLoader();
            }
            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.container, fragment, MediaSelectionFragment.class.getSimpleName())
                    .commitAllowingStateLoss();
        }
    }

(4) Agregue MediaSelectionFragment:

 public void destroyManagerLoader() {
        mAlbumMediaCollection.onDestroy();
    }

(5) Agregar en AlbumCollection:

public void onDestroy() {
        if (mLoaderManager != null) {
            mLoaderManager.destroyLoader(LOADER_ID);
        }
        mCallbacks = null;
    }

(6) Simplemente llámelo en MatisseActivity onDestroy:

 @Override
    protected void onDestroy() {
        super.onDestroy();
        mAlbumCollection.onDestroy();
        mSpec.onCheckedListener = null;
        mSpec.onSelectedListener = null;
    }

Supongo que te gusta

Origin blog.csdn.net/u010231454/article/details/125507625
Recomendado
Clasificación