From 58a4a54c62c65cab92c85fd3edeff832e4572ead Mon Sep 17 00:00:00 2001 From: nilupeng <qingingrunt2010@qq.com> Date: Tue, 09 Aug 2022 10:59:47 +0000 Subject: [PATCH] gson 转换日期问题 接入登录接口 修改图标和启动页 --- app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java | 13 - app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java | 5 app/src/main/res/drawable/ic_launcher_background.xml | 134 ++++++++-------- app/src/main/res/drawable/ic_home_black_24dp.xml | 9 + app/src/main/res/mipmap-hdpi/ic_launcher_round.webp | 0 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp | 0 app/src/main/res/drawable/ic_dashboard_black_24dp.xml | 9 + app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java | 30 ++- app/src/main/java/com/runt/open/mvvm/ui/login/UserBean.java | 41 ----- app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java | 19 +- app/src/main/res/drawable-v24/ic_launcher_foreground.xml | 30 +++ app/src/main/res/mipmap-xxhdpi/ic_launcher.webp | 0 app/build.gradle | 12 - app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp | 0 app/src/main/res/layout/activity_splash.xml | 14 + app/src/main/AndroidManifest.xml | 2 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp | 0 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml | 5 app/src/main/res/mipmap-xhdpi/ic_launcher.webp | 0 app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java | 26 ++ app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp | 0 /dev/null | 0 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp | 0 app/src/main/res/drawable/ic_notifications_black_24dp.xml | 9 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | 0 app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonResponseBodyConverter.java | 85 ++++++++++ app/src/main/res/layout/activity_login.xml | 2 app/src/main/java/com/runt/open/mvvm/data/Results.java | 4 app/src/main/res/mipmap-mdpi/ic_launcher.webp | 0 app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java | 23 +- 31 files changed, 297 insertions(+), 180 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 306004b..085af32 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,7 +18,7 @@ buildTypes { debug{ minifyEnabled false - buildConfigField 'String','HOST_IP_ADDR','"http://192.168.110.116:8080/"' + buildConfigField 'String','HOST_IP_ADDR','"http://192.168.110.134:8080/"' resValue "string", "app_name", "MVVM OPEN TEST" proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } @@ -38,14 +38,8 @@ } android.applicationVariants.all { variant -> variant.outputs.all { - def viron - - if (buildType.name.equals('release')) { - viron = "正式版"; - }else if (buildType.name.equals('debug')) { - viron = "开发版"; - } - outputFileName = "MVVM开源项目-" + viron + "-v" + + def viron = name + outputFileName = "MVVM-OPEN-" + viron + "-v" + defaultConfig.versionName +"-" + defaultConfig.versionCode +"-" + new Date().format("MMddHHmm", TimeZone.getTimeZone("UTC"))+ ".apk" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f076df2..8b509b3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,7 +25,7 @@ <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <application android:allowBackup="true" - android:icon="@mipmap/app_icon" + android:icon="@mipmap/ic_launcher" android:name=".MyApplication" android:label="@string/app_name" android:supportsRtl="true" diff --git a/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java index a7d4c8d..0b2b797 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java @@ -10,23 +10,18 @@ import android.os.Build; import android.os.Bundle; import android.os.Environment; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; +import android.util.Log; +import android.view.*; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; - import androidx.annotation.ColorRes; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.ViewModelProvider; import androidx.viewbinding.ViewBinding; - import com.permissionx.guolindev.PermissionX; import com.runt.open.mvvm.MyApplication; import com.runt.open.mvvm.R; @@ -35,13 +30,12 @@ import com.runt.open.mvvm.listener.ResPonse; import com.runt.open.mvvm.util.PreferencesUtils; import com.runt.open.mvvm.widgets.TitleBarView; +import dmax.dialog.SpotsDialog; import java.io.File; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.util.Set; - -import dmax.dialog.SpotsDialog; /** * activity 封装 @@ -393,6 +387,7 @@ } } public void showToast(String message){ + Log.i(TAG,"showToast "+message); runOnUiThread(() -> Toast.makeText(mContext,message,Toast.LENGTH_SHORT).show()); } diff --git a/app/src/main/java/com/runt/open/mvvm/data/Results.java b/app/src/main/java/com/runt/open/mvvm/data/Results.java index ff2330d..572d453 100644 --- a/app/src/main/java/com/runt/open/mvvm/data/Results.java +++ b/app/src/main/java/com/runt/open/mvvm/data/Results.java @@ -1,15 +1,11 @@ package com.runt.open.mvvm.data; -import com.runt.open.mvvm.ui.login.UserBean; - /** * My father is Object, ites purpose of * * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/1/29. */ public class Results { - - public static class LoggedInUser extends HttpApiResult<UserBean> { } public static class StringApiResult extends HttpApiResult<String> { } diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java index 6c5e50b..2c5b8d4 100644 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java @@ -4,6 +4,7 @@ import com.runt.open.mvvm.data.HttpApiResult; import com.runt.open.mvvm.data.Results; +import com.runt.open.mvvm.ui.login.UserBean; import io.reactivex.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; @@ -22,7 +23,7 @@ */ @FormUrlEncoded @POST("login") - Observable<Results.LoggedInUser> login(@Field(Configuration.KEY_PHONE) String phone, @Field("pass") String pass); + Observable<HttpApiResult<UserBean>> login(@Field(Configuration.KEY_PHONE) String phone, @Field("pass") String pass); /** * 验证码登录 @@ -32,7 +33,7 @@ */ @FormUrlEncoded @POST("loginCode") - Observable<Results.LoggedInUser> loginByCode(@Field(Configuration.KEY_PHONE) String phone, @Field(Configuration.KEY_CODE) String code); + Observable<HttpApiResult<UserBean>> loginByCode(@Field(Configuration.KEY_PHONE) String phone, @Field(Configuration.KEY_CODE) String code); @FormUrlEncoded diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java deleted file mode 100644 index 5d02452..0000000 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.runt.open.mvvm.retrofit.converter; - -import android.util.Log; - -import com.google.gson.Gson; -import com.google.gson.JsonIOException; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonToken; -import com.runt.open.mvvm.data.HttpApiResult; -import com.runt.open.mvvm.util.GsonUtils; - -import org.json.JSONException; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.Charset; - -import okhttp3.ResponseBody; -import retrofit2.Converter; - -/** - * My father is Object, ites purpose of 解密gson转换器 - * - * @purpose Created by Runt (qingingrunt2010@qq.com) on 2021-7-22. - */ - -public class DecryptGsonResponseBodyConverter<T> implements Converter<ResponseBody, T> { - private final Gson gson; - private final TypeAdapter<T> adapter; - private final Charset UTF_8 = Charset.forName("UTF-8"); - private final boolean transHump;//驼峰转换 - - public DecryptGsonResponseBodyConverter(Gson gson, TypeAdapter<T> adapter, boolean transHump) { - this.gson = gson; - this.adapter = adapter; - this.transHump = transHump; - } - - @Override - public T convert(ResponseBody value) throws IOException { - String response = null; - try { - String val = new String(value.bytes(),UTF_8); - Log.e("Converter","val body:"+val); - response = transHump? GsonUtils.toHumpJson(val):val; - } catch (JSONException e) { - e.printStackTrace(); - HttpApiResult apiResult = new HttpApiResult<>(); - apiResult.code = 414; - apiResult.msg = "非标准json"; - response = new Gson().toJson(apiResult); - }catch (Exception e){ - JsonReader jsonReader = gson.newJsonReader(value.charStream()); - return adapter.read(jsonReader); - } finally { - InputStream inputStream = new ByteArrayInputStream(response.getBytes()); - JsonReader jsonReader = gson.newJsonReader(new InputStreamReader(inputStream, UTF_8)); - T result = adapter.read(jsonReader); - if (jsonReader.peek() != JsonToken.END_DOCUMENT) { - throw new JsonIOException("JSON document was not fully consumed."); - } - value.close(); - return result; - } - } - - -} diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java index c613f3e..f240d4f 100644 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java @@ -1,16 +1,17 @@ package com.runt.open.mvvm.retrofit.converter; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; import com.google.gson.reflect.TypeToken; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; - +import com.runt.open.mvvm.data.HttpApiResult; import okhttp3.RequestBody; import okhttp3.ResponseBody; import retrofit2.Converter; import retrofit2.Retrofit; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; /** * My father is Object, ites purpose of 解密gson转换 @@ -20,11 +21,11 @@ public class GsonConverterFactory extends Converter.Factory { public static GsonConverterFactory create() { - return create(new Gson(),false); + return create(false); } public static GsonConverterFactory create(boolean transHump) { - return create(new Gson(),transHump); + return create(new GsonBuilder().setDateFormat("MMMM dd, yyyy, HH:mm:ss").create(),transHump); } @@ -43,10 +44,10 @@ } @Override - public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, + public Converter<ResponseBody, ? extends HttpApiResult> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { - TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); - return new DecryptGsonResponseBodyConverter<>(gson, adapter,transHump); + TypeAdapter<? extends HttpApiResult> adapter = (TypeAdapter<? extends HttpApiResult>) gson.getAdapter(TypeToken.get(type)); + return new GsonResponseBodyConverter<>(gson, adapter,transHump); } @Override diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonResponseBodyConverter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonResponseBodyConverter.java new file mode 100644 index 0000000..62b09f8 --- /dev/null +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonResponseBodyConverter.java @@ -0,0 +1,85 @@ +package com.runt.open.mvvm.retrofit.converter; + +import android.util.Log; +import com.google.gson.Gson; +import com.google.gson.JsonIOException; +import com.google.gson.JsonSyntaxException; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.runt.open.mvvm.data.HttpApiResult; +import com.runt.open.mvvm.util.GsonUtils; +import okhttp3.ResponseBody; +import org.json.JSONException; +import retrofit2.Converter; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.Charset; + +/** + * My father is Object, ites purpose of 解密gson转换器 + * + * @purpose Created by Runt (qingingrunt2010@qq.com) on 2021-7-22. + */ + +public class GsonResponseBodyConverter<T extends HttpApiResult> implements Converter<ResponseBody, T> { + private final Gson gson; + private final TypeAdapter<T> adapter; + private final Charset UTF_8 = Charset.forName("UTF-8"); + private final boolean transHump;//驼峰转换 + + public GsonResponseBodyConverter(Gson gson, TypeAdapter<T> adapter, boolean transHump) { + this.gson = gson; + this.adapter = adapter; + this.transHump = transHump; + } + + @Override + public T convert(ResponseBody value) throws IOException { + T result = null; + String response = null; + try { + String val = new String(value.bytes(),UTF_8); + Log.e("Converter","val body:"+val); + response = transHump? GsonUtils.toHumpJson(val):val; + result = readString(response); + } catch (Throwable e) { + e.printStackTrace(); + Log.e("Converter","Throwable 数据类型转换错误 "+e); + HttpApiResult apiResult = new HttpApiResult<>(); + apiResult.data = response; + if(e instanceof JSONException){ + Log.e("Converter","Throwable 非标准json "+e); + apiResult.code = 1014; + apiResult.msg = "非标准json"; + }else if(e instanceof JsonSyntaxException){ + Log.e("Converter","Throwable 数据类型转换错误 "+e); + apiResult.code = 1015; + apiResult.msg = "数据类型转换错误"; + }else { + apiResult.code = 1016; + apiResult.msg = "类型转换错误"+e.getMessage(); + Log.e("Converter","Throwable "+e); + } + response = new Gson().toJson(apiResult); + result = readString(response); + } finally { + value.close(); + return result; + } + } + + private T readString(String str) throws IOException { + InputStream inputStream = new ByteArrayInputStream(str.getBytes()); + JsonReader jsonReader = gson.newJsonReader(new InputStreamReader(inputStream, UTF_8)); + T result = adapter.read(jsonReader); + if (jsonReader.peek() != JsonToken.END_DOCUMENT) { + throw new JsonIOException("JSON document was not fully consumed."); + } + return result; + } + +} diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java b/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java index a99f74e..c9e3760 100644 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java @@ -1,9 +1,12 @@ package com.runt.open.mvvm.retrofit.observable; import android.util.Log; - import com.google.gson.Gson; +import com.runt.open.mvvm.base.activities.BaseActivity; import com.runt.open.mvvm.data.HttpApiResult; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import retrofit2.adapter.rxjava2.HttpException; import java.net.ConnectException; import java.net.SocketTimeoutException; @@ -11,15 +14,20 @@ import java.util.concurrent.TimeoutException; import java.util.regex.Pattern; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import retrofit2.adapter.rxjava2.HttpException; - /** * 网络请求观察 * Created by Administrator on 2021/11/11 0011. */ public abstract class HttpObserver<RESULT> implements Observer<HttpApiResult<RESULT>> { + + BaseActivity activity; + + public HttpObserver() { + } + + public HttpObserver(BaseActivity activity) { + this.activity = activity; + } final String TAG = "HttpObserver"; @@ -40,7 +48,6 @@ @Override public void onError(Throwable e) { - e.printStackTrace(); Log.e(TAG,"onError "+e.getMessage()+" "+hashCode()); int code = 600; String msg = "网络请求失败,请检查网络或稍后重试"; @@ -66,6 +73,11 @@ protected abstract void onSuccess(RESULT data); - protected void onFailed(HttpApiResult httpResult){} + protected void onFailed(HttpApiResult error){ + Log.i(TAG,"onFailed "+activity); + if(activity != null){ + activity.showToast(error.msg); + } + } } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java index eaa678a..80addfe 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java @@ -1,19 +1,18 @@ package com.runt.open.mvvm.ui.login; import androidx.lifecycle.MutableLiveData; - +import com.runt.open.mvvm.base.activities.BaseActivity; import com.runt.open.mvvm.base.model.BaseViewModel; import com.runt.open.mvvm.data.HttpApiResult; import com.runt.open.mvvm.data.Results; import com.runt.open.mvvm.retrofit.api.LoginApiCenter; import com.runt.open.mvvm.retrofit.observable.HttpObserver; import com.runt.open.mvvm.retrofit.utils.RetrofitUtils; +import io.reactivex.Observable; import java.util.ArrayList; import java.util.Date; import java.util.List; - -import io.reactivex.Observable; /** * Created by Administrator on 2021/11/15 0015. @@ -26,17 +25,24 @@ loginApi = RetrofitUtils.getInstance().getRetrofit(LoginApiCenter.class); } - MutableLiveData<Results.LoggedInUser> loginResult = new MutableLiveData<>(); + MutableLiveData<UserBean> loginResult = new MutableLiveData<>(); MutableLiveData<Integer> verifyResult = new MutableLiveData<>(); MutableLiveData<Results.StringApiResult> resetResult = new MutableLiveData<>(); MutableLiveData<Results.StringApiResult> registerResult = new MutableLiveData<>(); - HttpObserver<Results.LoggedInUser> logginObserver = new HttpObserver<Results.LoggedInUser>(){ - @Override - protected void onSuccess(Results.LoggedInUser data) { - loginResult.setValue(data); - } - }; - public MutableLiveData<Results.LoggedInUser> getLoginResult() { + HttpObserver<UserBean> logginObserver; + + @Override + public void onCreate(BaseActivity activity) { + super.onCreate(activity); + logginObserver = new HttpObserver<UserBean>(mActivity){ + @Override + protected void onSuccess(UserBean data) { + loginResult.setValue(data); + } + }; + } + + public MutableLiveData<UserBean> getLoginResult() { return loginResult; } @@ -51,7 +57,7 @@ */ public void login(String username, String password) { // can be launched in a separate asynchronous job - final Observable<Results.LoggedInUser> userObservable = loginApi.login(username, password); + final Observable<HttpApiResult<UserBean>> userObservable = loginApi.login(username, password); httpObserverOnLoading(userObservable,logginObserver); } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java index 9fff38f..eb3eb99 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java @@ -34,6 +34,7 @@ mBinding.txtLogin.setOnClickListener(onclick); mBinding.txtRegister.setOnClickListener(onclick); mBinding.txtPrivacy.setOnClickListener(onclick); + mBinding.button.setOnClickListener(onclick); mBinding.editPhone.setText(getStringProjectPrefrence(Configuration.KEY_USERNAME)); mViewModel.getVerifyResult().observe(this, result -> { if(result == 0){ @@ -45,20 +46,16 @@ } }); mViewModel.getLoginResult().observe(this, loggedInUser -> { - if(loggedInUser.code == 200){ - putBooleanProjectPrefrence(Configuration.IS_LOGIN,true); - putStringProjectPrefrence(Configuration.KEY_USERNAME, mBinding.editPhone.getText().toString()); + putBooleanProjectPrefrence(Configuration.IS_LOGIN,true); + putStringProjectPrefrence(Configuration.KEY_USERNAME, mBinding.editPhone.getText().toString()); - UserBean user = new Gson().fromJson(new Gson().toJson(loggedInUser.data) ,UserBean.class); - UserBean.setUser(user); - putStringProjectPrefrence(Configuration.KEY_TOKEN, user.getToken()); - MyLog.i("registerlogin",user.toString()); - showToast(R.string.login_success); - setResult(RESULT_CODE_SUCESS); - finish(); - }else{ - showToast(loggedInUser.msg); - } + UserBean user = new Gson().fromJson(new Gson().toJson(loggedInUser) ,UserBean.class); + UserBean.setUser(user); + putStringProjectPrefrence(Configuration.KEY_TOKEN, user.getToken()); + MyLog.i("registerlogin",user.toString()); + showToast(R.string.login_success); + setResult(RESULT_CODE_SUCESS); + finish(); }); } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/login/UserBean.java b/app/src/main/java/com/runt/open/mvvm/ui/login/UserBean.java index ccb8082..6d3901f 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/login/UserBean.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/login/UserBean.java @@ -50,20 +50,11 @@ /* 连续签到天数 */ private int sign; - /** 用户类型(0推广,1店员,2商家,3广告商) **/ - private Integer type; - /** 上级管理者 **/ private String upuser; /** 余额 **/ private BigDecimal balance; - - /** 会员等级(0普通用户,1会员) **/ - private Integer vlevel; - - /** 会员到期时间 **/ - private Date vtime; /** 状态0通过,1审核中,-1封收益 , -2 限制支付 , -3限制广告 ,-4限制发送短信,-5永久限制发送短信,-6 限制登录 **/ private String status; @@ -133,16 +124,6 @@ this.head = head; } - - public Integer getType() { - return type; - } - - public void setType(Integer type) { - this.type = type; - } - - public String getUpuser() { return upuser; } @@ -159,25 +140,6 @@ public void setBalance(BigDecimal balance) { this.balance = balance; } - - - public Integer getVlevel() { - return vlevel; - } - - public void setVlevel(Integer vlevel) { - this.vlevel = vlevel; - } - - - public Date getVtime() { - return vtime; - } - - public void setVtime(Date vtime) { - this.vtime = vtime; - } - public String getStatus() { return status; @@ -264,11 +226,8 @@ ", head='" + head + '\'' + ", coin=" + coin + ", sign=" + sign + - ", type=" + type + ", upuser='" + upuser + '\'' + ", balance=" + balance + - ", vlevel=" + vlevel + - ", vtime=" + vtime + ", status=" + status + ", wechat='" + wechat + '\'' + ", qq='" + qq + '\'' + diff --git a/app/src/main/java/com/runt/open/mvvm/ui/splash/SplashViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/splash/SplashViewModel.java deleted file mode 100644 index 5d1c2c7..0000000 --- a/app/src/main/java/com/runt/open/mvvm/ui/splash/SplashViewModel.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.runt.open.mvvm.ui.splash; - -import android.os.Handler; - -import androidx.lifecycle.MutableLiveData; - -import com.runt.open.mvvm.base.model.BaseViewModel; - -import java.util.Date; - -/** - * Created by Administrator on 2021/11/15 0015. - */ -public class SplashViewModel extends BaseViewModel { - - final String TAG = "SplashViewModel"; - long cTime = new Date().getTime(),limitTime = 2000; - - private MutableLiveData<Integer> timeOut = new MutableLiveData<>(); - - - public MutableLiveData<Integer> getTimeOut() { - return timeOut; - } - - public void countdown(){ - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - timeOut.setValue(0); - } - },limitTime); - } - - -} 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 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt" + android:width="108dp" + android:height="108dp" + android:viewportWidth="108" + android:viewportHeight="108"> + <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> + <aapt:attr name="android:fillColor"> + <gradient + android:endX="85.84757" + android:endY="92.4963" + android:startX="42.9492" + android:startY="49.59793" + android:type="linear"> + <item + android:color="#44000000" + android:offset="0.0" /> + <item + android:color="#00000000" + android:offset="1.0" /> + </gradient> + </aapt:attr> + </path> + <path + android:fillColor="#FFFFFF" + android:fillType="nonZero" + android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" + android:strokeWidth="1" + android:strokeColor="#00000000" /> +</vector> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dashboard_black_24dp.xml b/app/src/main/res/drawable/ic_dashboard_black_24dp.xml new file mode 100644 index 0000000..46fc8de --- /dev/null +++ b/app/src/main/res/drawable/ic_dashboard_black_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M3,13h8L11,3L3,3v10zM3,21h8v-6L3,15v6zM13,21h8L21,11h-8v10zM13,3v6h8L21,3h-8z" /> +</vector> diff --git a/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/src/main/res/drawable/ic_home_black_24dp.xml new file mode 100644 index 0000000..f8bb0b5 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_black_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z" /> +</vector> diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index e01dd84..07d5da9 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -2,169 +2,169 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="108dp" android:height="108dp" - android:viewportHeight="108" - android:viewportWidth="108"> + android:viewportWidth="108" + android:viewportHeight="108"> <path - android:fillColor="#008577" + android:fillColor="#3DDC84" android:pathData="M0,0h108v108h-108z" /> <path android:fillColor="#00000000" android:pathData="M9,0L9,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M19,0L19,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M29,0L29,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M39,0L39,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M49,0L49,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M59,0L59,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M69,0L69,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M79,0L79,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M89,0L89,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M99,0L99,108" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,9L108,9" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,19L108,19" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,29L108,29" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,39L108,39" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,49L108,49" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,59L108,59" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,69L108,69" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,79L108,79" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,89L108,89" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M0,99L108,99" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M19,29L89,29" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M19,39L89,39" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M19,49L89,49" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M19,59L89,59" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M19,69L89,69" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M19,79L89,79" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M29,19L29,89" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M39,19L39,89" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M49,19L49,89" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M59,19L59,89" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M69,19L69,89" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> <path android:fillColor="#00000000" android:pathData="M79,19L79,89" - android:strokeColor="#33FFFFFF" - android:strokeWidth="0.8" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> </vector> diff --git a/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/app/src/main/res/drawable/ic_notifications_black_24dp.xml new file mode 100644 index 0000000..78b75c3 --- /dev/null +++ b/app/src/main/res/drawable/ic_notifications_black_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z" /> +</vector> diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 9cc3693..28c5d9f 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -20,7 +20,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="50dp" - android:src="@mipmap/app_icon" + android:src="@mipmap/ic_launcher" android:adjustViewBounds="true" app:layout_constraintTop_toBottomOf="@id/title_bar" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index ad20990..9003eef 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -6,12 +6,16 @@ android:layout_height="match_parent" android:orientation="vertical" > - <ImageView + + <TextView + android:text="MVVM\nOPEN" + android:textStyle="bold" + android:textSize="80dp" + android:letterSpacing="0.1" + android:textColor="@color/white" android:layout_width="match_parent" android:layout_height="match_parent" - android:src="@mipmap/welcom" - android:scaleType="centerCrop" - /> - + android:gravity="center" + android:background="@drawable/ic_launcher_background" /> </RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@drawable/ic_launcher_background" /> + <foreground android:drawable="@drawable/ic_launcher_foreground" /> +</adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@drawable/ic_launcher_background" /> + <foreground android:drawable="@drawable/ic_launcher_foreground" /> +</adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 --- /dev/null +++ b/app/src/main/res/mipmap-hdpi/ic_launcher.webp Binary files differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d --- /dev/null +++ b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp Binary files differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 --- /dev/null +++ b/app/src/main/res/mipmap-mdpi/ic_launcher.webp Binary files differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d --- /dev/null +++ b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/app_icon.png b/app/src/main/res/mipmap-xxhdpi/app_icon.png deleted file mode 100644 index a3b089e..0000000 --- a/app/src/main/res/mipmap-xxhdpi/app_icon.png +++ /dev/null Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/welcom.png b/app/src/main/res/mipmap-xxxhdpi/welcom.png deleted file mode 100644 index db9de44..0000000 --- a/app/src/main/res/mipmap-xxxhdpi/welcom.png +++ /dev/null Binary files differ -- Gitblit v1.9.1