OKGO和Glide框架

一.OKGO

1.依赖

implementation ‘com.lzy.net:okgo:3.0.4’

2.布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity"
 android:orientation="vertical">
 <Button
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="get"
     android:id="@+id/get"></Button>
 <Button
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="post"
     android:id="@+id/post"></Button>
 <Button
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="download"
     android:id="@+id/download"></Button>
 <Button
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="upload"
     android:id="@+id/upload"></Button>
 <Button
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="下载图片"
     android:id="@+id/image"></Button>
 <ProgressBar
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     style="@style/Widget.AppCompat.ProgressBar.Horizontal"
     android:id="@+id/progress"></ProgressBar>
 <ProgressBar
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     style="@style/Widget.AppCompat.ProgressBar.Horizontal"
     android:id="@+id/progress2"></ProgressBar>
 <ImageView
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:id="@+id/imageview"></ImageView>



</LinearLayout>

3.Activity 中代码

  private Button get;
 private Button post;
 private Button download;
 private Button upload;
 private ProgressBar bar;
 private ProgressBar bar2;
 private Button image;
 private ImageView imageview;









 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     get = (Button) findViewById(R.id.get);
     post = (Button) findViewById(R.id.post);
     download = (Button) findViewById(R.id.download);
     upload = (Button) findViewById(R.id.upload);
     bar = (ProgressBar) findViewById(R.id.progress);
     bar2 = (ProgressBar) findViewById(R.id.progress2);
     image = (Button) findViewById(R.id.image);
     imageview = (ImageView) findViewById(R.id.imageview);



     if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
         requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},100);
     }
//get请求
     get.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             OkGo.<String>get("http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&itemid=2&act=ad_app").execute(new StringCallback() {
                 @Override
                 public void onSuccess(Response<String> response) {
                     Toast.makeText(MainActivity.this,""+response.body(),Toast.LENGTH_SHORT).show();
                 }

                 @Override
                 public void onError(Response<String> response) {
                     super.onError(response);

                 }
             });

         }
     });
     //post请求
     post.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
//                act=column&ctype=2&mid=16
             HashMap<String, String> map = new HashMap<>();
             map.put("act","column");
             map.put("ctype","2");
             map.put("mid","16");
             OkGo.<String>post("http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&").params(map).execute(new StringCallback() {
                 @Override
                 public void onSuccess(Response<String> response) {
                     String body = response.body();
                     Toast.makeText(MainActivity.this,body, Toast.LENGTH_SHORT).show();
                 }
             });
         }
     });
     //下载文件
     download.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             OkGo.<File>get("http://uvideo.spriteapp.cn/video/2019/0512/56488d0a-7465-11e9-b91b-1866daeb0df1_wpd.mp4").execute(new FileCallback("/sdcard/Movies","aaa.mp4") {
                 @Override
                 public void onSuccess(Response<File> response) {
                     File body = response.body();

                 }

                 @Override
                 public void onStart(Request<File, ? extends Request> request) {
                     super.onStart(request);
                 }

                 @Override
                 public void downloadProgress(Progress progress) {
                     super.downloadProgress(progress);
                     bar.setProgress((int) (progress.fraction*100));
                 }

                 @Override
                 public void onError(Response<File> response) {
                     super.onError(response);
                 }

                 @Override
                 public void onFinish() {
                     super.onFinish();
                     Toast.makeText(MainActivity.this,"下载成功",Toast.LENGTH_SHORT).show();
                     bar.setVisibility(View.INVISIBLE);
                 }
             });

         }
     });
     //上传文件
     upload.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             OkGo.<String>post("http://169.254.184.145/%E6%9C%8D%E5%8A%A1%E7%AB%AF/").isMultipart(true).params("file",new File("/sdcard/Music/HIDDN,Beatrich - Find You.mp3"),"shabi.mp3")
                     .execute(new StringCallback() {
                         @Override
                         public void onSuccess(Response<String> response) {
//                                Toast.makeText(MainActivity.this,""+response.body(),Toast.LENGTH_SHORT).show();

                         }

                         @Override
                         public void uploadProgress(Progress progress) {
                             super.uploadProgress(progress);
                             bar2.setProgress((int) (progress.fraction*100));
                         }
                     });

         }
     });
     //下载图片并显示在Imageview
     image.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             OkGo.<Bitmap>get("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg").execute(new BitmapCallback() {
                 @Override
                 public void onSuccess(Response<Bitmap> response) {
                     Bitmap body = response.body();
                     imageview.setImageBitmap(body);
                 }
             });
         }
     });
 }
}

二.okGo简单的json封装

1.定义抽象类

public abstract class JsonCallBack<T> extends AbsCallback<T> {
Class<T>tClass;

 public JsonCallBack(Class<T> tClass) {
     this.tClass = tClass;
 }

 @Override
 public T convertResponse(Response response) throws Throwable {
     if (response.body()==null){
         return  null;
     }
     String string = response.body().string();
     Gson gson = new Gson();
     if (tClass==null){
         return null;
     }
     T t = gson.fromJson(string,tClass);
     return t;
 }
}

Activity中的实现

此字符串是个数组,需要在类型中添加[ ]
JavaBean为字符串的工具类

public class JsonActivity extends AppCompatActivity {
 String get_url="http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&itemid=2&act=ad_app";

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_json);
     OkGo.<JavaBean[]>get(get_url).execute(new JsonCallBack<JavaBean[]>(JavaBean[].class) {
         @Override
         public void onSuccess(Response<JavaBean[]> response) {
             JavaBean[] beans = response.body();
         }
     });
 }
}

三.Glide框架的使用

1.Bitmap三级缓存机制

Glide.get(GlideActivity.this).clearMemory();//清除内存缓存
new Thread(new Runnable() {
                     @Override
                     public void run() {
                         Glide.get(GlideActivity.this).clearDiskCache();//清除SD卡缓存
                     }
                 }).start();

2. 加载本地SD卡图片+网络图片+资源图片+视频+GIF动图

Glide .with(this).load(地址).into(imageView);

3.加载圆形头像

         Glide.with(this)
                .load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg")
                .apply(RequestOptions.bitmapTransform(new CircleCrop()))
                .into(imageView);

4.加载圆角头像

        Glide.with(this)
                .load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg")
                .apply(RequestOptions.bitmapTransform(new RoundedCorners(100)))
                .into(imageView);

5.设置占位符和加载失败图片

          Glide.with(this)
             .load("http://hbimg.b0.upaiyun.com/9852feef26dcba3d807282aa5dff561b1e223de85b027-Tzv0x0_fw658")
             .apply(RequestOptions.bitmapTransform(new RoundedCorners(20)).error(R.mipmap.error).placeholder(R.drawable.ic_launcher_background))
             .into(iv);
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值