Glide工具类/OkGo网络请求/MVP请求数据/Retrofit+RxJava/ARouter/补间动画/轮播图等等等等等 记录一下~~
Posted 怪歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Glide工具类/OkGo网络请求/MVP请求数据/Retrofit+RxJava/ARouter/补间动画/轮播图等等等等等 记录一下~~相关的知识,希望对你有一定的参考价值。
PhaseTwo(android)
okgo
okhttp的封装 简易版Okhttp
这里继承了上一个项目中的BaseActivity,如果不明白的点下面的链接,并打开PhaseTwo(Android)
上一期的Java-Android.
package com.bawei.zhuangao2.day3;
import android.Manifest;
import android.annotation.SuppressLint;
import android.graphics.BitmapFactory;
import android.view.View;
import android.widget.ImageView;
import com.bawei.zhuangao2.R;
import com.bawei.zhuangao2.day1.HeadInterceptor;
import com.bawei.zhuangao2.day2.base.BaseActivity;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.PermissionUtils;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.callback.FileCallback;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
//一样继承于BaseActivity
public class OkGoActivity extends BaseActivity
//用于下载图片展示
private ImageView coverIv;
/**
* 绑定主要视图
* @return
*/
@Override
public int bandLayout()
return R.layout.activity_okhttp;
/**
* 初始化控件 并设置点击事件
*/
@Override
public void initView()
//获取隐私权限(这里隐私权限指的是:手机联系人,读写SD卡,手机信息等等)
//这里获取了写入SD卡的权限
PermissionUtils.permission(Manifest.permission.WRITE_EXTERNAL_STORAGE).request();
findViewById(R.id.btn1).setOnClickListener(this);
findViewById(R.id.btn2).setOnClickListener(this);
findViewById(R.id.btn3).setOnClickListener(this);
findViewById(R.id.btn4).setOnClickListener(this);
findViewById(R.id.btn5).setOnClickListener(this);
findViewById(R.id.btn6).setOnClickListener(this);
coverIv = findViewById(R.id.image);
@Override
public void initData()
/**
* 点击事件
* @param v
*/
@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View v)
switch (v.getId())
case R.id.btn1:
//Get方式获取
OkGo.<String>get("https://gank.io/api/v2/banners").execute(new StringCallback()
@Override
public void onSuccess(Response<String> response)
//对Response 做了解析
//这里还是异步线程
LogUtils.d(response.body());
@Override
public void onCacheSuccess(Response<String> response)
super.onCacheSuccess(response);
LogUtils.d("onCacheSuccess" + response.body());
);
break;
case R.id.btn2:
//Post Json 通过upJson("")提交代码
JSONObject jsonObject = new JSONObject();
try
jsonObject.put("username", "1234567");
jsonObject.put("pwd", "123456");
jsonObject.put("sex", "1");
jsonObject.put("birthday", "2000-9-9");
catch (JSONException e)
e.printStackTrace();
OkGo.<String>post("http://39.98.153.96:8082/api/WeekTest/register")
.upJson(jsonObject.toString()).execute(new StringCallback()
@Override
public void onSuccess(Response<String> response)
//Response 对做了解析
//这里还是异步线程
LogUtils.d(response.body());
);
break;
case R.id.btn3:
//Post From
//username=1903001&pwd=123456
OkGo.<String>post("http://39.98.153.96:8082/api/WeekTest/login?username=1903001&pwd=123456")
.params("username", "1903001")
.params("pwd", "123456")
.execute(new StringCallback()
@Override
public void onSuccess(Response<String> response)
//Response 对做了解析
//这里还是异步线程
LogUtils.d(response.body());
);
break;
case R.id.btn4:
//下载
OkGo.<File>get("https://pic.downk.cc/item/5e7b64fd504f4bcb040fae8f.jpg").execute(new FileCallback()
@Override
public void onSuccess(final Response<File> response)
runOnUiThread(new Runnable()
@Override
public void run()
LogUtils.d(response.body().getPath());
coverIv.setImageBitmap(BitmapFactory.decodeFile(response.body().getPath()));
);
);
break;
case R.id.btn5:
break;
case R.id.btn6:
//文件上传
File file = new File("/storage/emulated/0/download/1382400000b859e1c2339");
coverIv.setImageBitmap(BitmapFactory.decodeFile(file.getPath()));
OkGo.<String>post("http://117.51.155.210/hfs/")
//发送格式为file
.params("file",file)
//分段发送
.isMultipart(true)
.execute(new StringCallback()
@Override
public void onSuccess(Response<String> response)
LogUtils.d(response.body());
);
break;
Glide工具
认识Glide
Glide是一个图片加载框架,功能强大,一般用于一些视图显示图片,从url中加载图片等等,也可以进行裁剪图片,达到视觉美观
Glide方法类
/**
* 单例 双重校验 双重锁
*/
public class ImageManger
public void showImage(String url, ImageView view)
Glide.with(Utils.getApp()).load(url)
//关闭缓存
.skipMemoryCache(true)
//关闭磁盘缓存
.diskCacheStrategy(DiskCacheStrategy.NONE)
//加载过程显示
.placeholder(R.mipmap.ic_launcher)
//加载失败显示
.error(R.mipmap.ic_launcher)
.into(view);
public void showR(String url, ImageView view,int radius)
Glide.with(Utils.getApp()).load(url)
.transform(new RoundedCorners(radius))
//加载过程显示
.placeholder(R.mipmap.ic_launcher)
//加载失败显示
.error(R.mipmap.ic_launcher)
.into(view);
public void showC(String url, ImageView view)
Glide.with(Utils.getApp()).load(url)
//圆形
.circleCrop()
.into(view);
//多线程可见
private static volatile ImageManger imageManger;
//饿汉式单例
public static ImageManger getInstance()
if (imageManger==null)
//这里上锁
synchronized (ImageManger.class)
if (imageManger==null)
imageManger=new ImageManger();
return imageManger;
Activity类
public class GlideActivity extends BaseActivity
private android.widget.ImageView actGlideIv01;
private android.widget.ImageView actGlideIv02;
private android.widget.ImageView actGlideIv03;
//初始化主视图
@Override
public int bandLayout()
return R.layout.activity_glide;
//初始化控件
@Override
public void initView()
actGlideIv01 = findViewById(R.id.act_glide_iv_01);
actGlideIv02 = findViewById(R.id.act_glide_iv_02);
actGlideIv03 = findViewById(R.id.act_glide_iv_03);
//加载数据(显示图片)
@Override
public void initData()
//实例化调用方法 完成Glide加载
ImageManger imageManger = new ImageManger();
imageManger.showImage("https://pic.downk.cc/item/5e7b64fd504f4bcb040fae8f.jpg",actGlideIv01);
imageManger.showC("https://pic.downk.cc/item/5e7b64fd504f4bcb040fae8f.jpg",actGlideIv02);
imageManger.showR("https://pic.downk.cc/item/5e7b64fd504f4bcb040fae8f.jpg",actGlideIv03,50);
MVP
在MVC中,View层是可直接调用Model层的,当发生一些特殊的情况时,无法及时更换网络请求
而MVP中则可以,MVP的主要目的是解耦,P层用于调用M层,V层则用来访问P层
内容较多:可以参考Github网站 > MVP整合框架
MVP分为:
(数据访问层)
Model层: 用于进行数据请求,一般用P层调用其中方法
(连接层)
Presenter层: 中文翻译为"主持人",一般用于连接M层和V层, V层调用P层, P层再调用M层
(视图层)
View层:用于视图展示, 继承回调接口等 调用P层中方法获取数据
目录
Base_lib
一个library组件 其中的抽象类用于被继承, 用于自定义 更加的方便写MVP
基础model层
(接口)
public
interface IModel
void destroy();
(抽象实现类)
//销毁方法
public abstract
class BaseModel implements IModel
@Override
public void destroy()
基础View层
(IActivity 基础activity接口)
public
interface IActivity
//用于初始化视图
void initView();
//用于加载数据
void initData();
//用于绑定视图时使用(获取视图)
int bindLayout();
(IView 基础view层接口)
public
interface IView
//用于显示进度条
void showLoading();
//用于隐藏进度条
void hideLoading();
//用于便捷Toast信息
void showToast(String msg);
(BaseActivity 基础activity抽象实现类)
/**
* 和正常Activity一样继承AppCompatActivity 需要实现activity的接口 和 视图层的接口
*/
public abstract
class BaseActivity extends AppCompatActivity implements IActivity,IView
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(bindLayout()); //这里调用获取视图方法 用于设置主视图
//初始化视图
initView();
//初始化数据
initData();
/**
* Toast信息
* @param msg 需要Toast的信息
*/
@Override
public void showToast(String msg)
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
(IFragment 基础fragment接口)
public
interface IFragment extends IActivity
//方便Fragment 初始化组件
<T extends View> T findViewById(@IdRes int id);
(BaseFragment 基础fragment抽象实现类)
public abstract
class BaseFragment extends Fragment implements IView,IFragment
private View view;
/**
* 创建视图时调用
* @param inflater
* @param container
* @param savedInstanceState
* @return
*/
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
//这里绑定主视图
view = inflater.inflate(bindLayout(),container,false);
//返回主视图
return view;
/**
* 创建视图后调用
* @param view
* @param savedInstanceState
*/
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
//初始化视图
initView();
//初始化数据
initData();
/**
* 实现findViewById方法
* 以上是关于Glide工具类/OkGo网络请求/MVP请求数据/Retrofit+RxJava/ARouter/补间动画/轮播图等等等等等 记录一下~~的主要内容,如果未能解决你的问题,请参考以下文章
Glide工具类/OkGo网络请求/MVP请求数据/Retrofit+RxJava/ARouter/补间动画/轮播图等等等等等 记录一下~~
android -------- OkGo (让网络请求更简单的框架)