GreenDao(fresco缓存路径,设置大小,recycerview设置分割线)

开始Fresco的依赖

implementation 'com.facebook.fresco:fresco:0.12.0'

首先GeenDao的依赖

implementation 'org.greenrobot:greendao:3.2.2'

1:在项目的build.grade文件里加入一行代码

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'

2:在app的build.grade里面加上代码

apply plugin: 'org.greenrobot.greendao'

3:在app的build.grad里面Android{}里加上代码

greendao {
      schemaVersion 1
      //这里需要修改生产dao的包名
      daoPackage 'com.bawei.dome.gen'
      targetGenDir 'src/main/java'
}

4:写一个外部类的greendao

public class GreenDaoManager {
private static GreenDaoManager instance;
private DaoMaster.DevOpenHelper devOpenHelper;
private SQLiteDatabase db;
private DaoMaster daoMaster;
private DaoSession daoSession;

private GreenDaoManager(){

}
public static GreenDaoManager getInstance(){
    if (instance==null){
        synchronized (GreenDaoManager.class){
            if (instance==null){
                instance = new GreenDaoManager();
            }
        }
    }
    return instance;
}
public void setDataBase(Context context){
    devOpenHelper = new DaoMaster.DevOpenHelper(context, "yang-db", null);
    db = devOpenHelper.getWritableDatabase();
    daoMaster = new DaoMaster(db);
    daoSession = daoMaster.newSession();
}

public SQLiteDatabase getDb() {
    return db;
}

public DaoSession getDaoSession() {
    return daoSession;
}
}

5:在App里面实现greendao

public class MyApp extends Application {
@Override
public void onCreate() {
    super.onCreate();
    GreenDaoManager.getInstance().setDataBase(this);
    //设置磁盘缓存
    DiskCacheConfig cacheConfig = DiskCacheConfig.newBuilder(this)
            .setBaseDirectoryName("fimages")
            .setBaseDirectoryPath(Environment.getExternalStorageDirectory())
            .build();
    //设置磁盘缓存的配置,生成配置文件
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setMainDiskCacheConfig(cacheConfig)
            .build();
    Fresco.initialize(this,config);
}
private static int MAX_MEM = 30* ByteConstants.MB;

private ImagePipelineConfig getConfigureCaches(Context context) {
    final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
            // 内存缓存中总图片的最大大小,以字节为单位。
            MAX_MEM,
            // 内存缓存中图片的最大数量。
            Integer.MAX_VALUE,
            // 内存缓存中准备清除但尚未被删除的总图片的最大大小,以字节为单位。
            MAX_MEM,
            // 内存缓存中准备清除的总图片的最大数量。
            Integer.MAX_VALUE,
            // 内存缓存中单个图片的最大大小。
            Integer.MAX_VALUE);

    Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
        @Override
        public MemoryCacheParams get() {
            return bitmapCacheParams;
        }
    };
    ImagePipelineConfig.Builder builder = ImagePipelineConfig.newBuilder(context);
    builder.setBitmapMemoryCacheParamsSupplier(mSupplierMemoryCacheParams);
    return builder.build();
}

private void frescoInit() {
    Fresco.initialize(this, getConfigureCaches(this));
    Fresco.initialize(this);
}
}

6:在Activity中调用Greendao

//设置分割线
    recycerview.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
    recycerview.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.HORIZONTAL));
在onActivityCreat中调取数据库
resultBeanDao = GreenDaoManager.getInstance().getDaoSession().getResultBeanDao();
//判断有网没网加载数据
 private void initinsert() {
    boolean netWork = NetWorkUtils.getNetWork(MainActivity.this);
    if (netWork){
        resultBeanDao.deleteAll();
        present1.getDataPresent(page,count);
    }else {
        List<ResultBean> resultBeans = resultBeanDao.loadAll();
        DataAdpater dataAdpater = new DataAdpater(this, resultBeans);
        rec.setAdapter(dataAdpater);

    }
}
请求数据
@Override
public void getDataView(List<ResultBean> databean) {
    for (int i=0;i<databean.size();i++){
        ResultBean resultBean = databean.get(i);
        resultBeanDao.insert(resultBean);
    }
    DataAdpater dataAdpater = new DataAdpater(this, databean);
    rec.setAdapter(dataAdpater);
}

猜你喜欢

转载自blog.csdn.net/weixin_43926099/article/details/88684451