From 7cd5e812882e999443220e9c71103b3e3c476c71 Mon Sep 17 00:00:00 2001
From: nilupeng <qingingrunt2010@qq.com>
Date: Fri, 12 Aug 2022 06:58:54 +0000
Subject: [PATCH] 提现,支付密码

---
 app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java |  291 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 274 insertions(+), 17 deletions(-)

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 ffe24f5..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
@@ -3,49 +3,55 @@
 import android.Manifest;
 import android.app.AlertDialog;
 import android.content.Context;
+import android.content.Intent;
 import android.content.pm.ActivityInfo;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
 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.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;
 import com.runt.open.mvvm.base.model.BaseViewModel;
 import com.runt.open.mvvm.base.model.ViewModelFactory;
+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 dmax.dialog.SpotsDialog;
+import java.util.Set;
 
 /**
  * activity 封装
  * Created by Administrator on 2021/10/27 0027.
  */
-public abstract class BaseActivity<B extends ViewBinding,VM extends BaseViewModel> extends AppCompatActivity {
+public abstract class BaseActivity<VB extends ViewBinding,VM extends BaseViewModel> extends AppCompatActivity {
 
-    protected  B binding;
-    protected  VM viewModel;
+    protected  VB mBinding;
+    protected  VM mViewModel;
     protected String TAG ;
     public final String[] FILE_PERMISSIONS = new String []{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};
-    public final String[] LOCATION_PERMISSIONS = new String []{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION};
     public final String[] CAMERA_PERMISSIONS = new String[]{ FILE_PERMISSIONS[0],FILE_PERMISSIONS[1], Manifest.permission.CAMERA};
     public final String[] CAMERA_RECORD_PERMISSIONS = new String[]{ FILE_PERMISSIONS[0],FILE_PERMISSIONS[1], Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO};
+
+    public static final String PARAMS_TITLE = "title";
+    public static  final String PARAMS_URL = "url";
 
     public static final int RESULT_LOGIN = 100,RESULT_LOGIN_RECREATE = 103,RESULT_BIND = 101,RESULT_SENDEDFILES = 105,RESULT_DISSCONNECT = 104,
             RESULT_UPDATEUSER =  115,RESULT_LOGOUT = 113, REQUEST_CODE_ACTIVITY = 333;
@@ -76,6 +82,7 @@
             RESULT_CODE_SUCESS = 4046/*成功*/,
             RESULT_CODE_CANCEL = 4043/*取消*/;
     protected Context mContext;
+    protected TitleBarView titleBarView;
 
 
     @Override
@@ -86,15 +93,17 @@
         setStatusBarTextColor(true);
         final ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
         try {
-            Class<B> entityClass = (Class<B>) type.getActualTypeArguments()[0];
+            Class<VB> entityClass = (Class<VB>) type.getActualTypeArguments()[0];
             Method method = entityClass.getMethod("inflate", LayoutInflater.class);//get method from name "inflate";
-            binding = (B) method.invoke(entityClass,getLayoutInflater());//execute method to create a objct of viewbind;
+            mBinding = (VB) method.invoke(entityClass,getLayoutInflater());//execute method to create a objct of viewbind;
+            titleBarView = (TitleBarView) mBinding.getClass().getDeclaredField("titleBar").get(mBinding);
+            titleBarView.setLeftClick(v -> onBackPressed());
         } catch (Exception e) {
             e.printStackTrace();
         }
         Class<VM> vmClass = (Class<VM>) type.getActualTypeArguments()[1];
-        viewModel = new ViewModelProvider(this,getViewModelFactory()).get(vmClass);
-        setContentView(binding.getRoot());
+        mViewModel = new ViewModelProvider(this,getViewModelFactory()).get(vmClass);
+        setContentView(mBinding.getRoot());
         mContext = this;
         try {
             //设置坚屏 一定要放到try catch里面,否则会崩溃
@@ -103,15 +112,114 @@
         }
         TAG = this.getClass().getSimpleName();
         initViews();
+        mViewModel.onCreate(this);
+        loadData();
     }
 
     public abstract void initViews();
 
+    public abstract void loadData();
 
     public boolean isNull(Object object){
         return object == null || object.toString().trim().equals("") || object.equals("null");
     }
 
+    protected void setTitle(String text){
+        titleBarView.setTitleText(text);
+    }
+
+    protected void onTitleLeftClick(){
+        onBackKeyDown();
+    }
+
+    protected void setTitleRight(String text){
+        titleBarView.setRightText(text);
+        titleBarView.setRightDra(null);
+    }
+
+    protected void setTitleRight(Drawable drawable){
+        titleBarView.setRightText(null);
+        titleBarView.setRightDra(drawable);
+    }
+
+
+    AlertDialog dialog;
+    /**
+     * 显示弹框
+     * @param title
+     * @param msg
+     * @param resPonse
+     */
+    public void showDialog(String title,String msg,ResPonse resPonse){
+        showDialog(title,msg,"确认","取消",resPonse);
+    }
+
+    public void showInputDialog(String title,String msg,String hint,ResPonse resPonse){
+        showInputDialog(title,msg,hint,"确认","取消",resPonse);
+    }
+
+    public void showInputDialog(String title, String msg, String hint,String btnOk,String btnCancel,final  ResPonse resPonse){
+        showDialog(title,msg,hint,btnOk,btnCancel,resPonse,true);
+    }
+
+    /**
+     * 显示弹框
+     * @param title
+     * @param msg
+     * @param btnOk
+     * @param btnCancel
+     * @param resPonse
+     */
+    public void showDialog(String title, String msg, String btnOk,String btnCancel,final  ResPonse resPonse){
+        showDialog(title,msg,null,btnOk,btnCancel,resPonse,false);
+    }
+
+    private void showDialog(String title, String msg, String hint,String btnOk,String btnCancel,final  ResPonse resPonse,boolean isEdit){
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.TransparentDialog);
+        builder.setCancelable(false);
+        final View view = LayoutInflater.from(this).inflate(R.layout.layout_dialog,null);
+        TextView titleView = view.findViewById(R.id.txt_title);
+        TextView cancelView = view.findViewById(R.id.txt_cancel);
+        final TextView textView = view.findViewById(R.id.msg);
+        if(isEdit){
+            textView.setEnabled(true);
+        }else{
+            textView.setBackground(null);
+        }
+        cancelView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dialog.dismiss();
+                if(resPonse !=null){
+                    resPonse.doError(null);
+                }
+            }
+        });
+        cancelView.setText(btnCancel);
+        TextView confirmView = view.findViewById(R.id.txt_confirm);
+        confirmView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dialog.dismiss();
+                if(resPonse !=null){
+                    resPonse.doSuccess(textView.getText().toString());
+                }
+            }
+        });
+        confirmView.setText(btnOk);
+        confirmView.requestFocus();
+        if(hint != null){
+            textView.setHint(hint);
+        }
+        if(msg != null){
+            textView.setText(msg);
+        }
+        titleView.setText(title);
+        builder.setView(view);
+        dialog = builder.create();
+        dialog.show();
+    }
 
     AlertDialog loadingDialog;
     /**
@@ -146,6 +254,11 @@
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
         //透明导航栏
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+
+        setStatusBarTextColor(isBlack);
+        final ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) titleBarView.getLayoutParams();
+        layoutParams.topMargin = layoutParams.topMargin+getStatusBarHeight();
+        titleBarView.setLayoutParams(layoutParams);
     }
 
     /**
@@ -274,7 +387,8 @@
         }
     }
     public void showToast(String message){
-        Toast.makeText(this,message,Toast.LENGTH_SHORT).show();
+        Log.i(TAG,"showToast "+message);
+        runOnUiThread(() -> Toast.makeText(mContext,message,Toast.LENGTH_SHORT).show());
     }
 
     public void showToast(@StringRes int msg){
@@ -302,4 +416,147 @@
         return false;
     }
 
+    /**
+     * 拨打电话(直接拨打电话)
+     * @param phoneNum 电话号码
+     */
+    public void callPhone(String phoneNum){
+        PermissionX.init(this)
+                .permissions(Manifest.permission.CALL_PHONE)
+                .request((allGranted, grantedList, deniedList) -> {
+                    if(allGranted){
+                        Intent intent = new Intent(Intent.ACTION_CALL);
+                        Uri data = Uri.parse("tel:" + phoneNum);
+                        intent.setData(data);
+                        startActivity(intent);
+                    }else{
+                        showToast("权限被拒绝");
+                    }
+                });
+    }
+
+
+    public boolean getBooleanUserPrefrence(String key){
+        return PreferencesUtils.getBoolean(this,key,false,PreferencesUtils.USER);
+    }
+
+    public boolean getBooleanProjectPrefrence(String key){
+        return PreferencesUtils.getBoolean(this,key,false,PreferencesUtils.PROJECT);
+    }
+
+    public String getStringUserPrefrence(String key){
+        return PreferencesUtils.getString(this,key,"",PreferencesUtils.USER);
+    }
+
+    public String getStringProjectPrefrence(String key){
+        return PreferencesUtils.getString(this,key,"",PreferencesUtils.PROJECT);
+    }
+
+    public Integer getIntProjectPrefrence(String key){
+        return PreferencesUtils.getInt(this,key,0,PreferencesUtils.PROJECT);
+    }
+
+    public Long getLongProjectPrefrence(String key){
+        return PreferencesUtils.getLong(this,key,0,PreferencesUtils.PROJECT);
+    }
+
+    public float getFloatProjectPrefrence(String key){
+        return PreferencesUtils.getFloat(this,key,0,PreferencesUtils.PROJECT);
+    }
+
+    public Set getStringSetProjectPrefrence(String key){
+        return PreferencesUtils.getStringSet(this,key,PreferencesUtils.PROJECT);
+    }
+
+    public Integer getIntUserPrefrence(String key){
+        return PreferencesUtils.getInt(this,key,0,PreferencesUtils.USER);
+    }
+
+    public Long getLongUserPrefrence(String key){
+        return PreferencesUtils.getLong(this,key,0,PreferencesUtils.USER);
+    }
+
+    public float getFloatUserPrefrence(String key){
+        return PreferencesUtils.getFloat(this,key,0,PreferencesUtils.USER);
+    }
+
+    public Set getStringSetUserPrefrence(String key){
+        return PreferencesUtils.getStringSet(this,key,PreferencesUtils.USER);
+    }
+
+
+    public void putBooleanUserPrefrence(String key ,Boolean value){
+        PreferencesUtils.putBoolean(this,key,value,PreferencesUtils.USER);
+    }
+
+    public void putBooleanProjectPrefrence(String key,Boolean value){
+        PreferencesUtils.putBoolean(this,key,value,PreferencesUtils.PROJECT);
+    }
+
+    public void putStringUserPrefrence(String key,String value){
+        PreferencesUtils.putString(this,key,value,PreferencesUtils.USER);
+    }
+
+    public void putStringProjectPrefrence(String key,String value){
+        PreferencesUtils.putString(this,key,value,PreferencesUtils.PROJECT);
+    }
+
+    public void putIntProjectPrefrence(String key,int value){
+        PreferencesUtils.putInt(this,key,value,PreferencesUtils.PROJECT);
+    }
+
+    public void putLongProjectPrefrence(String key,long value){
+        PreferencesUtils.putLong(this,key,value,PreferencesUtils.PROJECT);
+    }
+
+    public void putFloatProjectPrefrence(String key,float value){
+        PreferencesUtils.putFloat(this,key,value,PreferencesUtils.PROJECT);
+    }
+
+    public void putStringSetProjectPrefrence(String key, Set value){
+        PreferencesUtils.putStringSet(this,key,value,PreferencesUtils.PROJECT);
+    }
+
+    public void putIntUserPrefrence(String key,int value){
+        PreferencesUtils.putInt(this,key,value,PreferencesUtils.USER);
+    }
+
+    public void putLongUserPrefrence(String key,long value){
+        PreferencesUtils.putLong(this,key,value,PreferencesUtils.USER);
+    }
+
+    public void putFloatUserPrefrence(String key,float value){
+        PreferencesUtils.putFloat(this,key,value,PreferencesUtils.USER);
+    }
+
+    public void putStringSetUserPrefrence(String key, Set value){
+        PreferencesUtils.putStringSet(this,key,value,PreferencesUtils.USER);
+    }
+
+
+    public void removeUserKey(String key){
+        PreferencesUtils.removeKey(this,key,PreferencesUtils.USER);
+    }
+
+    public void removeProjectKey(String key){
+        PreferencesUtils.removeKey(this,key,PreferencesUtils.PROJECT);
+    }
+
+    public void removeUserValue(String Value){
+        PreferencesUtils.removeValue(this,Value,PreferencesUtils.USER);
+    }
+
+    public void removeProjectValue(String Value){
+        PreferencesUtils.removeValue(this,Value,PreferencesUtils.PROJECT);
+    }
+
+
+    public void clearProjectData(){
+        PreferencesUtils.clearData(this,PreferencesUtils.PROJECT);
+    }
+    public void clearUserData(){
+        PreferencesUtils.clearData(this,PreferencesUtils.USER);
+    }
+
+
 }

--
Gitblit v1.9.1