/**
* 描述: 网络请求接口回调
*/
public interface HttpCallBack {
void onNetSuccess(String result);//成功
void onNetFailed(String errorMsg);//失败
}
/**
* 描述: 接口
*/
public interface Constant {
String APP_CONFIG = "app_config";//sp文件名字
String IS_LOGIN = "is_login";//判断是否登录
}
/**
* 描述: V层
*/
public interface LoginView {
void onLoginSuccess(String result);
void onLoginFailed(String errorMsg);
}
/**
* 描述: p层
*/
public class LoginPresenter {
private LoginView loginView;
private LoginModel loginModel;
public LoginPresenter(LoginView loginView) {
this.loginView = loginView;
loginModel = new LoginModel();
}
public void login(String mobile, String password) {
loginModel.login(mobile, password, new HttpCallBack() {
@Override
public void onNetSuccess(String result) {
loginView.onLoginSuccess(result);
}
@Override
public void onNetFailed(String errorMsg) {
loginView.onLoginFailed(errorMsg);
}
});
}
}
/**
* 描述: m层
*/
public class LoginModel{
public void login(String mobile, String password, final HttpCallBack callBack){
final String loginUrl = "https://www.zhaoapi.cn/user/login";
new Thread(){
@Override
public void run() {
super.run();
new HttpUtils(new HttpUtils.HttpLinear() {
@Override
public void success(String data) {
Gson gson = new Gson();
LoginBean loginBean = gson.fromJson(data, LoginBean.class);
if (loginBean.getCode() == 0){
callBack.onNetSuccess(loginBean.getData());
}else {
callBack.onNetFailed(loginBean.getMsg());
}
}
@Override
public void fail() {
}
}).get(loginUrl);
}
}.start();
try {
Thread.sleep(5000);
if (!mobile.equals("") && !password.equals("")){
callBack.onNetSuccess("登录成功");
}else {
callBack.onNetFailed("登录失败");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 登录页面
*/
public class LoginActivity extends AppCompatActivity implements LoginView {
/**
* 请输入用户名……
*/
private EditText mEdName;
/**
* 请输入密码……
*/
private EditText mEdPwd;
/**
* 登录
*/
private Button mBtnLogin;
/**
* 注册
*/
private Button mBtnReg;
private LoginPresenter loginPresenter;
ProgressDialog loginProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//初始化控件
initView();
initViewListener();
loginPresenter = new LoginPresenter(LoginActivity.this);
}
private void initViewListener() {
//跳转到主页面
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO: 2018/11/9 点击登录
String mobile = mEdName.getText().toString().trim();
String password = mEdPwd.getText().toString().trim();
if (TextUtils.isEmpty(mobile) || TextUtils.isEmpty(password)) {
Toast.makeText(LoginActivity.this, "账号或密码不能为空!!!", Toast.LENGTH_SHORT).show();
return;
}
loginProgressDialog = ProgressDialog.show(LoginActivity.this, "登录", "正在登录......");
loginProgressDialog.dismiss();
loginPresenter.login(mobile,password);
}
});
//跳转到注册页面
mBtnReg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(LoginActivity.this,RegActivity.class));
finish();
}
});
}
//初始化控件
private void initView() {
mEdName = (EditText) findViewById(R.id.ed_name);
mEdPwd = (EditText) findViewById(R.id.ed_pwd);
mBtnLogin = (Button) findViewById(R.id.btn_login);
mBtnReg = (Button) findViewById(R.id.btn_reg);
}
@Override
public void onLoginSuccess(String result) {
SharedPreferences sp = getSharedPreferences(Constant.APP_CONFIG, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putBoolean(Constant.IS_LOGIN,true);
edit.commit();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoginFailed(final String errorMsg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(LoginActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
}
});
}
}
/**
* 描述: bean 登录返回
*/
public class LoginResponse implements Serializable {
private String age;
private String appkey;
private String appsecret;
private String createtime;
private String email;
private String fans;
private String follow;
private String gender;
private String icon;
private String latitude;
private String longitude;
private String mobile;
private String money;
private String nickname;
private String password;
private String praiseNum;
private String token;
private int uid;
private String userId;
private String username;
}
/**
* 描述: bean
*/
public class LoginBean implements Serializable {
private String msg;
private int code;
private String data;
public String getMsg() {
return msg;
}
public int getCode() {
return code;
}
public String getData() {
return data;
}
}
/**
* 描述: 登录布局
*/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/p"
tools:context=".main.LoginActivity">
<LinearLayout
android:layout_marginTop="100dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/ed_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="40dp"
android:hint="请输入用户名……"
android:textSize="24sp" />
<EditText
android:id="@+id/ed_pwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="40dp"
android:hint="请输入密码……"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<Button
android:id="@+id/btn_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:layout_margin="20dp"
android:textSize="24sp" />
<Button
android:layout_margin="20dp"
android:id="@+id/btn_reg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注册"
android:textSize="24sp" />
</LinearLayout>
</LinearLayout>
/**
* 欢迎页面
*/
public class WelcomeActivity extends AppCompatActivity {
private ViewPager mVP;
private RadioButton mBtn1;
private RadioButton mBtn2;
private RadioButton mBtn3;
private RadioButton mBtn4;
private RadioButton mBtn5;
private RadioButton mBtn6;
private RadioButton mBtn7;
private RadioGroup mRadioGroup;
private ArrayList<Integer> imgIconArrayList;
private MyPagerAdapter mMyPagerAdapter;
private Button mBtnTiao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
//初始化控件
initView();
//创建页面的集合
imgIconArrayList = new ArrayList<>();
imgIconArrayList.add(R.drawable.yi);
imgIconArrayList.add(R.drawable.er);
imgIconArrayList.add(R.drawable.san);
/* imgIconArrayList.add(R.drawable.si);
imgIconArrayList.add(R.drawable.wu);
imgIconArrayList.add(R.drawable.liu);
imgIconArrayList.add(R.drawable.ri);*/
//设置适配器
mMyPagerAdapter = new MyPagerAdapter(imgIconArrayList, this);
mVP.setAdapter(mMyPagerAdapter);
//切换页面、RadioButton跟着切换
mVP.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
mRadioGroup.check(mRadioGroup.getChildAt(position % imgIconArrayList.size()).getId());
if (position == imgIconArrayList.size()-1) {
mBtnTiao.setVisibility(View.VISIBLE);
}else {
mBtnTiao.setVisibility(View.GONE);
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//跳转
mBtnTiao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(WelcomeActivity.this,LoginActivity.class));
finish();
}
});
}
//初始化控件
private void initView() {
mVP = (ViewPager) findViewById(R.id.v_p);
mBtn1 = (RadioButton) findViewById(R.id.btn_1);
mBtn2 = (RadioButton) findViewById(R.id.btn_2);
mBtn3 = (RadioButton) findViewById(R.id.btn_3);
/* mBtn4 = (RadioButton) findViewById(R.id.btn_4);
mBtn5 = (RadioButton) findViewById(R.id.btn_5);
mBtn6 = (RadioButton) findViewById(R.id.btn_6);
mBtn7 = (RadioButton) findViewById(R.id.btn_7);*/
mBtnTiao = (Button) findViewById(R.id.btn_tiao);
mRadioGroup = (RadioGroup) findViewById(R.id.radio_group);
}
}
/** * 描述: PagerAdapter */ public class MyPagerAdapter extends PagerAdapter { private List<Integer> list; private Context context; public MyPagerAdapter(List<Integer> list, Context context) { super(); this.list = list; this.context = context; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { ImageView imageView = new ImageView(context); imageView.setImageResource(list.get(position%list.size())); imageView.setScaleType(ImageView.ScaleType.FIT_XY); container.addView(imageView); return imageView; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView((View) object); } }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".main.WelcomeActivity">
<android.support.v4.view.ViewPager
android:id="@+id/v_p"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio_group"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:paddingBottom="10dp"
>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_1"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_2"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_3"
/>
<!--<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_4"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_5"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_6"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_7"
/>-->
</RadioGroup>
<Button
android:id="@+id/btn_tiao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="72dp"
android:visibility="gone"
android:text="立即体验"
android:textSize="24sp" />
</RelativeLayout>