From 6c29fda2b7408c13a486554c5be9d3c6b8296b95 Mon Sep 17 00:00:00 2001
From: nilupeng <qingingrunt2010@qq.com>
Date: Thu, 11 Aug 2022 09:01:04 +0000
Subject: [PATCH] 设置界面
---
app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java | 2
app/src/main/res/values/styles.xml | 95 +++++----
app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java | 2
app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java | 53 +++--
app/src/main/java/com/runt/open/mvvm/util/HandleDate.java | 2
app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java | 152 +++++++++++++++
app/src/main/java/com/runt/open/mvvm/base/model/ImpViewModel.java | 2
app/src/main/res/layout/activity_setting.xml | 24 --
app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineViewModel.java | 4
app/src/main/res/layout/activity_main.xml | 2
app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java | 2
app/src/main/java/com/runt/open/mvvm/ui/SettingActivity.java | 46 ++++
app/src/main/res/values/strings.xml | 4
app/src/main/AndroidManifest.xml | 3
app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java | 19 +
app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java | 2
app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineFragment.java | 15 -
/dev/null | 29 --
app/src/main/res/layout/activity_about.xml | 66 ++++++
app/src/main/java/com/runt/open/mvvm/config/Configuration.java | 2
app/src/main/res/layout/activity_login.xml | 3
app/src/main/java/com/runt/open/mvvm/data/Results.java | 8
app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java | 7
app/src/main/java/com/runt/open/mvvm/ui/AboutActivity.java | 21 ++
app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageFragments.java | 2
app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java | 2
app/src/main/java/com/runt/open/mvvm/ui/main/service/ServiceFragment.java | 2
27 files changed, 424 insertions(+), 147 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0056ae6..58fd4f1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,9 @@
<activity android:name=".ui.main.MainActivity" />
<activity android:name=".ui.login.RegisterLoginActivity" />
<activity android:name=".ui.web.WebViewActivity" />
+ <activity android:name=".ui.SettingActivity" />
+ <activity android:name=".ui.AboutActivity" />
+
</application>
</manifest>
\ No newline at end of file
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 0b2b797..b60cc95 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
@@ -82,7 +82,7 @@
RESULT_CODE_SUCESS = 4046/*成功*/,
RESULT_CODE_CANCEL = 4043/*取消*/;
protected Context mContext;
- TitleBarView titleBarView;
+ protected TitleBarView titleBarView;
@Override
diff --git a/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java b/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java
index de2ed52..7b5e156 100644
--- a/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java
+++ b/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java
@@ -1,16 +1,31 @@
package com.runt.open.mvvm.base.model;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.provider.Settings;
+import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
import androidx.lifecycle.ViewModel;
-
+import com.runt.open.mvvm.BuildConfig;
import com.runt.open.mvvm.base.activities.BaseActivity;
+import com.runt.open.mvvm.data.HttpApiResult;
+import com.runt.open.mvvm.data.Results;
+import com.runt.open.mvvm.listener.ResPonse;
import com.runt.open.mvvm.retrofit.AndroidScheduler;
import com.runt.open.mvvm.retrofit.api.CommonApiCenter;
import com.runt.open.mvvm.retrofit.observable.HttpObserver;
import com.runt.open.mvvm.retrofit.utils.RetrofitUtils;
-
import io.reactivex.Observable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
+import okhttp3.*;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
/**
* Created by Administrator on 2021/11/11 0011.
@@ -24,6 +39,139 @@
this.mActivity = activity;
}
+ public void checkUpdate(boolean showTip){
+ Observable<HttpApiResult<Results.ApkVersion>> appUpdate = commonApi.getAppUpdate();
+ HttpObserver<Results.ApkVersion> observer = new HttpObserver<Results.ApkVersion>(mActivity) {
+ @Override
+ protected void onSuccess(Results.ApkVersion version) {
+ if (version.code > BuildConfig.VERSION_CODE) {
+ mActivity.showDialog("有新版本", version.detail, "升级", "取消", new ResPonse() {
+ @Override
+ public void doSuccess(Object obj) {
+ String downloadUrl = version.access.indexOf("http")> -1? version.access:BuildConfig.HOST_IP_ADDR + version.access;
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ boolean hasInstallPermission = mActivity.getPackageManager().canRequestPackageInstalls();
+ if (!hasInstallPermission) {
+ mActivity.showDialog("当前没有安装权限", "当前没有安装权限", "去设置", "稍后安装", new ResPonse() {
+ @Override
+ public void doSuccess(Object obj) {
+ //跳转至“安装未知应用”权限界面,引导用户开启权限
+ Uri selfPackageUri = Uri.parse("package:" + mActivity.getPackageName());
+ Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, selfPackageUri);
+ mActivity.startActivity(intent);
+ }
+ });
+ return;
+ }
+ }
+ downloadApk(downloadUrl);
+ }
+
+ });
+ }else if(showTip){
+ mActivity.showToast("当前是最新版本");
+ }
+ }
+
+ };
+ if(showTip){
+ httpObserverOnLoading(appUpdate, observer);
+ }else{
+ httpObserverOn(appUpdate,observer);
+ }
+ }
+
+
+ private void downloadApk(String url){
+ Request request = new Request.Builder().url(url).build();
+ OkHttpClient client = new OkHttpClient();
+ client.newCall(request).enqueue(new Callback() {
+ @Override
+ public void onFailure(@NonNull Call call, @NonNull IOException e) {
+ mActivity.showToast("下载失败"+e);
+ }
+
+ @Override
+ public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
+ int code = response.code();
+ Log.d("downloadFile", "code:"+code);
+ if(code != 200){
+ mActivity.showToast("下载失败"+code);
+ return;
+ }
+ FileOutputStream fos = null;
+ InputStream input = null;
+ File file = null;
+ byte[] buf = new byte[2048];
+ int len = 0;
+ try {
+ Log.d("downloadFile", "下载文件:"+url);
+ input = response.body().byteStream();
+ long total = response.body().contentLength();
+ Log.d("downloadFile", "total:"+total);
+ file = new File(mActivity.getExternalFilesDir(null).getAbsolutePath() + "/");
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ file = new File(file.getPath() + "/" + url.substring(url.lastIndexOf("/")));
+ file.createNewFile();
+ fos = new FileOutputStream(file);
+ long sum = 0;
+ while ((len = input.read(buf)) != -1) {
+ fos.write(buf, 0, len);
+ sum += len;
+ float progress = (sum * 1.0f / total * 100);
+ // 下载中
+ Log.d("downloadFile", "下载进度:" + progress);
+ }
+ Log.d("downloadFile", file.getPath());
+ // 下载完成
+ File finalFile = file;
+ mActivity.runOnUiThread(() -> {
+ mActivity.showDialog("安装", "新版安装包下载完成", "安装", "取消", new ResPonse() {
+ @Override
+ public void doSuccess(Object obj) {
+ openAPK(finalFile);
+ }
+ });
+ });
+ } catch (Exception e) {
+ Log.d("downloadFileException", e.toString());
+ Log.d("downloadFileException", "Url:${call.request().url}");
+ mActivity.showToast("下载失败"+e);
+ file.delete();
+ call.cancel();
+ } finally {
+ fos.flush();
+ input.close();
+ fos.close();
+ }
+
+ }
+
+ });
+ }
+ /**
+ * 打开apk文件
+ *
+ * @param file
+ */
+ private void openAPK(File file) {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ Uri photoURI = null;
+ if (Build.VERSION.SDK_INT >= 24) { //判读版本是否在7.0以上
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ photoURI = FileProvider.getUriForFile(mActivity, mActivity.getApplicationContext().getPackageName() + ".fileprovider", file);//添加这一句表示对目标应用临时授权该Uri所代表的文件
+ } else {
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ photoURI = Uri.fromFile(file);
+ }
+ intent.setDataAndType(photoURI, "application/vnd.android.package-archive");
+ mActivity.startActivity(intent);
+ }
+
/**
* 网络请求观察
* @param observable
diff --git a/app/src/main/java/com/runt/open/mvvm/base/model/ImpViewModel.java b/app/src/main/java/com/runt/open/mvvm/base/model/ImpViewModel.java
index 985f772..15366b2 100644
--- a/app/src/main/java/com/runt/open/mvvm/base/model/ImpViewModel.java
+++ b/app/src/main/java/com/runt/open/mvvm/base/model/ImpViewModel.java
@@ -1,7 +1,7 @@
package com.runt.open.mvvm.base.model;
/**
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/7/27.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class ImpViewModel extends BaseViewModel{
}
diff --git a/app/src/main/java/com/runt/open/mvvm/config/Configuration.java b/app/src/main/java/com/runt/open/mvvm/config/Configuration.java
index 4cd44e4..ae6fa94 100644
--- a/app/src/main/java/com/runt/open/mvvm/config/Configuration.java
+++ b/app/src/main/java/com/runt/open/mvvm/config/Configuration.java
@@ -3,7 +3,7 @@
/**
* My father is Object, ites purpose of
*
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/1/29.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class Configuration {
diff --git a/app/src/main/java/com/runt/open/mvvm/data/ApkUpGradeResult.java b/app/src/main/java/com/runt/open/mvvm/data/ApkUpGradeResult.java
deleted file mode 100644
index f23882e..0000000
--- a/app/src/main/java/com/runt/open/mvvm/data/ApkUpGradeResult.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.runt.open.mvvm.data;
-
-/**
- * Created by Administrator on 2021/11/15 0015.
- */
-public class ApkUpGradeResult extends HttpApiResult<ApkUpGradeResult.AppInfo> {
-
- public class AppInfo {
- //以下为声明的参数
- public int type, isEnable, isImportant, id, code;
- public String url,version, content, udate, remark;
-
-
- @Override
- public String toString() {
- return "ApkUpGrade{" +
- "type=" + type + "," +
- "isEnable=" + isEnable + "," +
- "isImportant=" + isImportant + "," +
- "id=" + id + "," +
- "url=" + url + "," +
- "version=" + version + "," +
- "content=" + content + "," +
- "udate=" + udate + "," +
- '}';
- }
-
- }
-}
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 572d453..3d7b385 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
@@ -3,7 +3,7 @@
/**
* My father is Object, ites purpose of
*
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/1/29.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class Results {
@@ -17,4 +17,10 @@
public String id,title,content,cTime;
}
+ //版本更新
+ public class ApkVersion{
+ public long id,code;
+ public String version,detail,access;
+ }
+
}
diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java
index 9c7e832..4934aee 100644
--- a/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java
+++ b/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java
@@ -1,7 +1,6 @@
package com.runt.open.mvvm.retrofit.api;
-import com.runt.open.mvvm.data.ApkUpGradeResult;
import com.runt.open.mvvm.data.HttpApiResult;
import com.runt.open.mvvm.data.PageResult;
import com.runt.open.mvvm.data.Results;
@@ -54,11 +53,11 @@
* app更新
* @return
*/
- @GET("system/appupgrade/tourist/get/2")
- Observable<ApkUpGradeResult> getAppUpdate();
+ @GET("getControlVersion")
+ Observable<HttpApiResult<Results.ApkVersion>> getAppUpdate();
@POST("updateName")
- Observable<ApkUpGradeResult> updateName(@Field("username") String name);
+ Observable<Results.StringApiResult> updateName(@Field("username") String name);
@Multipart
@POST("updatehead")
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/AboutActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/AboutActivity.java
new file mode 100644
index 0000000..d3f7465
--- /dev/null
+++ b/app/src/main/java/com/runt/open/mvvm/ui/AboutActivity.java
@@ -0,0 +1,21 @@
+package com.runt.open.mvvm.ui;
+
+import com.runt.open.mvvm.base.activities.BaseActivity;
+import com.runt.open.mvvm.base.model.ImpViewModel;
+import com.runt.open.mvvm.databinding.ActivityAboutBinding;
+import com.runt.open.mvvm.util.DeviceUtil;
+
+/**
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
+ */
+public class AboutActivity extends BaseActivity<ActivityAboutBinding, ImpViewModel> {
+ @Override
+ public void initViews() {
+ mBinding.txtVer.setText("版本号 "+ DeviceUtil.getAppVersionName(mContext));
+ }
+
+ @Override
+ public void loadData() {
+
+ }
+}
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/SettingActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/SettingActivity.java
new file mode 100644
index 0000000..5d64e69
--- /dev/null
+++ b/app/src/main/java/com/runt/open/mvvm/ui/SettingActivity.java
@@ -0,0 +1,46 @@
+package com.runt.open.mvvm.ui;
+
+import android.content.Intent;
+import android.view.View;
+import com.runt.open.mvvm.BuildConfig;
+import com.runt.open.mvvm.base.activities.BaseActivity;
+import com.runt.open.mvvm.base.model.ImpViewModel;
+import com.runt.open.mvvm.config.Configuration;
+import com.runt.open.mvvm.databinding.ActivitySettingBinding;
+import com.runt.open.mvvm.listener.ResPonse;
+import com.runt.open.mvvm.ui.login.UserBean;
+
+/**
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
+ */
+public class SettingActivity extends BaseActivity<ActivitySettingBinding, ImpViewModel> {
+ @Override
+ public void initViews() {
+ setTitle("设置");
+ if(UserBean.getUser() == null){
+ mBinding.logout.setVisibility(View.GONE);
+ }
+ mBinding.version.setText(BuildConfig.VERSION_NAME);
+ mBinding.version.setOnClickListener(v->{
+ mViewModel.checkUpdate(true);
+ });
+ mBinding.about.setOnClickListener(v->{startActivity(new Intent(mContext,AboutActivity.class));});
+ mBinding.logout.setOnClickListener(v->{
+ showDialog("是否退出", "退出后将清除本设备的登录信息", new ResPonse() {
+ @Override
+ public void doSuccess(Object obj) {
+ clearUserData();
+ putStringProjectPrefrence(Configuration.KEY_USERINFO,null);
+ UserBean.setUser(null);
+ setResult(RESULT_CODE_SUCESS);
+ finish();
+ }
+ });
+ });
+ }
+
+ @Override
+ public void loadData() {
+
+ }
+}
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java
index f295b7c..8d057a0 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageActivitys.java
@@ -1,7 +1,7 @@
package com.runt.open.mvvm.ui.loadpage;
/**
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/8/9.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class PageActivitys {
}
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageFragments.java b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageFragments.java
index 28da265..dd5d361 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageFragments.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageFragments.java
@@ -6,7 +6,7 @@
import com.runt.open.mvvm.ui.main.home.MsgAdapter;
/**
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/8/9.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class PageFragments {
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java
index 8d76586..b054b54 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/loadpage/PageViewModels.java
@@ -8,7 +8,7 @@
import io.reactivex.Observable;
/**
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/8/9.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class PageViewModels {
public static class HomeViewModel extends LoadPageViewModel<Results.Message> {
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 7c100fe..4d11f31 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
@@ -20,7 +20,7 @@
/**
* My father is Object, ites purpose of
*
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/1/29.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class RegisterLoginActivity extends BaseActivity<ActivityLoginBinding,LoginViewModel> {
final String VERIFY_CODE = "verify_code";
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java
index 3b08428..2c6cc65 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java
@@ -5,11 +5,9 @@
import android.content.res.ColorStateList;
import android.view.KeyEvent;
import android.view.View;
-
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.viewpager2.widget.ViewPager2;
-
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.permissionx.guolindev.PermissionX;
import com.runt.open.mvvm.R;
@@ -20,6 +18,7 @@
import com.runt.open.mvvm.databinding.ActivityMainBinding;
import com.runt.open.mvvm.listener.CustomClickListener;
import com.runt.open.mvvm.listener.ResPonse;
+import com.runt.open.mvvm.ui.SettingActivity;
import com.runt.open.mvvm.ui.loadpage.PageFragments;
import com.runt.open.mvvm.ui.login.RegisterLoginActivity;
import com.runt.open.mvvm.ui.login.UserBean;
@@ -41,12 +40,18 @@
@Override
public void initViews() {
-
- mBinding.titleBar.setRightDra(getResources().getDrawable(R.mipmap.icon_white_setting));
- mBinding.titleBar.setRightClick(new CustomClickListener() {
+ ActivityResultLauncher<Intent> settingLaunch = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
+ if(result.getResultCode() == RESULT_CODE_SUCESS){//已退出
+ if(mBinding.viewPager2.getCurrentItem() == 2) {
+ mBinding.viewPager2.setCurrentItem(0);//设置默认第二页
+ }
+ fragments[2].loadData();//登录后重新刷新
+ }
+ });
+ titleBarView.setRightClick(new CustomClickListener() {
@Override
protected void onSingleClick(View view) {
- //startActivityForResult(new Intent(mContext,SettingActivity.class),REQUEST_CODE_LOGOUT);//打开设置
+ settingLaunch.launch(new Intent(mContext, SettingActivity.class));//打开设置
}
});
final FragmentAdapter fragmentAdapter = new FragmentAdapter(this);
@@ -109,7 +114,7 @@
private void setTitleStr(int position){
switch (position){
case 0:
- setTitle("资讯");
+ setTitle("资讯Aljkpqla");
break;
case 1:
setTitle("服务");
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java
index 72f198b..d313fdd 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java
@@ -5,7 +5,7 @@
/**
* My father is Object, ites purpose of
*
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/1/28.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class MainViewModel extends BaseViewModel {
}
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineFragment.java b/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineFragment.java
index 3be5ae5..fb6b3ce 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineFragment.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineFragment.java
@@ -3,7 +3,6 @@
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
-import android.util.Log;
import android.view.View;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
@@ -14,17 +13,11 @@
import com.runt.open.mvvm.BuildConfig;
import com.runt.open.mvvm.R;
import com.runt.open.mvvm.base.fragments.BaseFragment;
-import com.runt.open.mvvm.data.HttpApiResult;
-import com.runt.open.mvvm.data.Results;
import com.runt.open.mvvm.databinding.FragmentMineBinding;
import com.runt.open.mvvm.retrofit.observable.HttpObserver;
import com.runt.open.mvvm.ui.login.UserBean;
import com.runt.open.mvvm.util.GlideEngine;
import com.runt.open.mvvm.util.MyLog;
-import okhttp3.ResponseBody;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
import java.io.File;
import java.util.List;
@@ -71,11 +64,11 @@
openAlthum();
break;
case R.id.txt_name://名称
- mViewModel.updateName(new HttpObserver() {
+ mViewModel.updateName(new HttpObserver<String>() {
@Override
- protected void onSuccess(Object data) {
- UserBean.getUser().setUsername(data.toString());
- mBinding.txtName.setText(data.toString());
+ protected void onSuccess(String data) {
+ UserBean.getUser().setUsername(data);
+ mBinding.txtName.setText(data);
}
});
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineViewModel.java
index 8f12bbe..24eba44 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineViewModel.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/main/mine/MineViewModel.java
@@ -13,11 +13,11 @@
import java.io.File;
/**
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/7/27.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class MineViewModel extends BaseViewModel {
- public void updateName(HttpObserver observer){
+ public void updateName(HttpObserver<String> observer){
if(UserBean.getUser().getPhone().equals(UserBean.getUser().getUsername())) {
mActivity.showInputDialog("输入名称", UserBean.getUser().getUsername(), "名称只能修改一次", new ResPonse() {
@Override
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/service/ServiceFragment.java b/app/src/main/java/com/runt/open/mvvm/ui/main/service/ServiceFragment.java
index 13e0191..c0229d7 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/main/service/ServiceFragment.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/main/service/ServiceFragment.java
@@ -10,7 +10,7 @@
import com.runt.open.mvvm.listener.ResPonse;
/**
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/7/27.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class ServiceFragment extends BaseFragment<FragmentServiceBinding, ImpViewModel> implements View.OnClickListener {
diff --git a/app/src/main/java/com/runt/open/mvvm/util/HandleDate.java b/app/src/main/java/com/runt/open/mvvm/util/HandleDate.java
index 4ba6de4..88cbfe9 100644
--- a/app/src/main/java/com/runt/open/mvvm/util/HandleDate.java
+++ b/app/src/main/java/com/runt/open/mvvm/util/HandleDate.java
@@ -6,7 +6,7 @@
import java.util.Date;
/**
- * @purpose Created by Runt (qingingrunt2010@qq.com) on 2022/7/27.
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17.
*/
public class HandleDate {
diff --git a/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java b/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java
index 8a811de..c96146d 100644
--- a/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java
+++ b/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java
@@ -102,36 +102,49 @@
super.onDraw(canvas);
Log.e("TitleBarView","onDraw mRect:"+mRect);
if(leftDra != null){
- final Bitmap bitmap = drawableToBitmap(leftDra);
- float top = mRect.top+(viewHeight-bitmap.getHeight()*2f)/2;
- float left = mRect.left-bitmap.getWidth()*0.5f;
- leftClickRect = new RectF(left,top,left + (bitmap.getWidth()*2f),top + bitmap.getHeight()*2f);
- canvas.drawBitmap(bitmap,mRect.left,mRect.top+(viewHeight-bitmap.getHeight())/2,null);
+ //点击的区域
+ leftClickRect = drawBitmap(leftDra,canvas,getPaddingLeft());
}
if(rightDra != null){
- final Bitmap bitmap = drawableToBitmap(rightDra);
- float chaTop = (viewHeight-bitmap.getHeight())/2;
- float top = mRect.top+chaTop;
- float left = mRect.right-bitmap.getWidth();
- rightClickRect = new RectF(left-bitmap.getWidth()/2,top-bitmap.getHeight()/2,left+bitmap.getWidth()*2f,top+bitmap.getHeight()*1.5f);
- canvas.drawBitmap(bitmap,left,top,null);
+ //点击的区域
+ rightClickRect = drawBitmap(rightDra,canvas,getPaddingRight()+viewWidth);
}
if(titleText != null){
final int textWidth = getTextWidth(textPaint, titleText);
- final int textHeight = getTextHeight(textPaint);
- final Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();
- canvas.drawText(titleText,mRect.left+((viewWidth-textWidth)/2),mRect.top+((viewHeight-textHeight)/2)+(0-fontMetrics.ascent),textPaint);
+ final float[] textHeight = getTextHeight(textPaint);
+ float top = (getHeight()-textHeight[0])/2-textPaint.getFontMetrics().ascent;
+ canvas.drawText(titleText,mRect.left+((viewWidth-textWidth)/2),top,textPaint);
}
if(rightText != null){
final int textWidth = getTextWidth(rightTextPaint, rightText);
- final int textHeight = getTextHeight(rightTextPaint);
- final Paint.FontMetrics fontMetrics = rightTextPaint.getFontMetrics();
+ final float[] textHeight = getTextHeight(rightTextPaint);
+ float chaleft = textWidth*0.5f;
+ float chaTop = textHeight[0]*0.5f;
float left = mRect.right-textWidth;
- float top = mRect.top+((viewHeight-textHeight)/2)+(0-fontMetrics.ascent);
- rightClickRect = new RectF(left-textWidth/2,top-textHeight,left+textWidth*2f,top+textHeight/2);
+ float top = (getHeight()-textHeight[0])/2-textPaint.getFontMetrics().ascent;
+ rightClickRect = new RectF(left-chaleft,top-chaTop,left +chaleft*3,top + chaTop*3);
canvas.drawText(rightText,left,top,rightTextPaint);
}
+ }
+
+ /**
+ * 绘制图片
+ * @param drawable
+ * @param canvas
+ * @return 点击的区域
+ */
+ private RectF drawBitmap(Drawable drawable,Canvas canvas,float left){
+ final Bitmap bitmap = drawableToBitmap(drawable);
+ if(left>viewWidth){//右侧
+ left -= bitmap.getWidth();
+ }
+ float chaTop = bitmap.getHeight()*0.5f;
+ float chaleft = bitmap.getWidth()*0.5f;
+ //绘制的位置
+ float top = (getHeight()-bitmap.getHeight())/2;
+ canvas.drawBitmap(bitmap,left,top,null);
+ return new RectF(left-chaleft,top-chaTop,left +chaleft*3,top + chaTop*3);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
@@ -244,11 +257,11 @@
}
//第二个参数是一个数组.传进去个长度跟字符串长度相同的float数组,方法调用后,里边塞的是每个字符的长度.
- public int getTextHeight(Paint paint) {
+ public float[] getTextHeight(Paint paint) {
Paint.FontMetrics fm = paint.getFontMetrics();
float height1 = fm.descent - fm.ascent;//文字的高度
float height2 = fm.bottom - fm.top + fm.leading;//行高
- return (int) height2;
+ return new float[]{height1,height2};
}
private void setTint(Drawable drawable, @ColorInt int color){
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
new file mode 100644
index 0000000..a521504
--- /dev/null
+++ b/app/src/main/res/layout/activity_about.xml
@@ -0,0 +1,66 @@
+<?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" >
+
+ <com.runt.open.mvvm.widgets.TitleBarView
+ android:id="@+id/title_bar"
+ style="@style/titlebar"
+ app:leftDrawable="@mipmap/icon_white_back"
+ app:leftTint="@color/txt_normal"
+ app:titleText="关于我们"
+ app:titleTextColor="@color/txt_normal"/>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:layout_weight="1">
+
+ <com.runt.open.mvvm.widgets.CornerImageView
+ android:layout_width="70dp"
+ android:layout_height="70dp"
+ android:layout_marginTop="40dp"
+ android:src="@mipmap/ic_launcher" />
+
+
+ <TextView
+ android:id="@+id/txt_app"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/default_margin_td"
+ android:text="@string/app_name"/>
+
+ <TextView
+ android:id="@+id/txt_ver"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/default_margin_td"
+ android:text="@string/app_name"/>
+
+ </LinearLayout>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="5dp"
+ android:text="@string/title_guanui_text_1"/>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="5dp"
+ android:text="@string/title_guanui_text_2"/>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="5dp"
+ android:text="@string/title_guanui_text_3"
+ android:layout_marginBottom="@dimen/default_margin_lr"/>
+
+</LinearLayout>
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 28c5d9f..faa303a 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -9,7 +9,8 @@
<com.runt.open.mvvm.widgets.TitleBarView
android:id="@+id/title_bar"
style="@style/titlebar"
- app:leftDrawable="@mipmap/ic_arrow_back_black_24dp"
+ app:leftDrawable="@mipmap/icon_white_back"
+ app:leftTint="@color/txt_normal"
app:titleText="登录"
tools:ignore="MissingConstraints" />
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index deb81e7..856f24c 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -10,6 +10,8 @@
<com.runt.open.mvvm.widgets.TitleBarView
android:id="@+id/title_bar"
style="@style/titlebar"
+ app:rightDrawable="@mipmap/icon_white_setting"
+ app:rightTint="@color/black"
tools:ignore="MissingConstraints"
app:titleText="标题" />
diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml
index 6159993..8bad1f8 100644
--- a/app/src/main/res/layout/activity_setting.xml
+++ b/app/src/main/res/layout/activity_setting.xml
@@ -2,6 +2,7 @@
<androidx.constraintlayout.widget.ConstraintLayout 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"
+ tools:ignore="MissingConstraints"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -10,7 +11,6 @@
<com.runt.open.mvvm.widgets.TitleBarView
android:id="@+id/title_bar"
style="@style/titlebar"
- tools:ignore="MissingConstraints"
app:titleText="设置"
app:leftDrawable="@mipmap/icon_white_back"
app:leftTint="@color/black"/>
@@ -18,30 +18,14 @@
<TextView
android:id="@+id/version"
app:layout_constraintTop_toBottomOf="@id/title_bar"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- android:background="@drawable/bg_white"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="left"
android:text="@string/str_version"
- android:textColor="@color/txt_color"
- android:textSize="@dimen/title_size"
- android:padding="15dp" />
+ style="@style/lin_txt" />
<TextView
android:id="@+id/about"
app:layout_constraintTop_toBottomOf="@id/version"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- android:background="@drawable/bg_white"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ style="@style/lin_txt"
android:drawableRight="@mipmap/arrow_right"
- android:gravity="left"
- android:text="关于我们"
- android:textColor="@color/txt_color"
- android:textSize="@dimen/title_size"
- android:padding="15dp" />
+ android:text="关于我们" />
<View
app:layout_constraintTop_toBottomOf="@id/title_bar"
android:layout_width="match_parent"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 15ac25b..3506f36 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -69,4 +69,8 @@
<string name="str_restart">重启APP</string>
<string name="str_success">成功</string>
<string name="str_no_up">暂无更新</string>
+
+ <string name="title_guanui_text_1">版权所有©</string>
+ <string name="title_guanui_text_2">xxx科技有限责任公司 </string>
+ <string name="title_guanui_text_3">ICP备案:冀ICP备20008xxx号-1</string>
</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 6bab23f..eadbfc9 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -2,57 +2,57 @@
<resources>
<declare-styleable name="TitleBarView">
- <attr name="leftDrawable" format="reference" />
- <attr name="rightDrawable" format="reference" />
- <attr name="rightDrawablePadding" format="dimension" />
- <attr name="titleText" format="string" />
- <attr name="titleTextSize" format="dimension" />
- <attr name="titleTextColor" format="color" />
- <attr name="rightText" format="string" />
- <attr name="rightTextSize" format="dimension" />
- <attr name="rightTextColor" format="color" />
- <attr name="leftTint" format="color" />
- <attr name="rightTint" format="color" />
+ <attr name="leftDrawable" format="reference"/>
+ <attr name="rightDrawable" format="reference"/>
+ <attr name="rightDrawablePadding" format="dimension"/>
+ <attr name="titleText" format="string"/>
+ <attr name="titleTextSize" format="dimension"/>
+ <attr name="titleTextColor" format="color"/>
+ <attr name="rightText" format="string"/>
+ <attr name="rightTextSize" format="dimension"/>
+ <attr name="rightTextColor" format="color"/>
+ <attr name="leftTint" format="color"/>
+ <attr name="rightTint" format="color"/>
</declare-styleable>
<declare-styleable name="LinearLayoutWithText">
- <attr name="linbackgroundColor" format="color" />
- <attr name="text_title" format="string" />
- <attr name="text_titleColor" format="color"/>
- <attr name="text_right" format="string"/>
- <attr name="hint_right" format="string" />
- <attr name="hint_title" format="string" />
- <attr name="text_rightColor" format="color"/>
+ <attr name="linbackgroundColor" format="color"/>
+ <attr name="text_title" format="string"/>
+ <attr name="text_titleColor" format="color"/>
+ <attr name="text_right" format="string"/>
+ <attr name="hint_right" format="string"/>
+ <attr name="hint_title" format="string"/>
+ <attr name="text_rightColor" format="color"/>
<attr name="divider_visible">
- <enum name="visible" value="0" />
- <enum name="invisible" value="4" />
- <enum name="gone" value="8" />
+ <enum name="visible" value="0"/>
+ <enum name="invisible" value="4"/>
+ <enum name="gone" value="8"/>
</attr>
<attr name="img_visible">
- <enum name="visible" value="0" />
- <enum name="invisible" value="4" />
- <enum name="gone" value="8" />
+ <enum name="visible" value="0"/>
+ <enum name="invisible" value="4"/>
+ <enum name="gone" value="8"/>
</attr>
- <attr name="text_rightSize" format="integer"/>
- <attr name="text_titleSize" format="integer"/>
- <attr name="red_poit_count" format="integer"/>
- <attr name="paddingLeft" format="dimension" />
- <attr name="paddingRight" format="dimension" />
- <attr name="paddingTop" format="dimension" />
- <attr name="paddingBottom" format="dimension" />
- <attr name="padding" format="dimension" />
- <attr name="hint_titleColor" format="color"/>
- <attr name="hint_rightColor" format="color"/>
- <attr name="leftCompoundDrawable" format="reference" />
- <attr name="leftCompoundDrawableSize" format="integer"/>
- <attr name="rightCompoundDrawable" format="reference" />
- <attr name="enable" format="boolean" />
+ <attr name="text_rightSize" format="integer"/>
+ <attr name="text_titleSize" format="integer"/>
+ <attr name="red_poit_count" format="integer"/>
+ <attr name="paddingLeft" format="dimension"/>
+ <attr name="paddingRight" format="dimension"/>
+ <attr name="paddingTop" format="dimension"/>
+ <attr name="paddingBottom" format="dimension"/>
+ <attr name="padding" format="dimension"/>
+ <attr name="hint_titleColor" format="color"/>
+ <attr name="hint_rightColor" format="color"/>
+ <attr name="leftCompoundDrawable" format="reference"/>
+ <attr name="leftCompoundDrawableSize" format="integer"/>
+ <attr name="rightCompoundDrawable" format="reference"/>
+ <attr name="enable" format="boolean"/>
</declare-styleable>
<declare-styleable name="CircleImageView">
- <attr name="border_width" format="dimension" />
- <attr name="border_color" format="color" />
+ <attr name="border_width" format="dimension"/>
+ <attr name="border_color" format="color"/>
</declare-styleable>
<style name="txt_normal">
@@ -134,4 +134,19 @@
<item name="android:paddingLeft">30dp</item>
<item name="android:textColor">@color/link</item>
</style>
+
+ <style name="lin_txt">
+ <item name="layout_constraintRight_toRightOf">parent</item>
+ <item name="layout_constraintLeft_toLeftOf">parent</item>
+ <item name="android:background">@drawable/bg_white</item>
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:gravity">left</item>
+ <item name="android:textColor">@color/txt_color</item>
+ <item name="android:textSize">@dimen/title_size</item>
+ <item name="android:paddingTop">@dimen/default_margin_td</item>
+ <item name="android:paddingBottom">@dimen/default_margin_td</item>
+ <item name="android:paddingLeft">@dimen/default_margin_lr</item>
+ <item name="android:paddingRight">@dimen/default_margin_lr</item>
+ </style>
</resources>
\ No newline at end of file
--
Gitblit v1.9.1