mvc demo

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值