美文网首页
basicUI(六)——工具类的封装

basicUI(六)——工具类的封装

作者: Peakmain | 来源:发表于2020-09-15 11:06 被阅读0次

查看在线pdf文档:
http://note.youdao.com/s/EM20Cggm

以下是我的基本UI组件该系列的文章,欢迎大家转载和分享:
基本UI组件的封装库(一)——basicUI
基本UI组件的封装库(二)——basicUI
基本UI组件的封装库——basicUI的demo的编写
基本UI组件的封装库(三)——basicUI
基本UI组件的封装库(四)——basicUI
basicUI(五)——RecycleView的下拉刷新、加载更多和多状态布局实现
basicUI(六)——工具类的封装
basicUI(七)——Android启动优化之启动器开发

项目库的GitHub地址:https://github.com/Peakmain/BasicUI

  • 如果大家觉得有点帮助,希望可以抬抬你的贵手,送我一个星星,谢谢。如果有什么问题,也欢迎你在下方留言或者在BasicUI中提

前言

这次版本主要加了的是:1、okhttp的网络引擎切换(支持get,post,上传,单线程下载,多线程下载),2、glide图片选择库的切换,3、数据库SQLiteDatabase的封装

How to

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

dependencies {
        implementation 'com.github.Peakmain:BasicUI:1.0.2'
}

okhttp的第三方网络引擎切换

image.png
  • get请求方式
     HttpUtils.with(OkHttpActivity.this)
                            .url("http://i.jandan.net/")
                            .addParams("oxwlxojflwblxbsapi", "jandan.get_pic_comments")
                            .addParams("page", "1")
                            .execture(new EngineCallBack() {
                                @Override
                                public void onError(Exception e) {
                                    LogUtils.e(e.getMessage());
                                }

                                @Override
                                public void onSuccess(String result) {
                                    mTvResult.setText(result);
                                }

                            });
  • post请求方式
                    HttpUtils.with(OkHttpActivity.this)
                            .url("https://www.wanandroid.com/user/login")
                            .addParams("username", "peakmain")
                            .addParams("password", "123456")
                            .post()
                            .execture(new EngineCallBack() {
                                @Override
                                public void onError(Exception e) {
                                    LogUtils.e(e.getMessage());
                                }

                                @Override
                                public void onSuccess(String result) {
                                    mTvResult.setText(result);
                                }
                            });
  • 单线程下载
                    File file = new File(Environment.getExternalStorageDirectory(), "test.apk");
                    if (file.exists()) {
                        file.delete();
                    }
                    HttpUtils.with(OkHttpActivity.this)
                            .url("http://imtt.dd.qq.com/16891/apk/87B3504EE9CE9DC51E9F295976F29724.apk")
                            .downloadSingle()
                            .file(file)
                            .exectureDownload(new DownloadCallback() {
                                @Override
                                public void onFailure(Exception e) {
                                    LogUtils.e(e.getMessage());
                                }

                                @Override
                                public void onSucceed(File file) {
                                    ToastUtils.showShort("file下载完成");
                                    LogUtils.e("文件保存的位置:" + file.getAbsolutePath());
                                    mProgressBar.setVisibility(View.GONE);
                                    mProgressBar.setProgress(0);
                                }

                                @Override
                                public void onProgress(int progress) {
                                    LogUtils.e("单线程下载apk的进度:" + progress);
                                    mProgressBar.setProgress(progress);
                                    mProgressBar.setVisibility(View.VISIBLE);
                                }
                            });
  • 多线程下载
                    file = new File(Environment.getExternalStorageDirectory(), "test.apk");
                    if (file.exists()) {
                        file.delete();
                    }
                    HttpUtils.with(OkHttpActivity.this)
                            .url("http://imtt.dd.qq.com/16891/apk/87B3504EE9CE9DC51E9F295976F29724.apk")
                            .downloadMutil()
                            .file(file)
                            .exectureDownload(new DownloadCallback() {
                                @Override
                                public void onFailure(Exception e) {
                                    LogUtils.e(e.getMessage());
                                }

                                @Override
                                public void onSucceed(File file) {
                                    LogUtils.e(file.getAbsolutePath() + "," + file.getName());
                                    Toast.makeText(OkHttpActivity.this, "下载完成", Toast.LENGTH_LONG).show();
                                    mProgressBar.setVisibility(View.GONE);
                                    mProgressBar.setProgress(0);
                                }

                                @Override
                                public void onProgress(int progress) {
                                    LogUtils.e(progress + "%");
                                    mProgressBar.setVisibility(View.VISIBLE);
                                    mProgressBar.setProgress(progress);
                                }
                            });
  • 切换引擎的方法
    默认是okHttpEngine
  HttpUtils.with(OkHttpActivity.this)
   .exchangeEngine(切换的引擎)

或者在application中直接初始化
HttpUtils.init(初始化的引擎);

gilde图片选择库切换

image.png
  • 简单使用
 ImageLoader.getInstance().displayImage(this, data.get(0).getUrl(), mImageView);
  • 占位图的使用
 ImageLoader.getInstance().displayImage(this, data.get(1).getUrl(), mImageView, R.mipmap.ic_default_portrait);
  • 圆角图片
 ImageLoader.getInstance().displayImageRound(this, data.get(2).getUrl(), mImageView,50 ,0);
  • 指定图片的大小
ImageLoader.getInstance().displayImage(this,data.get(4).getUrl(),mImageView,800,800,0);
  • 切换图片加载库
ImageLoader.getInstance().exchangeImageLoader(切换的库)

Sqlitedatabase数据库封装的使用

  • 1、需要实体类实现空的构造方法

-2、获得IDaoSupport实体类

IDaoSupport<Person> dao = DaoSupportFactory.getInstance().getDao(Person.class);
  • 3、插入数据
  dao.insert(persons);
  • 4、查询数据
    查询所有数据
 List<Person> list = dao.querySupport().queryAll();

查询指定数据:如指定指定名字的范围

dao.querySupport().selection("name like ?").selectionArgs(new String[]{"新%"}).query();
  • 5、删除数据
    需要传入两个参数
    1、条件 2、条件参数
    源码
int delete(String whereClause, String... whereArgs);

如下删除年龄109的数据,返回的是删除数据所在位置的索引

dao.delete("age = ?", new String[]{"109"});
  • 6、更新数据
    需要传入三个参数,1、新数据的实体类,2、条件 3、条件参数
    源码
    int update(T obj, String whereClause, String... whereArgs);

如下更新年龄是108的数据

 dao.update(new Person("peakmain", 18), "age =?", new String[]{"108"});

相关文章

网友评论

      本文标题:basicUI(六)——工具类的封装

      本文链接:https://www.haomeiwen.com/subject/spmeektx.html