commit b426f30eada2da2d02ed06343b3bf5d34e2a94bb Author: fangshicai <1312964935@qq.com> Date: Thu Jun 9 22:47:04 2022 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..e2e256a --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..3e0364f --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..ff3888f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..b8c7d72 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,54 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 32 + + defaultConfig { + applicationId "com.android" + minSdk 21 + targetSdk 32 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.6.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + + // okhttp + implementation('com.squareup.okhttp3:okhttp:5.0.0-alpha.7') + implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.github.bumptech.glide:glide:4.13.2' + + + //rxjava3 + implementation 'io.reactivex.rxjava3:rxjava:3.1.1' + implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' + implementation 'com.github.liujingxing.rxlife:rxlife-rxjava3:2.2.1' //管理RxJava3生命周期,页面销毁,关闭请求 + //retrofit2 + implementation 'com.squareup.retrofit2:retrofit:2.7.0' + implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' + // 支持Gson解析 + implementation 'com.squareup.retrofit2:converter-gson:2.1.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/android/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/android/ExampleInstrumentedTest.java new file mode 100644 index 0000000..1fabb6c --- /dev/null +++ b/app/src/androidTest/java/com/android/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.android; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.android", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..6d80f3a --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/android/MainActivity.java b/app/src/main/java/com/android/MainActivity.java new file mode 100644 index 0000000..c9dcd5d --- /dev/null +++ b/app/src/main/java/com/android/MainActivity.java @@ -0,0 +1,34 @@ +package com.android; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import android.util.Log; +import android.view.View; + +import com.android.bean.ResponseData; +import com.android.bean.User; +import com.android.model.LoginListener; +import com.android.model.LoginModel; +import com.android.model.LoginModelImpl; +import com.android.model.longinHttp_Interface; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; + +public class MainActivity extends AppCompatActivity{ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/HomePageActivity.java b/app/src/main/java/com/android/activity/HomePageActivity.java new file mode 100644 index 0000000..fded617 --- /dev/null +++ b/app/src/main/java/com/android/activity/HomePageActivity.java @@ -0,0 +1,16 @@ +package com.android.activity; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +import com.android.R; + +public class HomePageActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_home_page); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/LoginActivity.java b/app/src/main/java/com/android/activity/LoginActivity.java new file mode 100644 index 0000000..d721baf --- /dev/null +++ b/app/src/main/java/com/android/activity/LoginActivity.java @@ -0,0 +1,78 @@ +package com.android.activity; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.android.R; +import com.android.bean.ResponseData; +import com.android.bean.User; +import com.android.model.LoginListener; +import com.android.model.LoginModel; +import com.android.model.LoginModelImpl; + +public class LoginActivity extends AppCompatActivity implements LoginListener, View.OnClickListener { + private static final String TAG ="LoginActivity"; + + private ResponseData responseData; + private EditText etPwd; + private EditText etAccount; + private Button LoginButton; + + private String account; + private String password; + private LoginModel loginModel = null; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + + loginModel = new LoginModelImpl(); + + etPwd = findViewById(R.id.et_pwd); + etAccount = findViewById(R.id.et_acc); + + LoginButton = findViewById(R.id.bt_login); + + LoginButton.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + account = etAccount.getText().toString(); + password = etPwd.getText().toString(); + loginModel.longin(account,password,this); + + } + + @Override + public void onSuccess(ResponseData responseData) { + + this.responseData = responseData; + login(); + + } + + private void login() { + if(responseData.getCode() == 200){ + Intent intent = new Intent(LoginActivity.this,HomePageActivity.class); + startActivity(intent); + }else { + Toast.makeText(LoginActivity.this,"账号或密码错误",Toast.LENGTH_SHORT); + } + } + + + @Override + public void onError() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/bean/ResponseData.java b/app/src/main/java/com/android/bean/ResponseData.java new file mode 100644 index 0000000..ded6c98 --- /dev/null +++ b/app/src/main/java/com/android/bean/ResponseData.java @@ -0,0 +1,31 @@ +package com.android.bean; + +public class ResponseData { + private int code; + private String msg; + private T data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/android/bean/User.java b/app/src/main/java/com/android/bean/User.java new file mode 100644 index 0000000..cfc36f0 --- /dev/null +++ b/app/src/main/java/com/android/bean/User.java @@ -0,0 +1,32 @@ +package com.android.bean; + +public class User { + + private Integer id; + private String password; + private String userName; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/app/src/main/java/com/android/model/LoginListener.java b/app/src/main/java/com/android/model/LoginListener.java new file mode 100644 index 0000000..6812722 --- /dev/null +++ b/app/src/main/java/com/android/model/LoginListener.java @@ -0,0 +1,10 @@ +package com.android.model; + +import com.android.bean.ResponseData; +import com.android.bean.User; + +public interface LoginListener { + void onSuccess(ResponseData responseData); + void onError(); + +} diff --git a/app/src/main/java/com/android/model/LoginModel.java b/app/src/main/java/com/android/model/LoginModel.java new file mode 100644 index 0000000..df288d9 --- /dev/null +++ b/app/src/main/java/com/android/model/LoginModel.java @@ -0,0 +1,5 @@ +package com.android.model; + +public interface LoginModel { + void longin(String account,String password,LoginListener loginListener); +} diff --git a/app/src/main/java/com/android/model/LoginModelImpl.java b/app/src/main/java/com/android/model/LoginModelImpl.java new file mode 100644 index 0000000..620ff03 --- /dev/null +++ b/app/src/main/java/com/android/model/LoginModelImpl.java @@ -0,0 +1,60 @@ +package com.android.model; + +import android.util.Log; +import android.view.View; + +import com.android.bean.ResponseData; +import com.android.bean.User; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; + +public class LoginModelImpl implements LoginModel{ + private final static String TAG = "LoginModelImpl"; + @Override + public void longin(String account,String password,final LoginListener loginListener) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://47.107.52.7:88/member/") + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) + .build(); + + longinHttp_Interface request = retrofit.create(longinHttp_Interface.class); + + Observable> observable = + request.getObservableTest(password, account); + + + observable + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull ResponseData userResponseData) { + loginListener.onSuccess(userResponseData); + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } +} diff --git a/app/src/main/java/com/android/model/longinHttp_Interface.java b/app/src/main/java/com/android/model/longinHttp_Interface.java new file mode 100644 index 0000000..7bc1d02 --- /dev/null +++ b/app/src/main/java/com/android/model/longinHttp_Interface.java @@ -0,0 +1,39 @@ +package com.android.model; + + +import com.android.bean.ResponseData; +import com.android.bean.User; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Headers; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/* +"http://47.107.52.7:88/member/photo/user/login?password=123456&username=fangshicai" + */ +public interface longinHttp_Interface { + @GET("demo/login") +// @FormUrlEncoded + @Headers({"appId:46351c5d3fdd44a084167c7186772a2e","appSecret:21671c3772dd71d3340f3ae77355421aa335f"}) + Call> service(@Query("password") String password + , @Query("username") String username + ); + + @POST("demo/create") +// @FormUrlEncoded + @Headers({"appId:46351c5d3fdd44a084167c7186772a2e","appSecret:21671c3772dd71d3340f3ae77355421aa335f"}) + Call> rejest(@Body User user); + + + @GET("demo/login") + @Headers({"appId:46351c5d3fdd44a084167c7186772a2e","appSecret:21671c3772dd71d3340f3ae77355421aa335f"}) + Observable> getObservableTest(@Query("password") String password + , @Query("username") String username + ); + + +} diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_home_page.xml b/app/src/main/res/layout/activity_home_page.xml new file mode 100644 index 0000000..9a15f40 --- /dev/null +++ b/app/src/main/res/layout/activity_home_page.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..f6907e5 --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,34 @@ + + + + +