美文网首页
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