VIew:负责界面显示,与用户进行交互,传递点击事件。
Controller:接收用户的点击事件并传递到Model层。
Mode:负责处理数据,将结果以接口形式传递到View层。
还是通过下载百度图片并显示在ImageView上,熟练使用okhttp框架。
Controller代码:
package com.example.administrator.mvc_mvp_mvvm.MVC.Controller;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import com.example.administrator.mvc_mvp_mvvm.MVC.Model.OkhttpUtil;
import com.example.administrator.mvc_mvp_mvvm.MVC.Model.UpdataUI;
import com.example.administrator.mvc_mvp_mvvm.R;
public class MainActivity extends AppCompatActivity {
private Button button;
private ImageView imageView;
private OkhttpUtil okhttpUtil;
private final static String URL_IMAGE = “https://www.baidu.com/img/bd_logo1.png“;
UpdataUI updataUI;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
imageView = findViewById(R.id.image);
updataUI = new UpdataUI() {
@Override
public void updatadate(final Bitmap bitmap) {
runOnUiThread(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});
}
};
okhttpUtil = new OkhttpUtil(MainActivity.this, updataUI);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
okhttpUtil.getImage(URL_IMAGE);
}
}).start();
}
});
}
}
Mode代码:
package com.example.administrator.mvc_mvp_mvvm.MVC.Model;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;
import com.example.administrator.mvc_mvp_mvvm.MVC.Controller.MainActivity;
import java.io.IOException;
import java.io.InputStream;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkhttpUtil implements UpdataUI{
private Context mContext;
private Bitmap bitmap = null;
private UpdataUI updataUI;
public OkhttpUtil(Context context,UpdataUI updataUI) {
mContext = context;
this.updataUI = updataUI;
}
public void getImage(String url) {
OkHttpClient okHttpClient = new OkHttpClient();
final Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
InputStream inputStream = response.body().byteStream();
bitmap = BitmapFactory.decodeStream(inputStream);
//在model层通过接口形式更新ui
updatadate(bitmap);
}
});
}
@Override
public void updatadate(Bitmap bitmap) {
updataUI.updatadate(bitmap);
}
}
接口代码:
package com.example.administrator.mvc_mvp_mvvm.MVC.Model;
import android.graphics.Bitmap;
public interface UpdataUI {
void updatadate(Bitmap bitmap);
}