登录 注册的 Retrofit+RxJava+OKhttp框架

//布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.bwei.www.fjd.activity.LoginActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/cha_back"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_marginLeft="15dp"
            android:background="@drawable/close"
            android:padding="13dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="490dp"
            android:layout_marginRight="15dp"
            android:text="客服"
            android:textSize="19dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:gravity="center">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@drawable/root" />
    </LinearLayout>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <EditText
        android:hint="用户名/邮箱/手机号"
        android:id="@+id/ed_mobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
<EditText
    android:id="@+id/ed_password"
    android:password="true"
    android:hint="请输入密码"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
    <TextView
        android:paddingTop="5dp"
        android:layout_marginLeft="12dp"
        android:text="忘记密码"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
    android:paddingTop="13dp"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <Button
        android:text="登录"
        android:id="@+id/btn_login"
        android:background="@drawable/bg_yuan"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:textSize="13dp"
            android:text="短信验证登录"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:padding="14dp" />

        <TextView
            android:id="@+id/txt_regist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="350dp"
            android:layout_marginRight="15dp"
            android:text="新用户注册"
            android:textSize="14dp" />

    </LinearLayout>
    <TextView
        android:layout_marginTop="250dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="--------------------------------第三方登录------------------------------"
        android:gravity="center"

        />
    <ImageView
        android:id="@+id/dsf"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dp"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="QQ登录"
        android:gravity="center"
        android:layout_margin="5dp"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录及代表您已同意《京东隐私政策》"
        android:gravity="center"
        android:layout_margin="5dp"
        />


</LinearLayout>

//写一个API

//然后MVP

// 然后 登录的Activity

package com.bwei.www.fjd.activity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bwei.www.fjd.R;
import com.bwei.www.fjd.bean.LoginBean;
import com.bwei.www.fjd.presenter.LoginPresenter;
import com.bwei.www.fjd.view.LoginView;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class LoginActivity extends AppCompatActivity implements LoginView {
    @BindView(R.id.cha_back)
    ImageView chaBack;
    @BindView(R.id.ed_mobile)
    EditText edMobile;
    @BindView(R.id.ed_password)
    EditText edPassword;
    @BindView(R.id.btn_login)
    Button btnLogin;
    @BindView(R.id.txt_regist)
    TextView txtRegist;
    @BindView(R.id.dsf)
    ImageView dsf;
    private String mobile;
    private String password;
    private LoginPresenter presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);

        presenter = new LoginPresenter();
        presenter.attach(this);
    }

    @Override
    public void success(LoginBean loginBean) {
        Toast.makeText(this, "登录成功", Toast.LENGTH_LONG).show();
        SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
        sp.edit().putString("username", loginBean.getData().getUsername()).putString("login", "true").putInt("uid", loginBean.getData().getUid()).commit();
        finish();
    }

    @Override
    public void failed(Throwable t) {
        Toast.makeText(this, "登录失败", Toast.LENGTH_LONG).show();
    }

    @OnClick({R.id.cha_back, R.id.ed_mobile, R.id.ed_password, R.id.btn_login, R.id.txt_regist, R.id.dsf})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.cha_back:
                finish();
                break;
            case R.id.ed_mobile:

                break;
            case R.id.ed_password:
                break;
            case R.id.btn_login:
                mobile = edMobile.getText().toString().trim();
                password = edPassword.getText().toString();
                if (!TextUtils.isEmpty(mobile) && !TextUtils.isEmpty(password)) {
                    if (mobile.length() != 11) {
                        Toast.makeText(this, "请核查手机号是否正确", Toast.LENGTH_LONG).show();
                    } else {
                        presenter.login(mobile, password);

                    }
                } else {
                    Toast.makeText(this, "手机号或密码不能为空", Toast.LENGTH_LONG).show();
                }
                break;
            case R.id.txt_regist:
                Intent intent = new Intent(this, RegistActivity.class);
                startActivity(intent);
                break;
            case R.id.dsf:
                break;
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (presenter != null) {
            presenter.detach();
        }
    }
}

//注册页面的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/txt_regist_back"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_alignParentLeft="true"
            android:text="返回" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_centerHorizontal="true"
            android:text="手机快速注册" />

        <TextView
            android:id="@+id/txt_qiyezhuce"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_margin="10dp"
            android:text="企业注册" />
    </RelativeLayout>

    <EditText
        android:id="@+id/txt_regist_mobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入手机号" />
    <EditText
        android:id="@+id/txt_regist_password"
        android:layout_width="match_parent"
        android:inputType="textPassword"
        android:layout_height="wrap_content"
        android:hint="请输入密码" />
    <Button
        android:id="@+id/btn_regist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册"/>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/lef"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="遇到问题?你可以"/>
        <TextView
            android:id="@+id/txt_lianxikefu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/lef"
            android:textColor="#536bdf"
            android:text="联系客服"/>
    </RelativeLayout>


</LinearLayout>

//注册页面的主页面

package com.bwei.www.fjd.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.bwei.www.fjd.R;
import com.bwei.www.fjd.bean.RegistBean;
import com.bwei.www.fjd.presenter.RegistPresenter;
import com.bwei.www.fjd.view.RegistView;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class RegistActivity extends AppCompatActivity implements RegistView{

    @BindView(R.id.txt_regist_back)
    TextView txtRegistBack;
    @BindView(R.id.txt_qiyezhuce)
    TextView txtQiyezhuce;
    @BindView(R.id.txt_regist_mobile)
    EditText txtRegistMobile;
    @BindView(R.id.txt_regist_password)
    EditText txtRegistPassword;
    @BindView(R.id.btn_regist)
    Button btnRegist;
    @BindView(R.id.lef)
    TextView lef;
    @BindView(R.id.txt_lianxikefu)
    TextView txtLianxikefu;
    private RegistPresenter presenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_regist);
        ButterKnife.bind(this);
        presenter = new RegistPresenter();
        presenter.attach(this);

    }

    @OnClick({R.id.txt_regist_back, R.id.btn_regist})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.txt_regist_back:
                finish();
                break;
            case R.id.btn_regist:

                String mobile = txtRegistMobile.getText().toString().trim();
                String password = txtRegistPassword.getText().toString();
                if (!TextUtils.isEmpty(mobile) && !TextUtils.isEmpty(password)) {
                    if (mobile.length() != 11) {
                        Toast.makeText(this, "请核查手机号是否正确", Toast.LENGTH_LONG).show();
                    } else {
                        presenter.regist(mobile,password);

                    }
                } else {
                    Toast.makeText(this, "手机号或密码不能为空", Toast.LENGTH_LONG).show();
                }
                break;
        }
    }

    @Override
    public void success(RegistBean registBean) {
        Toast.makeText(this, "注册成功", Toast.LENGTH_LONG).show();
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
        finish();
    }

    @Override
    public void failed(Exception e) {
        Toast.makeText(this, "注册失败,请重新注册" + e, Toast.LENGTH_LONG).show();
    }
}

//API

//登录的MVP

//view

//model

//presenter

package com.bwei.www.fjd.presenter;

import com.bwei.www.fjd.bean.LoginBean;
import com.bwei.www.fjd.model.LoginModel;
import com.bwei.www.fjd.view.LoginView;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

/**
 * Created by asus on 2018/11/14.
 */

public class LoginPresenter {
    private LoginModel model;
    private LoginView iv;

    public void attach(LoginView iv){
        this.iv = iv;
        model = new LoginModel();
    }


    public void detach(){
        if (iv != null){
            iv = null;
        }
    }
    public void login(String mobile,String password){
        model.login(mobile,password)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<LoginBean>() {
                    @Override
                    public void accept(LoginBean loginBean) throws Exception {
                        if (loginBean != null && "0".equals(loginBean.getCode())) {
                            if (iv != null) {
                                iv.success(loginBean);
                                return;
                            }
                        }
                        if (iv != null) {
                            iv.failed(new Exception("服务器未响应"));
                        }
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        if (iv != null){
                            iv.failed(new Exception("网络异常"));
                        }
                    }
                });

    }
}

//注册的MVP

//view

//

 //model

//presenter

package com.bwei.www.fjd.presenter;

import com.bwei.www.fjd.bean.RegistBean;
import com.bwei.www.fjd.model.RegistModel;
import com.bwei.www.fjd.view.RegistView;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

/**
 * Created by asus on 2018/11/14.
 */

public class RegistPresenter {
    private RegistModel model;
    private RegistView iv;

    public void attach(RegistView iv){
        this.iv = iv;
        model = new RegistModel();
    }
    public void regist(String mobile,String password){
        model.regist(mobile, password)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<RegistBean>() {
                    @Override
                    public void accept(RegistBean registBean) throws Exception {
                        if (registBean != null && "1".equals(registBean.getCode())) {
                            if (iv != null) {
                                iv.success(registBean);
                            }
                            return;
                        }
                        if (iv != null) {
                            iv.failed(new Exception("服务器未响应"));
                        }
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        if (iv != null){
                            iv.failed(new Exception("网络请求失败"));
                        }
                    }
                });
    }

}

//退出登录的代码

package com.bwei.www.fjd.activity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bwei.www.fjd.R;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class CloseActivity extends AppCompatActivity {

    @BindView(R.id.img_return)
    ImageView imgReturn;
    @BindView(R.id.txt_service)
    TextView txtService;
    @BindView(R.id.img_head)
    ImageView imgHead;
    @BindView(R.id.txt_name)
    TextView txtName;
    @BindView(R.id.ll_login)
    LinearLayout llLogin;
    @BindView(R.id.btn_logout)
    Button btnLogout;
    @BindView(R.id.address)
    TextView address;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_close);
        ButterKnife.bind(this);
        SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
        String username = sp.getString("username", null);
        txtName.setText(username);
    }

    @OnClick({R.id.img_return, R.id.btn_logout})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.img_return:
                finish();
                break;
            case R.id.btn_logout:
                SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
                sp.edit().putString("login", "false").commit();
                finish();
                break;
        }
    }
}

我的页面Fragment

package com.bwei.www.fjd.fragment;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.bwei.www.fjd.R;
import com.bwei.www.fjd.activity.CloseActivity;
import com.bwei.www.fjd.activity.LoginActivity;
import com.bwei.www.fjd.activity.WebViewActivity;
import com.bwei.www.fjd.adapter.TuiAdapter;
import com.bwei.www.fjd.bean.TuiBean;
import com.bwei.www.fjd.presenter.TuiPresenter;
import com.bwei.www.fjd.view.ITuiView;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;

/**
 * Created by asus on 2018/11/7.
 */

public class MineFragment extends Fragment implements ITuiView {

    @BindView(R.id.img_head)
    SimpleDraweeView imgHead;
    @BindView(R.id.txt_head)
    TextView txtHead;
    Unbinder unbinder;
    @BindView(R.id.tui)
    RecyclerView tui;
    private List<TuiBean.DataBean.TuijianBean.ListBeanX> list;
    private TuiAdapter adapter;
    private TuiPresenter tuiPresenter;
    private SharedPreferences sp;
    private String login;
    private String username;
    private Intent intent;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.item_mine, container, false);
        unbinder = ButterKnife.bind(this, v);
        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        tuiPresenter = new TuiPresenter();
        tuiPresenter.attach(this);
        GridLayoutManager manager = new GridLayoutManager(getActivity(),2);
        tui.setLayoutManager(manager);
        tuiPresenter.getTui();

        list = new ArrayList<>();
        adapter = new TuiAdapter(list,getContext());
        tui.setAdapter(adapter);
        //点击条目跳转详情页面
        adapter.setOnItemClickListener(new TuiAdapter.OnItemClickListener() {
            @Override
            public void OnClick(int position, View view) {
                TuiBean.DataBean.TuijianBean.ListBeanX listBeanX = list.get(position);
                Intent intent = new Intent(getActivity(), WebViewActivity.class);
                //传对应的url和pid
                intent.putExtra("url", listBeanX.getDetailUrl());
                //intent.putExtra("pid", listBeanX.getPid());
                startActivity(intent);

            }
        });

    }

    @Override
    public void onResume() {
        super.onResume();
        sp = getActivity().getSharedPreferences("config", Context.MODE_PRIVATE);
        username = sp.getString("username", null);
        login = sp.getString("login", "");
        if (login.equals("true")) {
            txtHead.setText(username);
        } else {
            txtHead.setText("登录/注册>");
        }
    }
//    @OnClick(R.id.txt_head)
//    public void onViewClicked(View view) {
//        switch (view.getId()){
//            case R.id.txt_head:
//                if (login.equals("true")){
//                    intent = new Intent(getContext(), CloseActivity.class);
//                    startActivity(intent);
//                }else {
//                    intent = new Intent(getContext(), LoginActivity.class);
//                    startActivity(intent);
//                }
//
//                break;
//        }
//    }
    @OnClick({R.id.img_head, R.id.txt_head})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.img_head:
                Intent intent = new Intent(getContext(), LoginActivity.class);
                startActivity(intent);

                break;
            case R.id.txt_head:
                Intent intent2 = new Intent(getContext(), CloseActivity.class);
                startActivity(intent2);
                break;
        }
    }
    @Override
    public void getTui(TuiBean tuiBean) {
        list.clear();
        list.addAll(tuiBean.getData().getTuijian().getList());
        adapter.notifyDataSetChanged();

    }

    @Override
    public void failed(Throwable t) {
        Toast.makeText(getContext(),""+t.getMessage(),Toast.LENGTH_LONG).show();
    }
    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
        if (tuiPresenter!= null){
            tuiPresenter.detach();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值