当下Android开发使用MVP,MVVM使用的非常多,很多网站博客论坛都通过图文详细讲解了各种优缺点。然而感觉图画的再好感觉没有卵用。还是看代码来的直接。
然而发现各家代码写的有些不同,有好几个模板,其实大体都是相同的。都知道Google出了自己家的目标。
这里就简单记录下google家的模板代码写的一个界面。
效果图
最平淡无奇的登录界面。很多文章都有。
代码
代码结构
废话不多说,直接上代码吧。个人感觉文章写的再牛,都不如看过代码自己体验的好。所以只贴代码,不多说。
MainActivity.java就是一个容器
public class MainActivity extends AppCompatActivity {
@BindView(R.id.fl_content)
FrameLayout flContent;
private MainPresenter mainPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
MainFragment mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(R.id.fl_content);
if (mainFragment == null) {
mainFragment = MainFragment.newInstance();
ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), mainFragment, R.id.fl_content);
}
mainPresenter = new MainPresenter(this,mainFragment);
mainFragment.setPresenter(mainPresenter);
}
}
MainFragment.java处理view
public class MainFragment extends Fragment implements MainContract.View {
@BindView(R.id.tiet_user_name)
TextInputEditText tietUserName;
@BindView(R.id.tiet_password)
TextInputEditText tietPassword;
@BindView(R.id.btn_login)
Button btnLogin;
@BindView(R.id.pb_progress_bar)
ProgressBar pbProgressBar;
Unbinder unbinder;
private MainContract.Presenter mPresenter;
public static MainFragment newInstance() {
MainFragment fragment = new MainFragment();
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPresenter = new MainPresenter(getActivity(), this);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@OnClick(R.id.btn_login)
public void login() {
showProgressBar();
mPresenter.login();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
public void showProgressBar() {
pbProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void hideProgressBar() {
pbProgressBar.setVisibility(View.GONE);
}
@Override
public String getUserName() {
return tietUserName.getText().toString().trim();
}
@Override
public String getPassword() {
return tietPassword.getText().toString().trim();
}
@Override
public void setPresenter(MainContract.Presenter presenter) {
mPresenter = presenter;
}
}
MainContract .java定义接口通过接口来处理view,presenter
public interface MainContract {
interface View extends BaseView<Presenter> {
void showProgressBar();
void hideProgressBar();
String getUserName();
String getPassword();
}
interface Presenter extends BasePresenter {
void login();
}
}
MainPresenter .java处理逻辑
public class MainPresenter implements MainContract.Presenter {
private Context context;
private MainContract.View mView;
public MainPresenter(Context context, MainContract.View view) {
this.context = context;
mView = view;
}
@Override
public void login() {
if ("user".equals(mView.getUserName()) && "123".equals(mView.getPassword())) {
ToastUtils.showToast(context, "Login Successfully!");
mView.hideProgressBar();
} else {
ToastUtils.showToast(context, "Sorry,you failed!");
mView.hideProgressBar();
}
}
}
网友评论