diff --git a/BaseLibrary/build.gradle b/BaseLibrary/build.gradle index 2f635b5..4c34c21 100644 --- a/BaseLibrary/build.gradle +++ b/BaseLibrary/build.gradle @@ -1,12 +1,15 @@ -apply plugin: 'com.android.library' +plugins { + id 'com.android.library' // 替换 application 插件 + id 'maven-publish' // 添加发布插件 +} android { namespace "com.tfq.library" - compileSdkVersion 34 + compileSdkVersion 36 defaultConfig { - minSdkVersion 21 - targetSdkVersion 34 + minSdkVersion 24 + targetSdkVersion 36 } buildTypes { @@ -18,11 +21,8 @@ android { } dependencies { -// api 'androidx.constraintlayout:constraintlayout:1.1.3' api 'androidx.appcompat:appcompat:1.7.0' api 'com.google.android.material:material:1.11.0' -// api 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0' -// api 'androidx.core:core-ktx:1.10.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' @@ -31,30 +31,46 @@ dependencies { api 'com.gyf.immersionbar:immersionbar:3.0.0-beta05' //权限请求 - api 'com.github.getActivity:XXPermissions:18.63' + api 'com.github.getActivity:XXPermissions:23.0' api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28' - api 'androidx.activity:activity:1.8.0' + api 'androidx.activity:activity:1.10.1' - api 'com.google.code.gson:gson:2.10.1' - api 'com.alibaba:fastjson:1.2.55' + api 'com.google.code.gson:gson:2.13.1' //网络请求 - api 'com.squareup.okhttp3:okhttp:3.4.2' - api 'com.squareup.okhttp3:logging-interceptor:3.5.0' +// api 'com.squareup.okhttp3:okhttp:3.4.2' +// api 'com.squareup.okhttp3:logging-interceptor:3.5.0' + api 'com.squareup.okhttp3:okhttp:5.0.0-alpha.16' + api 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.16' //图片加载 - api 'com.github.bumptech.glide:glide:3.7.0' - api 'com.google.android:flexbox:0.3.1' - api 'com.github.bumptech.glide:glide:4.14.1' - annotationProcessor 'com.github.bumptech.glide:compiler:4.14.1' + api 'com.github.bumptech.glide:glide:4.16.0' // Glide图形转换工具 - api 'jp.wasabeef:glide-transformations:2.0.1' + api 'jp.wasabeef:glide-transformations:4.3.0' // 吐司框架:https://github.com/getActivity/Toaster api 'com.github.getActivity:Toaster:12.8' //高斯模糊效果 api 'com.github.centerzx:ShapeBlurView:1.0.5' +} + +afterEvaluate { + publishing { + publications { + release(MavenPublication) { + groupId = 'com.chuangketie.jk' // 自定义组织标识 + artifactId = 'base-lib' // 库名称 + version = '1.0.0' + artifact("$buildDir/outputs/aar/${project.name}-release.aar")// 指定 AAR 文件路径 + } + } + repositories { + maven { + url = "file://${projectDir.parent}/maven" // 指向本地目录 + } + } + } } \ No newline at end of file diff --git a/BaseLibrary/consumer-rules.pro b/BaseLibrary/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/BaseLibrary/src/androidTest/java/com/tfq/library/ExampleInstrumentedTest.java b/BaseLibrary/src/androidTest/java/com/tfq/library/ExampleInstrumentedTest.java deleted file mode 100644 index 7572ee8..0000000 --- a/BaseLibrary/src/androidTest/java/com/tfq/library/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.tfq.library; - -import android.content.Context; - -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); - assertEquals("com.tfq.library.test", appContext.getPackageName()); - } -} \ No newline at end of file diff --git a/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java b/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java index 3c89155..5eb4f2c 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java +++ b/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java @@ -2,7 +2,6 @@ package com.tfq.library.app; public class BaseConstants { - public static boolean BASE_APP_DEBUG_PRINT; /** * 底部导航栏颜色 默认白色 @@ -13,4 +12,28 @@ public class BaseConstants { * 自定义dialog使用的layout类型 */ public static int dialog_layout = 2; + /** + * 自定义字符串 打印 + */ + public final static String LOG_PRINT = "LOG_PRINT"; + /** + * 自定义字符串 隐私权限管理 + */ + public final static String PRIVACY = "privacy"; + /** + * 自定义字符串 撤回隐私授权 + */ + public final static String AUTHORIZATIO = "authorizatio"; + /** + * 自定义字符串 打开URL + */ + public final static String PLAYURL = "playUrl"; + /** + * 自定义字符串 权限请求 + */ + public final static String REQUEST_PER = "request_per"; + /** + * 自定义字符串 跳转动画 + */ + public final static String ANIMATION_SKIP = "animation_skip"; } diff --git a/BaseLibrary/src/main/java/com/tfq/library/app/LibraryApp.java b/BaseLibrary/src/main/java/com/tfq/library/app/LibraryApp.java index 383a028..8103eed 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/app/LibraryApp.java +++ b/BaseLibrary/src/main/java/com/tfq/library/app/LibraryApp.java @@ -1,116 +1,88 @@ package com.tfq.library.app; -import android.app.Activity; import android.app.Application; import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.os.Bundle; import com.hjq.toast.Toaster; +import com.tfq.library.utils.LogK; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; /** * Created by Administrator on 2016/10/28. */ -public class LibraryApp implements IConstituteApp { - public static Activity activityTop; - private static Context mContext; - private static LibraryApp instance; - public Application application; +public class LibraryApp { + private static volatile LibraryApp instance; + private final Context context; + private final Map adSlots; + + private LibraryApp(LibraryApp.Builder builder) { + this.context = builder.context; + this.adSlots = Collections.unmodifiableMap(new HashMap<>(builder.adSlots)); + } + + private static String validateNonEmpty(String value) { + if (value == null || value.trim().isEmpty()) { + return ""; +// throw new IllegalArgumentException("Parameter cannot be empty"); + } + return value; + } public static LibraryApp getInstance() { + if (instance == null) { +// throw new IllegalStateException("Call Builder.initialize() first"); + } return instance; } - public static Context getContext() { - return mContext; + // 参数暴露接口 + public Context getContext() { + return context; } - public static Activity getActivityTop() { - return activityTop; + public String getSlotConfig(String slotType) { + return adSlots.getOrDefault(slotType, "0"); // 未配置返回默认值 } - public static String getChannel() { - try { - PackageManager pm = mContext.getPackageManager(); - ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); - return appInfo.metaData.getString("UMENG_CHANNEL"); - } catch (PackageManager.NameNotFoundException ignored) { + public boolean isSlotConfig(String slotType) { + return Boolean.parseBoolean(adSlots.getOrDefault(slotType, String.valueOf(false))); // 未配置返回默认值 + } + + public static class Builder { + private final Context context; + private final Map adSlots = new LinkedHashMap<>(); + + /** + * 必传的几个选项 + * + * @param ctx + */ + public Builder(Context ctx) { + this.context = Objects.requireNonNull(ctx); } - return "other"; - } - public static String getJson(String fileName, Context context) { - StringBuilder stringBuilder = new StringBuilder(); - try { - InputStream is = context.getAssets().open(fileName); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); - String line; - while ((line = bufferedReader.readLine()) != null) { - stringBuilder.append(line); + public LibraryApp.Builder addSlot(String slotType, String config) { + if (slotType != null) { + adSlots.put(slotType, config != null ? config : "0"); // 默认值处理 } - } catch (IOException e) { - e.printStackTrace(); + return this; } - return stringBuilder.toString(); + + public synchronized void initialize() { + if (instance == null) { + instance = new LibraryApp(this); + } + boolean print = getInstance().isSlotConfig(BaseConstants.LOG_PRINT); + LogK.setDebug(print); + + // 初始化 Toast 框架 + Toaster.init((Application) context); + } + } - - @Override - public void onCreate(Application application) { - mContext = application.getApplicationContext(); - instance = this; - this.application = application; - register(); - - // 初始化 Toast 框架 - Toaster.init(application); - } - - private void register() { - application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() { - @Override - public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) { - - } - - @Override - public void onActivityStarted(@NonNull Activity activity) { - activityTop = activity; - } - - @Override - public void onActivityResumed(@NonNull Activity activity) { - - } - - @Override - public void onActivityPaused(@NonNull Activity activity) { - - } - - @Override - public void onActivityStopped(@NonNull Activity activity) { - - } - - @Override - public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) { - - } - - @Override - public void onActivityDestroyed(@NonNull Activity activity) { - - } - }); - } - } diff --git a/BaseLibrary/src/main/java/com/tfq/library/base/BaseActivity.java b/BaseLibrary/src/main/java/com/tfq/library/base/BaseActivity.java index 4a8a2b8..1d5fb53 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/base/BaseActivity.java +++ b/BaseLibrary/src/main/java/com/tfq/library/base/BaseActivity.java @@ -1,12 +1,12 @@ package com.tfq.library.base; -import android.app.Activity; import android.content.Intent; import android.os.Bundle; import com.gyf.immersionbar.ImmersionBar; import com.tfq.library.app.BaseConstants; import com.tfq.library.utils.AppUtil; +import com.tfq.library.view.Animation; import androidx.annotation.LayoutRes; import androidx.annotation.Nullable; @@ -17,6 +17,8 @@ import androidx.appcompat.app.AppCompatActivity; */ public abstract class BaseActivity extends AppCompatActivity { + private boolean statusBarDarkFont; + /****************************abstract area*************************************/ @LayoutRes @@ -47,10 +49,10 @@ public abstract class BaseActivity extends AppCompatActivity { protected void processLogic() { } - private boolean statusBarDarkFont; - public void setStatusBarDarkFont(boolean statusBarDarkFont){ + public void setStatusBarDarkFont(boolean statusBarDarkFont) { this.statusBarDarkFont = statusBarDarkFont; } + /*************************lifecycle area*****************************************************/ @Override @@ -61,7 +63,7 @@ public abstract class BaseActivity extends AppCompatActivity { initData(savedInstanceState); initClick(); processLogic(); - ImmersionBar.with((Activity) this) + ImmersionBar.with(this) .transparentStatusBar() //不写也可以,默认就是透明色 .statusBarDarkFont(statusBarDarkFont) .navigationBarColor(BaseConstants.navigationBarColor) @@ -75,6 +77,19 @@ public abstract class BaseActivity extends AppCompatActivity { protected void startActivity(Class activity) { Intent intent = new Intent(this, activity); startActivity(intent); + Animation.startAnimation(this); + } + + @Override + public void finish() { + super.finish(); + Animation.startAnimation(this); + } + + @Override + public void startActivityForResult(Intent intent, int requestCode) { + super.startActivityForResult(intent, requestCode); + Animation.startAnimation(this); } @Override diff --git a/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java b/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java index 246ca3c..9f54504 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java +++ b/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java @@ -1,14 +1,21 @@ package com.tfq.library.base; +import android.animation.ObjectAnimator; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewAnimationUtils; import android.view.ViewGroup; +import android.view.animation.AnimationUtils; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.XXPermissions; -import com.tfq.library.utils.PermissionDialog; +import com.tfq.library.R; +import com.tfq.library.app.BaseConstants; +import com.tfq.library.app.LibraryApp; +import com.tfq.library.view.Animation; +import com.tfq.library.view.AuthDialog; import java.util.List; @@ -17,6 +24,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import static com.tfq.library.app.BaseConstants.REQUEST_PER; + /** * Created by JiangKe on 2025/02/20. */ @@ -48,6 +57,13 @@ public abstract class BaseFragment extends Fragment { protected void processLogic() { } + /** + * 进入动画区 + */ + protected void animationStart() { + Animation.startAnimation(requireActivity()); + } + /** * 权限请求 */ @@ -88,20 +104,13 @@ public abstract class BaseFragment extends Fragment { if (!req_permission) {//不弹窗直接申请权限 requestPermission(permission, show_doNotAskAgain, listener); } else {//先弹窗,再去申请 - PermissionDialog permissionDialog = new PermissionDialog(getActivity(), "request_per", "权限申请" - , content, new PermissionDialog.Listener_Result() { + new AuthDialog(getActivity(), REQUEST_PER, new AuthDialog.Listener() { @Override - public void success(boolean b) { - if (b) {//同意申请权限,去申请 - requestPermission(permission, show_doNotAskAgain, listener); - } else {//不同意申请权限 - - } + public void callBack() { + //同意申请权限,去申请 + requestPermission(permission, show_doNotAskAgain, listener); } - }); - permissionDialog.setCanceledOnTouchOutside(false); - permissionDialog.setCancelable(false); - permissionDialog.show(); + }).show(); } } diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/AppUtil.java b/BaseLibrary/src/main/java/com/tfq/library/utils/AppUtil.java index 78e51b2..91d1220 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/AppUtil.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/AppUtil.java @@ -1,5 +1,6 @@ package com.tfq.library.utils; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.ActivityManager; import android.app.AlertDialog; @@ -20,11 +21,8 @@ import android.text.TextUtils; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; import android.widget.TextView; -import androidx.core.content.FileProvider; - import com.gyf.immersionbar.BarHide; import com.gyf.immersionbar.ImmersionBar; import com.tfq.library.app.LibraryApp; @@ -39,6 +37,8 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import androidx.core.content.FileProvider; + public class AppUtil { /** * 获取屏幕分辨率? @@ -119,8 +119,8 @@ public class AppUtil { public static String getPackageName() { String name = ""; try { - PackageManager packageManager = LibraryApp.getContext().getPackageManager(); - PackageInfo packageInfo = packageManager.getPackageInfo(LibraryApp.getContext().getPackageName(), 0); + PackageManager packageManager = LibraryApp.getInstance().getContext().getPackageManager(); + PackageInfo packageInfo = packageManager.getPackageInfo(LibraryApp.getInstance().getContext().getPackageName(), 0); name = packageInfo.applicationInfo.packageName; } catch (Throwable e) { e.printStackTrace(); @@ -289,7 +289,7 @@ public class AppUtil { public static boolean connectStatus() { boolean isConnect = true; try { - ConnectivityManager manager = (ConnectivityManager) LibraryApp.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); + ConnectivityManager manager = (ConnectivityManager) LibraryApp.getInstance().getContext().getSystemService(Context.CONNECTIVITY_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { NetworkCapabilities networkCapabilities = manager.getNetworkCapabilities(manager.getActiveNetwork()); if (networkCapabilities != null) { @@ -406,8 +406,8 @@ public class AppUtil { public static String getAppVersionName() { String appVersionName = "1"; try { - PackageManager packageManager = LibraryApp.getContext().getPackageManager(); - PackageInfo packageInfo = packageManager.getPackageInfo(LibraryApp.getContext().getPackageName(), 0); + PackageManager packageManager = LibraryApp.getInstance().getContext().getPackageManager(); + PackageInfo packageInfo = packageManager.getPackageInfo(LibraryApp.getInstance().getContext().getPackageName(), 0); appVersionName = packageInfo.versionName; } catch (Throwable e) { e.printStackTrace(); @@ -445,8 +445,8 @@ public class AppUtil { public static String getAppVersionCode() { String appVersionCode = "1"; try { - PackageManager packageManager = LibraryApp.getContext().getPackageManager(); - PackageInfo packageInfo = packageManager.getPackageInfo(LibraryApp.getContext().getPackageName(), 0); + PackageManager packageManager = LibraryApp.getInstance().getContext().getPackageManager(); + PackageInfo packageInfo = packageManager.getPackageInfo(LibraryApp.getInstance().getContext().getPackageName(), 0); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { appVersionCode = packageInfo.versionCode + ""; } else { @@ -481,6 +481,7 @@ public class AppUtil { /** * 判断字符串是否为整数或小数(含正负数) + * * @param input 待检测字符串 * @return true-是数字,false-不是数字 */ @@ -545,12 +546,8 @@ public class AppUtil { try { CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(signature)); - LogK.i("监听2" + " 22"); String publickey = cert.getPublicKey().toString(); - LogK.d("-------密码TRACK " + publickey); // publickey = publickey.substring(publickey.indexOf("modulus:") + 9,publickey.indexOf("\n", publickey.indexOf("modulus:"))); - - LogK.d("-------密码TRACK " + publickey); return publickey; } catch (Exception e) { e.printStackTrace(); @@ -562,14 +559,12 @@ public class AppUtil { PackageManager pm = context.getPackageManager(); List apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES); Iterator iter = apps.iterator(); - LogK.i("签名1 " + iter + ""); - LogK.i("监听1 " + "----------"); while (iter.hasNext()) { PackageInfo info = iter.next(); String packageName = info.packageName; //按包名 取签名 if (packageName.equals(AppUtil.getPackageName(context))) { - LogK.i("监听1 " + info.signatures[0].toByteArray() + "----------"); + assert info.signatures != null; return info.signatures[0].toByteArray(); } @@ -601,6 +596,7 @@ public class AppUtil { * @param sizeInBytes 字节数 * @return 格式化后的字符串 */ + @SuppressLint("DefaultLocale") public static String getSizeInUnit(long sizeInBytes) { if (sizeInBytes < 1024) { return sizeInBytes + " B"; @@ -694,10 +690,8 @@ public class AppUtil { */ public static void closeKeyBoard(View currentFocus) { try { - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - InputMethodManager imm = (InputMethodManager) LibraryApp.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(currentFocus.getWindowToken(), 0); - } + InputMethodManager imm = (InputMethodManager) LibraryApp.getInstance().getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(currentFocus.getWindowToken(), 0); } catch (Exception e) { e.printStackTrace(); } diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/BigPhotoDialog.java b/BaseLibrary/src/main/java/com/tfq/library/utils/BigPhotoDialog.java index 7005e0d..1e0164d 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/BigPhotoDialog.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/BigPhotoDialog.java @@ -17,7 +17,7 @@ public class BigPhotoDialog extends Dialog { private View contentView; public BigPhotoDialog(Context context, String url) { - super(context, R.style.CustomDialog); + super(context, R.style.Dialog); this.mContext = context; this.url = url; inflater = LayoutInflater.from(context); @@ -30,7 +30,7 @@ public class BigPhotoDialog extends Dialog { } private void setViews() { - contentView = inflater.inflate(R.layout.layout_dialog_bigphoto, null); + contentView = inflater.inflate(R.layout.library_layout_dialog_bigphoto, null); setContentView(contentView); ImageView imageView = contentView.findViewById(R.id.image_view); try { diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/CustomLoadMoreView.java b/BaseLibrary/src/main/java/com/tfq/library/utils/CustomLoadMoreView.java index 0b039ce..14007d4 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/CustomLoadMoreView.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/CustomLoadMoreView.java @@ -6,7 +6,7 @@ import com.tfq.library.R; public class CustomLoadMoreView extends LoadMoreView { @Override public int getLayoutId() { - return R.layout.quick_view_load_more; + return R.layout.library_quick_view_load_more; } /** diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/DateUtils.java b/BaseLibrary/src/main/java/com/tfq/library/utils/DateUtils.java deleted file mode 100644 index 161975d..0000000 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/DateUtils.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.tfq.library.utils; - -import java.text.SimpleDateFormat; -import java.util.Date; - -public class DateUtils { - /** - * @param l_str 精确到秒的字符串 - * @param format 时间戳转换成日期格式字符串 - * @return - */ - public static String timeStamp2Date(String l_str, String format) { - if (l_str == null || l_str.isEmpty() || l_str.equals("null")) { - return ""; - } - if (format == null || format.isEmpty()) { - format = "yyyy-MM-dd HH:mm:ss"; - } - SimpleDateFormat sdf = new SimpleDateFormat(format); - return sdf.format(new Date(Long.valueOf(l_str + "000"))); - } - - /** - * 日期格式字符串转换成时间戳 - * - * @param date_str 字符串日期 - * @param format 如:yyyy-MM-dd HH:mm:ss - * @return - */ - public static String date2TimeStamp(String date_str, String format) { - try { - SimpleDateFormat sdf = new SimpleDateFormat(format); - return String.valueOf(sdf.parse(date_str).getTime() / 1000); - } catch (Exception e) { - e.printStackTrace(); - } - return ""; - } - - /** - * 取得当前时间戳(精确到秒) - * - * @return - */ - public static String timeStamp() { - long time = System.currentTimeMillis(); - String t = String.valueOf(time / 1000); - return t; - } - - public static void main(String[] args) { - String timeStamp = timeStamp(); - System.out.println("timeStamp=" + timeStamp); //运行输出:timeStamp=1470278082 - System.out.println(System.currentTimeMillis());//运行输出:1470278082980 - //该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数 - - String date = timeStamp2Date(timeStamp, "yyyy-MM-dd HH:mm:ss"); - System.out.println("date=" + date);//运行输出:date=2016-08-04 10:34:42 - - String timeStamp2 = date2TimeStamp(date, "yyyy-MM-dd HH:mm:ss"); - System.out.println(timeStamp2); //运行输出:1470278082 - } - - public static String gapMin(Date start_date, Date end_date) { - if (end_date.getTime() > start_date.getTime()) { - long nd = 1000 * 24 * 60 * 60;//每天毫秒数 - long nh = 1000 * 60 * 60;//每小时毫秒数 - long nm = 1000 * 60;//每分钟毫秒数 - long diff = end_date.getTime() - start_date.getTime(); // 获得两个时间的毫秒时间差异 - long day = diff / nd; // 计算差多少天 - long hour = diff % nd / nh; // 计算差多少小时 - long min = diff % nd % nh / nm; // 计算差多少分钟 -// return day + "天" + hour + "小时" + min + "分钟"; - return diff / nm + ""; - } else { - return "-1"; - } - } -} diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/DecimalInputFilter.java b/BaseLibrary/src/main/java/com/tfq/library/utils/DecimalInputFilter.java deleted file mode 100644 index 8a1544c..0000000 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/DecimalInputFilter.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.tfq.library.utils; - -import android.text.InputFilter; -import android.text.Spanned; - -import java.util.regex.Pattern; - -public class DecimalInputFilter implements InputFilter { - private final Pattern decimalPattern = Pattern.compile("^-?\\d*\\.?\\d{0,2}$"); - - @Override - public CharSequence filter(CharSequence source, int start, int end, - Spanned dest, int dstart, int dend) { - String newText = dest.toString().substring(0, dstart) - + source.toString() - + dest.toString().substring(dend); - - // 允许空输入或单个负号 - if (newText.isEmpty() || newText.equals("-")) return null; - - // 验证格式并限制小数点后两位 - if (!decimalPattern.matcher(newText).matches()) { - return ""; - } - return null; - } -} diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/DialogUtils.java b/BaseLibrary/src/main/java/com/tfq/library/utils/DialogUtils.java index ffdaefc..f080117 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/DialogUtils.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/DialogUtils.java @@ -10,7 +10,6 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; import com.tfq.library.R; @@ -34,7 +33,7 @@ public class DialogUtils { // 加载模糊背景 View blurContainer = LayoutInflater.from(dialog.getContext()) - .inflate(R.layout.blur_background, rootView, false); + .inflate(R.layout.library_blur_background, rootView, false); rootView.addView(blurContainer); // 创建圆角背景 diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/FileUtil.java b/BaseLibrary/src/main/java/com/tfq/library/utils/FileUtil.java index a2e2618..6292a6b 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/FileUtil.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/FileUtil.java @@ -655,8 +655,8 @@ public class FileUtil { File oldFile = new File(filePath); String name = oldFile.getName(); //压缩文件路径 照片路径/ - LibraryApp.getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES); - File externalCacheDir = LibraryApp.getContext().getExternalCacheDir(); + LibraryApp.getInstance().getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES); + File externalCacheDir = LibraryApp.getInstance().getContext().getExternalCacheDir(); // String targetPath = oldFile.getPath()+name+"2.jpg"; String targetPath = externalCacheDir + name; int quality = 100;//压缩比例0-100 diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/GlideLoadUtils.java b/BaseLibrary/src/main/java/com/tfq/library/utils/GlideLoadUtils.java index b3faebf..5b8467b 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/GlideLoadUtils.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/GlideLoadUtils.java @@ -18,7 +18,7 @@ public class GlideLoadUtils { if (context != null) { Glide.with(context) .load(url) - .placeholder(R.mipmap.ic_loading) + .placeholder(R.drawable.library_ic_loading) // .error(R.mipmap.image_load_error) .into(imageView); } diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/LogK.java b/BaseLibrary/src/main/java/com/tfq/library/utils/LogK.java index 80ee11c..8646495 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/LogK.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/LogK.java @@ -5,29 +5,50 @@ import android.util.Log; import com.tfq.library.app.BaseConstants; public class LogK { + private static final String TAG_PREFIX = "LibraryLog_http"; + private static boolean DEBUG = false; + + public static boolean isDebug() { + return DEBUG; + } + + public static void setDebug(boolean debug) { + DEBUG = debug; + } public static void d(String msg) { - if (BaseConstants.BASE_APP_DEBUG_PRINT) - Log.d("LogK", "LogK.d http data: " + msg); + if (DEBUG) Log.d(TAG_PREFIX, buildMessage(msg)); } public static void e(String msg) { - if (BaseConstants.BASE_APP_DEBUG_PRINT) - Log.e("LogK", "LogK.e http data: " + msg); + if (DEBUG) Log.e(TAG_PREFIX, buildMessage(msg)); } public static void i(String msg) { - if (BaseConstants.BASE_APP_DEBUG_PRINT) - Log.i("LogK", "LogK.i http data: " + msg); + if (DEBUG) Log.i(TAG_PREFIX, buildMessage(msg)); } public static void w(String msg) { - if (BaseConstants.BASE_APP_DEBUG_PRINT) - Log.w("LogK", "LogK.w http data: " + msg); + if (DEBUG) Log.w(TAG_PREFIX, buildMessage(msg)); } public static void v(String msg) { - if (BaseConstants.BASE_APP_DEBUG_PRINT) - Log.v("LogK", "LogK.v http data: " + msg); + if (DEBUG) Log.v(TAG_PREFIX, buildMessage(msg)); + } + + private static String buildMessage(String msg) { + StackTraceElement[] trace = new Throwable().getStackTrace(); + String caller = ""; + + for (int i = 3; i < trace.length; i++) { + if (!trace[i].getClassName().equals(LogK.class.getName())) { + String className = trace[i].getClassName(); + caller = className.substring(className.lastIndexOf('.') + 1) + + "." + trace[i].getMethodName() + + ":" + trace[i].getLineNumber(); + break; + } + } + return "[" + Thread.currentThread().getId() + "] " + caller + " ▶ " + msg; } } \ No newline at end of file diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/PermissionDialog.java b/BaseLibrary/src/main/java/com/tfq/library/utils/PermissionDialog.java deleted file mode 100644 index 7bb4fc4..0000000 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/PermissionDialog.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.tfq.library.utils; - -import android.app.Dialog; -import android.content.ActivityNotFoundException; -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.provider.Settings; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; - -import com.tfq.library.R; - -public class PermissionDialog extends Dialog { - private final Context mContext; - private final LayoutInflater inflater; - private Listener listener; - private Listener_Location listener_location; - private View contentView; - private String type; - private String content; - private String title; - private Listener_Intent listener_intent; - private Listener_Result listener_result; - - public PermissionDialog(Context context, Listener listener) { - super(context, R.style.CustomDialog); - this.listener = listener; - this.mContext = context; - inflater = LayoutInflater.from(context); - } - - public PermissionDialog(Context context, String type, String title, String content, Listener_Location listener_location) { - super(context, R.style.CustomDialog); - this.listener_location = listener_location; - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - public PermissionDialog(Context context, String type) { - super(context, R.style.CustomDialog); - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - public PermissionDialog(Context context, String title, String content, Listener listener) { - super(context, R.style.CustomDialog); - this.mContext = context; - this.title = title; - this.content = content; - this.listener = listener; - inflater = LayoutInflater.from(context); - } - - public PermissionDialog(Context context, String type, String title, String content) { - super(context, R.style.CustomDialog); - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - public PermissionDialog(Context context, String type, String title, String content, Listener_Result listener_result) { - super(context, R.style.CustomDialog); - this.listener_result = listener_result; - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - public PermissionDialog(Context context, String type, String title, String content, Listener listener) { - super(context, R.style.CustomDialog); - this.listener = listener; - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - public PermissionDialog(Context context, String type, String title, String content, Listener listener, Listener_Intent listener_intent) { - super(context, R.style.CustomDialog); - this.listener = listener; - this.listener_intent = listener_intent; - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setViews(); - } - - private void setViews() { - contentView = inflater.inflate(R.layout.layout_dialog_permission, null); - setContentView(contentView); - TextView tv_title = contentView.findViewById(R.id.tv_title); - TextView tv_content = contentView.findViewById(R.id.tv_content); - TextView tv_left = contentView.findViewById(R.id.tv_left); - TextView tv_right = contentView.findViewById(R.id.tv_right); - if ("cancel_authorization".equals(type)) { - tv_left.setVisibility(View.GONE); - tv_content.setText(content); - tv_title.setText(title); - tv_content.setGravity(Gravity.CENTER); - } else if ("reject_authorization".equals(type)) { - tv_content.setText(content); - tv_title.setText(title); -// tv_right.setImageDrawable(App.getContext().getDrawable(R.mipmap.ic_confirm)); - } else if ("isLocServiceEnable".equals(type)) { - tv_content.setText(content); - tv_title.setText(title); -// tv_right.setImageDrawable(App.getContext().getDrawable(R.mipmap.ic_confirm)); - } else if ("request_per".equals(type)) { - tv_content.setText(content); - tv_title.setText(title); -// tv_right.setImageDrawable(App.getContext().getDrawable(R.mipmap.ic_confirm)); -// this.setCanceledOnTouchOutside(false); -// this.setCancelable(false); - }else if ("del_project".equals(type)) { - tv_content.setText(content); - tv_title.setText(title); - tv_right.setTextColor(mContext.getResources().getColor(R.color.gold)); - }else if ("export_data".equals(type)) { - tv_content.setText(content); - tv_title.setText(title); - tv_right.setTextColor(mContext.getResources().getColor(R.color.gold)); - } else { - tv_content.setText(content); - tv_title.setText(title); - } - - tv_left.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if ("isLocServiceEnable".equals(type)) { - listener_location.success(false); - } else if ("reject_authorization".equals(type)) { - if (listener != null) { - listener.success(); - } - if (listener_result != null) { - listener_result.success(false); - } - } else if ("request_per".equals(type)) { - if (listener_result != null) { - listener_result.success(false); - } - } - dismiss(); - } - }); - - tv_right.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if ("reject_authorization".equals(type)) { - if (listener_intent != null) { - listener_intent.success(); - } else { - Intent intent = new Intent(); - intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); - intent.setData(Uri.fromParts("package", mContext.getPackageName(), null)); - mContext.startActivity(intent); - } - } else if ("cancel_authorization".equals(type)) { - - dismiss(); - } else if ("isLocServiceEnable".equals(type)) { - Intent intent = new Intent(); - intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - try { - mContext.startActivity(intent); - } catch (ActivityNotFoundException ex) { - intent.setAction(Settings.ACTION_SETTINGS); - try { - mContext.startActivity(intent); - } catch (Exception e) { - e.printStackTrace(); - } - } - listener_location.success(true); - dismiss(); - } else if (listener != null) { - listener.success(); - dismiss(); - } else if (listener_result != null) { - listener_result.success(true); - dismiss(); - } - } - }); - } - - public interface Listener { - void success(); - } - - public interface Listener_Result { - void success(boolean b); - } - - public interface Listener_Location { - void success(boolean b); - } - - public interface Listener_Intent { - void success(); - } - -} diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/ToasterUtil.java b/BaseLibrary/src/main/java/com/tfq/library/utils/ToasterUtil.java index 97784d9..40899dd 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/ToasterUtil.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/ToasterUtil.java @@ -1,6 +1,5 @@ package com.tfq.library.utils; -import android.icu.math.BigDecimal; import android.view.Gravity; import com.hjq.toast.ToastParams; @@ -9,8 +8,6 @@ import com.hjq.toast.style.CustomToastStyle; import com.hjq.toast.style.WhiteToastStyle; import com.tfq.library.R; -import java.math.BigInteger; - public class ToasterUtil { public static void show(String text) { @@ -50,25 +47,25 @@ public class ToasterUtil { case 1: params = new ToastParams(); params.text = text; - params.style = new CustomToastStyle(R.layout.toast_success); + params.style = new CustomToastStyle(R.layout.library_toast_success); Toaster.show(params); break; case 2: params = new ToastParams(); params.text = text; - params.style = new CustomToastStyle(R.layout.toast_info); + params.style = new CustomToastStyle(R.layout.library_toast_info); Toaster.show(params); break; case 3: params = new ToastParams(); params.text = text; - params.style = new CustomToastStyle(R.layout.toast_warn); + params.style = new CustomToastStyle(R.layout.library_toast_warn); Toaster.show(params); break; case 4: params = new ToastParams(); params.text = text; - params.style = new CustomToastStyle(R.layout.toast_error); + params.style = new CustomToastStyle(R.layout.library_toast_error); Toaster.show(params); break; case 10: @@ -78,7 +75,7 @@ public class ToasterUtil { Toaster.show(params); break; case 20: - Toaster.setView(R.layout.toast_custom_view); + Toaster.setView(R.layout.library_toast_custom_view); Toaster.setGravity(Gravity.CENTER); Toaster.show(text); break; diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/style/BlackToastStyle.java b/BaseLibrary/src/main/java/com/tfq/library/utils/toaster_style/BlackToastStyle.java similarity index 78% rename from BaseLibrary/src/main/java/com/tfq/library/utils/style/BlackToastStyle.java rename to BaseLibrary/src/main/java/com/tfq/library/utils/toaster_style/BlackToastStyle.java index a016256..62d139c 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/style/BlackToastStyle.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/toaster_style/BlackToastStyle.java @@ -1,9 +1,8 @@ -package com.tfq.library.utils.style; +package com.tfq.library.utils.toaster_style; import android.content.Context; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; -import android.os.Build; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -33,26 +32,16 @@ public class BlackToastStyle implements IToastStyle { int verticalPadding = getVerticalPadding(context); // 适配布局反方向特性 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - textView.setPaddingRelative(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding); - } else { - textView.setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding); - } + textView.setPaddingRelative(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding); textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); Drawable backgroundDrawable = getBackgroundDrawable(context); // 设置背景 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - textView.setBackground(backgroundDrawable); - } else { - textView.setBackgroundDrawable(backgroundDrawable); - } + textView.setBackground(backgroundDrawable); // 设置 Z 轴阴影 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - textView.setZ(getTranslationZ(context)); - } + textView.setZ(getTranslationZ(context)); return textView; } diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/style/WhiteToastStyle.java b/BaseLibrary/src/main/java/com/tfq/library/utils/toaster_style/WhiteToastStyle.java similarity index 95% rename from BaseLibrary/src/main/java/com/tfq/library/utils/style/WhiteToastStyle.java rename to BaseLibrary/src/main/java/com/tfq/library/utils/toaster_style/WhiteToastStyle.java index 02d9212..596ca06 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/style/WhiteToastStyle.java +++ b/BaseLibrary/src/main/java/com/tfq/library/utils/toaster_style/WhiteToastStyle.java @@ -1,4 +1,4 @@ -package com.tfq.library.utils.style; +package com.tfq.library.utils.toaster_style; import android.content.Context; import android.graphics.drawable.Drawable; diff --git a/BaseLibrary/src/main/java/com/tfq/library/view/Animation.java b/BaseLibrary/src/main/java/com/tfq/library/view/Animation.java new file mode 100644 index 0000000..d9bda2b --- /dev/null +++ b/BaseLibrary/src/main/java/com/tfq/library/view/Animation.java @@ -0,0 +1,31 @@ +package com.tfq.library.view; + +import android.app.Activity; + +import com.tfq.library.R; +import com.tfq.library.app.BaseConstants; +import com.tfq.library.app.LibraryApp; + +/** + * Description: 动画效果 + * Created by JiangKe . + */ +public class Animation { + public static void startAnimation(Activity mActivity) { + String slotConfig = LibraryApp.getInstance().getSlotConfig(BaseConstants.ANIMATION_SKIP);//默认 0 + if (slotConfig.equals("1")) {//默认动画 + return; + } + //Scale缩放;Rotate旋转;Alpha透明度 + if (slotConfig.equals("0")) {//淡入动画(Fade) + mActivity.overridePendingTransition(R.anim.zoom_in, R.anim.zoom_out); + } else if (slotConfig.equals("2")) {//缩放动画+透明度(Scale + Fade) + mActivity.overridePendingTransition(R.anim.zoom_in_1, R.anim.zoom_out_1); + } else if (slotConfig.equals("3")) {//缩放+旋转+透明度(三效合一) + mActivity.overridePendingTransition(R.anim.zoom_in_2, R.anim.zoom_out_2); + } else if (slotConfig.equals("4")) {//translate + mActivity.overridePendingTransition(R.anim.zoom_in_3, R.anim.zoom_out_3); + } + } + +} diff --git a/BaseLibrary/src/main/java/com/tfq/library/view/AuthDialog.java b/BaseLibrary/src/main/java/com/tfq/library/view/AuthDialog.java index 005adf1..6ba0861 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/view/AuthDialog.java +++ b/BaseLibrary/src/main/java/com/tfq/library/view/AuthDialog.java @@ -5,14 +5,22 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.util.DisplayMetrics; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; +import android.view.Window; +import android.view.WindowManager; import android.widget.TextView; import com.tfq.library.R; import com.tfq.library.app.BaseConstants; +import static com.tfq.library.app.BaseConstants.AUTHORIZATIO; +import static com.tfq.library.app.BaseConstants.PLAYURL; +import static com.tfq.library.app.BaseConstants.PRIVACY; +import static com.tfq.library.app.BaseConstants.REQUEST_PER; + public class AuthDialog extends Dialog { private final Context mContext; @@ -22,21 +30,21 @@ public class AuthDialog extends Dialog { private String type; public AuthDialog(Context context, Listener listener) { - super(context, R.style.CustomDialog); + super(context, R.style.Dialog); this.listener = listener; this.mContext = context; inflater = LayoutInflater.from(context); } public AuthDialog(Context context, String type) { - super(context, R.style.CustomDialog); + super(context, R.style.Dialog); this.mContext = context; this.type = type; inflater = LayoutInflater.from(context); } public AuthDialog(Context context, String type, Listener listener) { - super(context, R.style.CustomDialog); + super(context, R.style.Dialog); this.listener = listener; this.mContext = context; this.type = type; @@ -50,7 +58,18 @@ public class AuthDialog extends Dialog { } private void setViews() { - int layout = BaseConstants.dialog_layout == 0 ? R.layout.layout_dialog_auth : BaseConstants.dialog_layout == 1 ? R.layout.layout_dialog_auth2 : R.layout.layout_dialog_auth3; + // 确保Dialog显示在底部 + Window window = getWindow(); + assert window != null; + // 设置窗口动画 + window.setWindowAnimations(R.style.ZoomDialogAnimation); + WindowManager.LayoutParams params = window.getAttributes(); + DisplayMetrics d = mContext.getResources().getDisplayMetrics(); // 获取屏幕宽、高用 + params.width = (int) (d.widthPixels * 1.0); // 宽度设置为屏幕的0..8 0.9 + params.gravity = Gravity.CENTER; + window.setAttributes(params); + + int layout = BaseConstants.dialog_layout == 0 ? R.layout.library_layout_dialog_auth : BaseConstants.dialog_layout == 1 ? R.layout.library_layout_dialog_auth2 : R.layout.library_layout_dialog_auth3; contentView = inflater.inflate(layout, null); setContentView(contentView); TextView tv_left = contentView.findViewById(R.id.tv_left); @@ -58,7 +77,7 @@ public class AuthDialog extends Dialog { TextView tv_content = contentView.findViewById(R.id.tv_content); TextView tv_title = contentView.findViewById(R.id.tv_title); - if ("privacy".equals(type)) { + if (PRIVACY.equals(type)) { tv_title.setText("隐私权限管理"); tv_content.setText("请在本应用的详情页面的权限列表找到'权限'并打开进行设置。"); tv_right.setOnClickListener(new View.OnClickListener() { @@ -82,7 +101,7 @@ public class AuthDialog extends Dialog { dismiss(); } }); - } else if ("authorizatio".equals(type)) { + } else if (AUTHORIZATIO.equals(type)) { tv_title.setText("撤回隐私授权"); tv_content.setText("若您撤回本App的隐私授权,我们将会停止收集您的个人信息,并且不再为您提供相应服务,谨慎进行此步操作。"); tv_left.setOnClickListener(new View.OnClickListener() { @@ -101,7 +120,7 @@ public class AuthDialog extends Dialog { dismiss(); } }); - } else if ("playUrl".equals(type)) { + } else if (PLAYURL.equals(type)) { tv_title.setText("此链接无效"); tv_content.setText("请输入正确地址"); tv_content.setGravity(Gravity.CENTER); @@ -118,6 +137,27 @@ public class AuthDialog extends Dialog { }); this.setCanceledOnTouchOutside(false); this.setCancelable(false); + }else if (REQUEST_PER.equals(type)) { + tv_title.setText("权限申请"); + tv_content.setText("当前操作需要您授权相应权限,否则可能无法正常使用此功能"); + tv_content.setGravity(Gravity.CENTER); + tv_right.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dismiss(); + if (listener != null) { + listener.callBack(); + } + } + }); + tv_left.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + } + }); + this.setCanceledOnTouchOutside(false); + this.setCancelable(false); } else { tv_right.setOnClickListener(new View.OnClickListener() { @Override diff --git a/BaseLibrary/src/main/java/com/tfq/library/view/SlideDownView.java b/BaseLibrary/src/main/java/com/tfq/library/view/SlideDownView.java index b55fe45..93e8118 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/view/SlideDownView.java +++ b/BaseLibrary/src/main/java/com/tfq/library/view/SlideDownView.java @@ -33,7 +33,7 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; /** - * Description: + * Description: 从上往下的弹出提示view * Created by JiangKe . */ public class SlideDownView extends LinearLayout { @@ -138,7 +138,7 @@ public class SlideDownView extends LinearLayout { LinearLayout.LayoutParams imageParams = new LinearLayout.LayoutParams((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 70, getResources().getDisplayMetrics()), (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 70, getResources().getDisplayMetrics())); imageView.setLayoutParams(imageParams); imageView.setPadding((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics()), (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics()), (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics()), (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics())); - imageView.setImageResource(R.drawable.ic_place); + imageView.setImageResource(R.drawable.library_ic_place); imageView.setId(R.id.image_view); // 确保在ids.xml中定义了此ID if (mImageView != 0) { imageView.setVisibility(VISIBLE); diff --git a/BaseLibrary/src/main/res/anim/actionsheet_dialog_in.xml b/BaseLibrary/src/main/res/anim/actionsheet_dialog_in.xml deleted file mode 100644 index cfd58a9..0000000 --- a/BaseLibrary/src/main/res/anim/actionsheet_dialog_in.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/BaseLibrary/src/main/res/anim/actionsheet_dialog_out.xml b/BaseLibrary/src/main/res/anim/actionsheet_dialog_out.xml deleted file mode 100644 index 5439a7a..0000000 --- a/BaseLibrary/src/main/res/anim/actionsheet_dialog_out.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/BaseLibrary/src/main/res/anim/activity_in_animation.xml b/BaseLibrary/src/main/res/anim/activity_in_animation.xml deleted file mode 100644 index 5f704aa..0000000 --- a/BaseLibrary/src/main/res/anim/activity_in_animation.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/activity_out_animation.xml b/BaseLibrary/src/main/res/anim/activity_out_animation.xml deleted file mode 100644 index 3eb5162..0000000 --- a/BaseLibrary/src/main/res/anim/activity_out_animation.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/anim_float_window_enter.xml b/BaseLibrary/src/main/res/anim/anim_float_window_enter.xml deleted file mode 100644 index 5790fe7..0000000 --- a/BaseLibrary/src/main/res/anim/anim_float_window_enter.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/anim_float_window_exit.xml b/BaseLibrary/src/main/res/anim/anim_float_window_exit.xml deleted file mode 100644 index 04818af..0000000 --- a/BaseLibrary/src/main/res/anim/anim_float_window_exit.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/bottom_menu_enter.xml b/BaseLibrary/src/main/res/anim/bottom_menu_enter.xml deleted file mode 100644 index 01c4795..0000000 --- a/BaseLibrary/src/main/res/anim/bottom_menu_enter.xml +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/bottom_menu_exit.xml b/BaseLibrary/src/main/res/anim/bottom_menu_exit.xml deleted file mode 100644 index e197528..0000000 --- a/BaseLibrary/src/main/res/anim/bottom_menu_exit.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/LibraryAd/src/main/res/anim/dialog_show_exit.xml b/BaseLibrary/src/main/res/anim/dialog_show_exit.xml similarity index 100% rename from LibraryAd/src/main/res/anim/dialog_show_exit.xml rename to BaseLibrary/src/main/res/anim/dialog_show_exit.xml diff --git a/BaseLibrary/src/main/res/anim/dialog_show_exis.xml b/BaseLibrary/src/main/res/anim/slide_in_bottom.xml similarity index 53% rename from BaseLibrary/src/main/res/anim/dialog_show_exis.xml rename to BaseLibrary/src/main/res/anim/slide_in_bottom.xml index bcc4d03..b793a77 100644 --- a/BaseLibrary/src/main/res/anim/dialog_show_exis.xml +++ b/BaseLibrary/src/main/res/anim/slide_in_bottom.xml @@ -1,6 +1,7 @@ - \ No newline at end of file + android:duration="300" + android:fromYDelta="100%" + android:toYDelta="0%" /> + diff --git a/LibraryAd/src/main/res/anim/dialog_show_enter.xml b/BaseLibrary/src/main/res/anim/slide_out_bottom.xml similarity index 53% rename from LibraryAd/src/main/res/anim/dialog_show_enter.xml rename to BaseLibrary/src/main/res/anim/slide_out_bottom.xml index b4b0204..f546ff4 100644 --- a/LibraryAd/src/main/res/anim/dialog_show_enter.xml +++ b/BaseLibrary/src/main/res/anim/slide_out_bottom.xml @@ -1,6 +1,7 @@ - \ No newline at end of file + android:duration="300" + android:fromYDelta="0%" + android:toYDelta="100%" /> + diff --git a/BaseLibrary/src/main/res/anim/zoom_in.xml b/BaseLibrary/src/main/res/anim/zoom_in.xml new file mode 100644 index 0000000..861720d --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_in.xml @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/zoom_in_1.xml b/BaseLibrary/src/main/res/anim/zoom_in_1.xml new file mode 100644 index 0000000..2eb2194 --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_in_1.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/zoom_in_2.xml b/BaseLibrary/src/main/res/anim/zoom_in_2.xml new file mode 100644 index 0000000..38bcafc --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_in_2.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/BaseLibrary/src/main/res/anim/zoom_in_3.xml b/BaseLibrary/src/main/res/anim/zoom_in_3.xml new file mode 100644 index 0000000..c787f07 --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_in_3.xml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/zoom_out.xml b/BaseLibrary/src/main/res/anim/zoom_out.xml new file mode 100644 index 0000000..cdd6be2 --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_out.xml @@ -0,0 +1,6 @@ + diff --git a/BaseLibrary/src/main/res/anim/zoom_out_1.xml b/BaseLibrary/src/main/res/anim/zoom_out_1.xml new file mode 100644 index 0000000..509ea08 --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_out_1.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/anim/zoom_out_2.xml b/BaseLibrary/src/main/res/anim/zoom_out_2.xml new file mode 100644 index 0000000..1b33d9c --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_out_2.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/BaseLibrary/src/main/res/anim/zoom_out_3.xml b/BaseLibrary/src/main/res/anim/zoom_out_3.xml new file mode 100644 index 0000000..4b6b04a --- /dev/null +++ b/BaseLibrary/src/main/res/anim/zoom_out_3.xml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/mipmap-hdpi/ic_loading.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_ic_loading.png similarity index 100% rename from BaseLibrary/src/main/res/mipmap-hdpi/ic_loading.png rename to BaseLibrary/src/main/res/drawable-xhdpi/library_ic_loading.png diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/ic_place.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_ic_place.png similarity index 100% rename from BaseLibrary/src/main/res/drawable-xhdpi/ic_place.png rename to BaseLibrary/src/main/res/drawable-xhdpi/library_ic_place.png diff --git a/BaseLibrary/src/main/res/mipmap-hdpi/ic_toast.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_ic_toast.png similarity index 100% rename from BaseLibrary/src/main/res/mipmap-hdpi/ic_toast.png rename to BaseLibrary/src/main/res/drawable-xhdpi/library_ic_toast.png diff --git a/BaseLibrary/src/main/res/drawable/round_button_green.xml b/BaseLibrary/src/main/res/drawable/library_button_radius_01.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/round_button_green.xml rename to BaseLibrary/src/main/res/drawable/library_button_radius_01.xml diff --git a/BaseLibrary/src/main/res/drawable/round_button_blue.xml b/BaseLibrary/src/main/res/drawable/library_button_radius_02.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/round_button_blue.xml rename to BaseLibrary/src/main/res/drawable/library_button_radius_02.xml diff --git a/BaseLibrary/src/main/res/drawable/ll_radio_white.xml b/BaseLibrary/src/main/res/drawable/library_ll_radius_white.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/ll_radio_white.xml rename to BaseLibrary/src/main/res/drawable/library_ll_radius_white.xml diff --git a/BaseLibrary/src/main/res/drawable/shape_gradient.xml b/BaseLibrary/src/main/res/drawable/library_shape_gradient.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/shape_gradient.xml rename to BaseLibrary/src/main/res/drawable/library_shape_gradient.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_error_bg.xml b/BaseLibrary/src/main/res/drawable/library_toast_error_bg.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/toast_error_bg.xml rename to BaseLibrary/src/main/res/drawable/library_toast_error_bg.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_error_ic.xml b/BaseLibrary/src/main/res/drawable/library_toast_error_ic.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/toast_error_ic.xml rename to BaseLibrary/src/main/res/drawable/library_toast_error_ic.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_hint_bg.xml b/BaseLibrary/src/main/res/drawable/library_toast_hint_bg.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/toast_hint_bg.xml rename to BaseLibrary/src/main/res/drawable/library_toast_hint_bg.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_info_ic.xml b/BaseLibrary/src/main/res/drawable/library_toast_info_ic.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/toast_info_ic.xml rename to BaseLibrary/src/main/res/drawable/library_toast_info_ic.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_success_bg.xml b/BaseLibrary/src/main/res/drawable/library_toast_success_bg.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/toast_success_bg.xml rename to BaseLibrary/src/main/res/drawable/library_toast_success_bg.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_success_ic.xml b/BaseLibrary/src/main/res/drawable/library_toast_success_ic.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/toast_success_ic.xml rename to BaseLibrary/src/main/res/drawable/library_toast_success_ic.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_warn_bg.xml b/BaseLibrary/src/main/res/drawable/library_toast_warn_bg.xml similarity index 100% rename from BaseLibrary/src/main/res/drawable/toast_warn_bg.xml rename to BaseLibrary/src/main/res/drawable/library_toast_warn_bg.xml diff --git a/BaseLibrary/src/main/res/drawable/toast_warn_ic.xml b/BaseLibrary/src/main/res/drawable/library_toast_warn_ic.xml similarity index 74% rename from BaseLibrary/src/main/res/drawable/toast_warn_ic.xml rename to BaseLibrary/src/main/res/drawable/library_toast_warn_ic.xml index bd5389c..5c50490 100644 --- a/BaseLibrary/src/main/res/drawable/toast_warn_ic.xml +++ b/BaseLibrary/src/main/res/drawable/library_toast_warn_ic.xml @@ -1,12 +1,15 @@ - + android:viewportHeight="24" + > + android:pathData="M11,15h2v2h-2zM11,7h2v6h-2zM11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z" + /> diff --git a/BaseLibrary/src/main/res/layout/layout_111.xml b/BaseLibrary/src/main/res/layout/layout_111.xml deleted file mode 100644 index 1ce81a3..0000000 --- a/BaseLibrary/src/main/res/layout/layout_111.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/BaseLibrary/src/main/res/layout/blur_background.xml b/BaseLibrary/src/main/res/layout/library_blur_background.xml similarity index 100% rename from BaseLibrary/src/main/res/layout/blur_background.xml rename to BaseLibrary/src/main/res/layout/library_blur_background.xml diff --git a/BaseLibrary/src/main/res/layout/layout_custom_slide_down_view.xml b/BaseLibrary/src/main/res/layout/library_layout_custom_slide_down_view.xml similarity index 100% rename from BaseLibrary/src/main/res/layout/layout_custom_slide_down_view.xml rename to BaseLibrary/src/main/res/layout/library_layout_custom_slide_down_view.xml diff --git a/BaseLibrary/src/main/res/layout/layout_dialog_auth.xml b/BaseLibrary/src/main/res/layout/library_layout_dialog_auth.xml similarity index 97% rename from BaseLibrary/src/main/res/layout/layout_dialog_auth.xml rename to BaseLibrary/src/main/res/layout/library_layout_dialog_auth.xml index 3fc7442..9afe6cd 100644 --- a/BaseLibrary/src/main/res/layout/layout_dialog_auth.xml +++ b/BaseLibrary/src/main/res/layout/library_layout_dialog_auth.xml @@ -8,7 +8,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" - android:background="@drawable/ll_radio_white"> + android:background="@drawable/library_ll_radius_white"> @@ -70,14 +70,14 @@ android:layout_width="wrap_content" android:layout_height="36dp" android:layout_marginLeft="35dp" - android:background="@drawable/round_button_green" + android:background="@drawable/library_button_radius_01" android:ellipsize="end" android:gravity="center" android:lines="1" android:paddingLeft="33dp" android:paddingRight="33dp" android:text="确定" - android:textColor="@color/black" + android:textColor="@color/themeColorText" android:textSize="13dp" /> diff --git a/BaseLibrary/src/main/res/layout/layout_dialog_bigphoto.xml b/BaseLibrary/src/main/res/layout/library_layout_dialog_bigphoto.xml similarity index 100% rename from BaseLibrary/src/main/res/layout/layout_dialog_bigphoto.xml rename to BaseLibrary/src/main/res/layout/library_layout_dialog_bigphoto.xml diff --git a/BaseLibrary/src/main/res/layout/layout_dialog_permission.xml b/BaseLibrary/src/main/res/layout/library_layout_dialog_confirmation.xml similarity index 97% rename from BaseLibrary/src/main/res/layout/layout_dialog_permission.xml rename to BaseLibrary/src/main/res/layout/library_layout_dialog_confirmation.xml index 9b380a8..45f67e1 100644 --- a/BaseLibrary/src/main/res/layout/layout_dialog_permission.xml +++ b/BaseLibrary/src/main/res/layout/library_layout_dialog_confirmation.xml @@ -10,7 +10,7 @@ android:layout_marginLeft="15dp" android:layout_marginTop="@dimen/dp_10" android:layout_marginRight="15dp" - android:background="@drawable/ll_radio_white"> + android:background="@drawable/library_ll_radius_white"> + android:src="@drawable/library_ic_toast" /> + android:src="@drawable/library_toast_error_ic" /> + android:src="@drawable/library_toast_info_ic" /> + android:src="@drawable/library_toast_success_ic" /> + android:src="@drawable/library_toast_warn_ic" /> - + - + - + - + - + - + - + @@ -22,17 +22,17 @@ - + - + - + - + - + - + diff --git a/BaseLibrary/src/main/res/values/colors.xml b/BaseLibrary/src/main/res/values/colors.xml index 7ab014a..acb7b22 100644 --- a/BaseLibrary/src/main/res/values/colors.xml +++ b/BaseLibrary/src/main/res/values/colors.xml @@ -1,263 +1,15 @@ - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 #000000 #FFFFFF - #FAFAFA - #9C78FF - - #3F51B5 #303F9F #4285F6 #ffcf06 - #0000FF - #55999999 - #A1000000 - #00000000 - #22050505 - #B0EEEEEE - #999999 - #AD1A1818 - #e9e9e9 - #363636 - #e5e5e5 - #FF0000 - #333333 - #99333333 - #00bfff - #1541AE - #1B97F7 - - #cccccc - - #ECE1E1 - - #7ecf89 - - #eb9224 - - #777777 - - #f5f7fc - - #035496 - - #C91204 - - #D9D9D9 - #686667 - - #AE9301 - - #E65425 - #FF8C00 - #0C7CD8 - #f5f5f5 - #333333 - #87ceeb - - #FFE2C59B - #FFFFFFF0 - #FFFFFFE0 - #FFFFFF00 - #FFFFFAFA - #FFFFFAF0 - #FFFFFACD - #FFFFF8DC - #FFFFF5EE - #FFFFF0F5 - #FFFFEFD5 - #FFFFEBCD - #FFFFE4E1 - #FFFFE4C4 - #FFFFE4B5 - #FFFFDEAD - #FFFFDAB9 + #ffffff #FFFFD700 - #FFFFC0CB - #FFFFB6C1 - #FFFFA500 - #FFFFA07A - #FFFF8C00 - #FFFF7F50 - #FFFF69B4 - #FFFF6347 - #FFFF4500 - #FFFF1493 - #FFFF00FF - #FFFDF5E6 - #FFFAFAD2 - #FFFAF0E6 - #FFFAEBD7 - #FFFA8072 - #FFF8F8FF - #FFF5FFFA - #FFF5F5F5 - #FFF5F5DC - #FFF5DEB3 - #FFF4A460 - #FFF0FFFF - #FFF0F8FF - #FFF0E68C - #FFF08080 - #FFEEE8AA - #FFEE82EE - #FFE9967A - #FFE6E6FA - #FFE0FFFF - #FFDEB887 - #FFDDA0DD - #FFDCDCDC - #FFDC143C - #FFDB7093 - #FFDAA520 - #FFDA70D6 - #FFD8BFD8 - #FFD3D3D3 - #FFD2B48C - #FFD2691E - #FFCD853F - #FFCD5C5C - #FFC71585 - #FFC0C0C0 - #FFBDB76B - #FFBC8F8F - #FFBA55D3 - #FFB8860B - #FFB22222 - #FFB0E0E6 - #FFB0C4DE - #FFAFEEEE - #FFADFF2F - #FFADD8E6 - #FFA9A9A9 - #FFA52A2A - #FFA0522D - #FF9932CC - #FF98FB98 - #FF9400D3 - #FF9370DB - #FF90EE90 - #FF8FBC8F - #FF8B4513 - #FF8B008B - #FF8B0000 - #FF8A2BE2 - #FF87CEFA - #FF87CEEB - #FF808080 - #FF808000 - #FF800080 - #FF800000 - #FF7FFFD4 - #FF7FFF00 - #FF7CFC00 - #FF7B68EE - #FF778899 - #FF708090 - #FF6B8E23 - #FF6A5ACD - #FF696969 - #FF66CDAA - #FF6495ED - #FF5F9EA0 - #FF556B2F - #FF4B0082 - #FF48D1CC - #FF483D8B - #FF4682B4 - #FF4169E1 - #FF40E0D0 - #FF3CB371 - #FF32CD32 - #FF2F4F4F - #FF2E8B57 - #FF228B22 - #FF20B2AA - #FF1E90FF - #FF191970 - #FF00FFFF - #FF00FF7F - #FF00FF00 - #FF00FA9A - #FF00CED1 - #FF00BFFF - #FF008B8B - #FF008080 - #FF008000 - #FF006400 - #FF0000CD - #FF00008B - #FF000080 - #FF2B2B2B - - - #ffffff - #111111 - #666666 - #999999 - #bbbbbb - #828282 - #0099ff - #a9dbfc - #006ec1 - #4b83a9 - #e5533b - #c2001e - #19aa49 - #ebebe9 - #d1d1d1 - #ff0000 - #f6f6f5 - #f5f5f5 - #e0e0e0 - #FF222222 - #FFEEEEEE - #00cd56 - #99E0260C - - #45C01A - #A80375c2 - - #d9d9d9 - #ffffff - #ebebeb - #ebebe9 - - #fff - #e5e5e5 - #666 - #f2f2f2 - #999 - #000 - #222 - #f22121 - #0099cc - #7A0099cc - #333 - - #66000000 - #333333 - #666666 - - - #333333 - #72747B - #666666 - #888888 - #4DFFFFFF - #33E5E5E5 - #FFFFFF - #F2F6FA - - #CC3DA6EC - + #00000000 #3F51B5 diff --git a/BaseLibrary/src/main/res/values/styles.xml b/BaseLibrary/src/main/res/values/styles.xml index ac65023..7004d7d 100644 --- a/BaseLibrary/src/main/res/values/styles.xml +++ b/BaseLibrary/src/main/res/values/styles.xml @@ -1,63 +1,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BaseLibrary/src/test/java/com/tfq/library/ExampleUnitTest.java b/BaseLibrary/src/test/java/com/tfq/library/ExampleUnitTest.java deleted file mode 100644 index d3724b1..0000000 --- a/BaseLibrary/src/test/java/com/tfq/library/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.tfq.library; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/LibraryAd/build.gradle b/LibraryAd/build.gradle index 3dae303..aa1b227 100644 --- a/LibraryAd/build.gradle +++ b/LibraryAd/build.gradle @@ -5,11 +5,11 @@ plugins { android { namespace 'com.tfq.libraryad' - compileSdkVersion 34 + compileSdkVersion 36 defaultConfig { minSdkVersion 24 - targetSdkVersion 34 + targetSdkVersion 36 } buildTypes { @@ -21,7 +21,6 @@ android { sourceSets { main { jniLibs.srcDirs = ['libs'] -// assets.srcDirs += ['../android_data/csj_config'] } } @@ -43,18 +42,14 @@ dependencies { //沉浸式 implementation 'com.gyf.immersionbar:immersionbar:3.0.0-beta05' - //gson -// implementation 'com.google.code.gson:gson:2.13.1' -// implementation 'com.alibaba:fastjson:2.0.57' } - afterEvaluate { publishing { publications { release(MavenPublication) { - groupId = 'com.jiangke.group' // 自定义组织标识 - artifactId = 'JKBaseLib' // 库名称 + groupId = 'com.chuangketie.jk' // 自定义组织标识 + artifactId = 'ad-lib' // 库名称 version = '1.0.0' artifact("$buildDir/outputs/aar/${project.name}-release.aar")// 指定 AAR 文件路径 } diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java b/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java index ed79288..d7da5ee 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java @@ -4,6 +4,8 @@ import android.app.Dialog; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; +import android.util.DisplayMetrics; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; @@ -12,20 +14,21 @@ import android.widget.ImageView; import com.tfq.libraryad.R; +import java.util.Objects; + public class LoadingDialog extends Dialog { private final Context mContext; private final LayoutInflater inflater; private Listener listener; - private View contentView; public LoadingDialog(Context context) { - super(context, R.style.CustomDialog); + super(context, R.style.AnimationDialog); this.mContext = context; inflater = LayoutInflater.from(context); } public LoadingDialog(Context context, Listener listener) { - super(context, R.style.CustomDialog); + super(context, R.style.AnimationDialog); this.listener = listener; this.mContext = context; inflater = LayoutInflater.from(context); @@ -38,20 +41,23 @@ public class LoadingDialog extends Dialog { } private void setViews() { - contentView = inflater.inflate(R.layout.ad_dialog_loading, null); + View contentView = inflater.inflate(R.layout.ad_dialog_loading, null); setContentView(contentView); - ImageView loadingImageView = contentView.findViewById(R.id.loading_imageview); - AnimationDrawable loadingAnimation = (AnimationDrawable) loadingImageView.getBackground(); - loadingAnimation.start(); - Window dialogWindow = getWindow(); +// assert dialogWindow != null; + // 设置窗口动画 +// dialogWindow.setWindowAnimations(R.style.CustomDialog); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.width = UIUtils.dp2px(mContext, 70); lp.height = UIUtils.dp2px(mContext, 70); dialogWindow.setAttributes(lp); setCanceledOnTouchOutside(false); setCancelable(false); + + ImageView loadingImageView = contentView.findViewById(R.id.loading_imageview); + AnimationDrawable loadingAnimation = (AnimationDrawable) loadingImageView.getBackground(); + loadingAnimation.start(); } public interface Listener { diff --git a/LibraryAd/src/main/res/anim/ad_dialog_in.xml b/LibraryAd/src/main/res/anim/ad_dialog_in.xml new file mode 100644 index 0000000..861720d --- /dev/null +++ b/LibraryAd/src/main/res/anim/ad_dialog_in.xml @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/LibraryAd/src/main/res/anim/ad_dialog_out.xml b/LibraryAd/src/main/res/anim/ad_dialog_out.xml new file mode 100644 index 0000000..cdd6be2 --- /dev/null +++ b/LibraryAd/src/main/res/anim/ad_dialog_out.xml @@ -0,0 +1,6 @@ + diff --git a/LibraryAd/src/main/res/drawable/ad_ll_radio_loading.xml b/LibraryAd/src/main/res/drawable/ad_ll_radio_loading.xml index 7da1be1..f577f38 100644 --- a/LibraryAd/src/main/res/drawable/ad_ll_radio_loading.xml +++ b/LibraryAd/src/main/res/drawable/ad_ll_radio_loading.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/LibraryAd/src/main/res/layout/ad_dialog_loading.xml b/LibraryAd/src/main/res/layout/ad_dialog_loading.xml index 9fad07c..6f19130 100644 --- a/LibraryAd/src/main/res/layout/ad_dialog_loading.xml +++ b/LibraryAd/src/main/res/layout/ad_dialog_loading.xml @@ -2,16 +2,24 @@ - + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/ad_ll_radio_loading" + > + + + + \ No newline at end of file diff --git a/LibraryAd/src/main/res/values/colors.xml b/LibraryAd/src/main/res/values/colors.xml index d781ec5..44f74b9 100644 --- a/LibraryAd/src/main/res/values/colors.xml +++ b/LibraryAd/src/main/res/values/colors.xml @@ -1,4 +1,4 @@ - + #00000000 diff --git a/LibraryAd/src/main/res/values/styles.xml b/LibraryAd/src/main/res/values/styles.xml index c3d7d78..faac04f 100644 --- a/LibraryAd/src/main/res/values/styles.xml +++ b/LibraryAd/src/main/res/values/styles.xml @@ -1,21 +1,15 @@ - - + diff --git a/README.md b/README.md index 3c1308e..65d71fb 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) .addSlot(AD_CODE_FEED3, "feed3_id") // 信息流3广告位 .addSlot(AD_CODE_BANNER, "banner_id") // banner广告位 .addSlot(AD_CODE_Draw, "draw_id") // draw广告位 +.addSlot(NO_AD,"true") //强制不开启广告 .initialize(); ``` diff --git a/android_data/data.gradle b/android_data/data.gradle index 2728328..c665a08 100644 --- a/android_data/data.gradle +++ b/android_data/data.gradle @@ -1,24 +1,24 @@ ext { base = [ //基本信息 - applicationId : "com.tfq.finances.jzrcj", + applicationId : "com.tfq.demo", versionCode : 100, versionName : "1.0.0", company_name : "济宁同风起网络科技有限公司", APP_DEBUG_PRINT : "false",//true: 打印log - need_login : "true",//临时用来判断需要登录等功能 + need_login : "false",//临时用来判断需要登录等功能 appinfoId : "48", // 新增参数,后台逻辑id - appId : "5666885", - csjId : "5666885", - csjIdSplash : "103509305", - csjIdCQP : "103508062", - csjIdFeed1 : "103507590", - csjIdFeed2 : "103507765", - csjIdFeed3 : "103507590", - csjIdReward : "103508260", - csjIdBanner : "103507868", - csjIdDraw : "103507868", + appId : "5440503", + csjId : "5440503", + csjIdSplash : "102493122", + csjIdCQP : "102492769", + csjIdFeed1 : "102493121", + csjIdFeed2 : "102492595", + csjIdFeed3 : "102493121", + csjIdReward : "102711070", + csjIdBanner : "103548860", + csjIdDraw : "103548860", umId : "684282abbc47b67d837db577", @@ -39,7 +39,7 @@ ext { ] channel = [ - appName : "记账日常记", + appName : "Demo", appLogo : "@drawable/app_logo", appKaiPing: "@drawable/app_splash", ] diff --git a/app/build.gradle b/app/build.gradle index 92b4942..982f2ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,13 +23,13 @@ android { } } - compileSdkVersion 34 + compileSdkVersion 36 namespace rootProject.ext.base.applicationId // 添加这一行 defaultConfig { applicationId rootProject.ext.base.applicationId minSdkVersion 24 - targetSdkVersion 34 + targetSdkVersion 36 multiDexEnabled true versionCode rootProject.ext.base.versionCode versionName rootProject.ext.base.versionName diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2779f37..3f9af6f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -109,7 +109,7 @@ /> @@ -125,7 +125,7 @@ /> diff --git a/app/src/main/java/com/tfq/finances/app/App.java b/app/src/main/java/com/tfq/finances/app/App.java index 5031c40..7a078db 100644 --- a/app/src/main/java/com/tfq/finances/app/App.java +++ b/app/src/main/java/com/tfq/finances/app/App.java @@ -1 +1 @@ -package com.tfq.finances.app; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.tfq.ad.ad.ADStateUtils; import com.tfq.ad.app.ADConstants; import com.tfq.ad.app.AdApp; import com.tfq.ad.utils.LogAd; import com.tfq.finances.core.constants.Constants; import com.tfq.finances.db.DaoMaster; import com.tfq.finances.db.DaoSession; import com.tfq.finances.db.db.GDOpenHelper; import com.tfq.finances.jzrcj.R; import com.tfq.finances.main.AdUtils; import com.tfq.library.app.BaseConstants; import com.tfq.library.app.IConstituteApp; import com.tfq.library.utils.AppSigning; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; import com.tfq.library.utils.SpManager; import com.umeng.commonsdk.UMConfigure; import java.util.ArrayList; import java.util.List; public class App extends Application { public static Context mContext; public static App instance; public static DaoSession mSession; private String appid; //新增参数,固定值,后台app逻辑id,优化接口调用使用 private String appinfoId; private String csjId; private String umId; private boolean noAD; private String csjIdSplash, csjIdCQP, csjIdFeed1, csjIdFeed2, csjIdFeed3, csjIdReward, csjIdBanner, csjIdDraw; private List applications; private boolean need_login; public static App getInstances() { return instance; } public static String getChannel() { try { PackageManager pm = mContext.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); String umeng_channel = appInfo.metaData.getString("UMENG_CHANNEL"); if (umeng_channel != null) { return umeng_channel; } return "other"; } catch (PackageManager.NameNotFoundException ignored) { } return "other"; } public static Context getContext() { return mContext; } public static void setNavigationBarColor(String navigationBarColor) { BaseConstants.navigationBarColor = navigationBarColor; } @Override public void onCreate() { super.onCreate(); instance = this; mContext = getApplicationContext(); UMConfigure.preInit(mContext, getUmId(), getChannel()); LogK.e("sha1= " + AppSigning.getSha1(this)); LogK.e("build " + "\n" + AppUtil.getPackageName(mContext) + "\n" + getChannel() + "\n" + getCsjId() + "\n" + mContext.getResources().getString(R.string.app_name) + "\n" + AppUtil.getAppVersionName(mContext) + "\n" + AppUtil.getAppVersionCode(mContext) + "\n" ); // AppUtil.getPublicKey(AppUtil.getSign(mContext)); // LogK.e(GetPublicKey.getSignInfo(mContext)); initDb(); // setNavigationBarColor("#ffffff"); agreeSercurity(); } private void initDb() { try { GDOpenHelper gdOpenHelper = new GDOpenHelper(this, "tfq.db"); SQLiteDatabase db = gdOpenHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mSession = daoMaster.newSession(); } catch (Exception e) { e.printStackTrace(); } } public DaoSession getDaoSession() { return mSession; } public String getUmId() { if (TextUtils.isEmpty(umId)) { umId = mContext.getResources().getString(R.string.umId); } return umId; } public String getAppid() { if (TextUtils.isEmpty(appid)) { appid = mContext.getResources().getString(R.string.appid); } return appid; } /** * 获取appinfoId * * @return */ public String getAppinfoId() { if (TextUtils.isEmpty(appinfoId)) { appinfoId = mContext.getResources().getString(R.string.appinfoId); } return appinfoId; } public String getCsjId() { if (TextUtils.isEmpty(csjId)) { csjId = mContext.getResources().getString(R.string.csjId); } return csjId; } public boolean getNeedLogin() { return need_login = mContext.getResources().getBoolean(R.bool.need_login); } public void agreeSercurity() { SharedPreferences sharedPreferences = SpManager.startRead(mContext, Constants.SP_NAME); boolean openNoFirst = sharedPreferences.getBoolean("no_first_open", false); if (openNoFirst) { initApplications(); UMConfigure.init(this, getUmId(), getChannel(), UMConfigure.DEVICE_TYPE_PHONE, ""); } } private void initApplications() { BaseConstants.BASE_APP_DEBUG_PRINT = Constants.APP_DEBUG_PRINT; applications = new ArrayList<>(); applications.add("com.tfq.library.app.LibraryApp"); // applications.add("com.tfq.ad.app.AdApp"); for (String item : applications) { try { Class clazz = Class.forName(item); if (clazz != null) { Object obj = clazz.newInstance(); if (obj instanceof IConstituteApp) { IConstituteApp a = (IConstituteApp) obj; a.onCreate(this); } } } catch (Exception e) { e.printStackTrace(); } } new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) .addSlot(ADConstants.AD_CSJID, getCsjId()) // CSJID .addSlot(ADConstants.AD_CODE_SPLASH, getCsjIdSplash()) // 添加横幅广告位 .addSlot(ADConstants.AD_CODE_REWARD, getCsjIdReward()) // 激励视频广告位 .addSlot(ADConstants.AD_CODE_FEED1, getCsjIdFeed1()) // 信息流1广告位 .addSlot(ADConstants.AD_CODE_BANNER, getCsjIdBanner()) // banner广告位 .initialize(); ADStateUtils.setSwitchRequestListener(new ADStateUtils.SwitchRequestListener() { @Override public void onSwitchRequestChanged() { AdUtils.getAdvFlag(); } }); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); } public String getCsjIdSplash() { if (TextUtils.isEmpty(csjIdSplash)) { csjIdSplash = mContext.getResources().getString(R.string.csjIdSplash); } return csjIdSplash; } public String getCsjIdCQP() { if (TextUtils.isEmpty(csjIdCQP)) { csjIdCQP = mContext.getResources().getString(R.string.csjIdCQP); } return csjIdCQP; } public String getCsjIdFeed1() { if (TextUtils.isEmpty(csjIdFeed1)) { csjIdFeed1 = mContext.getResources().getString(R.string.csjIdFeed1); } return csjIdFeed1; } public String getCsjIdFeed2() { if (TextUtils.isEmpty(csjIdFeed2)) { csjIdFeed2 = mContext.getResources().getString(R.string.csjIdFeed2); } return csjIdFeed2; } public String getCsjIdFeed3() { if (TextUtils.isEmpty(csjIdFeed3)) { csjIdFeed3 = mContext.getResources().getString(R.string.csjIdFeed3); } return csjIdFeed3; } public String getCsjIdReward() { if (TextUtils.isEmpty(csjIdReward)) { csjIdReward = mContext.getResources().getString(R.string.csjIdReward); } return csjIdReward; } public String getCsjIdBanner() { if (TextUtils.isEmpty(csjIdBanner)) { csjIdBanner = mContext.getResources().getString(R.string.csjIdBanner); } return csjIdBanner; } public String getCsjIdDraw() { if (TextUtils.isEmpty(csjIdDraw)) { csjIdDraw = mContext.getResources().getString(R.string.csjIdDraw); } return csjIdDraw; } public int getAppSplash() { return R.drawable.app_splash; } } \ No newline at end of file +package com.tfq.finances.app; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.tfq.ad.ad.ADStateUtils; import com.tfq.ad.app.AdApp; import com.tfq.ad.utils.LogAd; import com.tfq.finances.core.constants.Constants; import com.tfq.finances.db.DaoMaster; import com.tfq.finances.db.DaoSession; import com.tfq.finances.db.db.GDOpenHelper; import com.tfq.demo.R; import com.tfq.finances.main.AdUtils; import com.tfq.library.app.BaseConstants; import com.tfq.library.app.LibraryApp; import com.tfq.library.utils.AppSigning; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; import com.tfq.library.utils.SpManager; import com.umeng.commonsdk.UMConfigure; import static com.tfq.ad.app.ADConstants.AD_CODE_BANNER; import static com.tfq.ad.app.ADConstants.AD_CODE_FEED1; import static com.tfq.ad.app.ADConstants.AD_CODE_REWARD; import static com.tfq.ad.app.ADConstants.AD_CODE_SPLASH; import static com.tfq.ad.app.ADConstants.AD_CSJID; public class App extends Application { public static Context mContext; public static App instance; public static DaoSession mSession; private String appid; //新增参数,固定值,后台app逻辑id,优化接口调用使用 private String appinfoId; private String csjId; private String umId; private String csjIdSplash, csjIdCQP, csjIdFeed1, csjIdFeed2, csjIdFeed3, csjIdReward, csjIdBanner, csjIdDraw; public static App getInstances() { return instance; } public static String getChannel() { try { PackageManager pm = mContext.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); String umeng_channel = appInfo.metaData.getString("UMENG_C HANNEL"); if (umeng_channel != null) { return umeng_channel; } return "other"; } catch (PackageManager.NameNotFoundException ignored) { } return "other"; } public static Context getContext() { return mContext; } public static void setNavigationBarColor(String navigationBarColor) { BaseConstants.navigationBarColor = navigationBarColor; } @Override public void onCreate() { super.onCreate(); instance = this; mContext = getApplicationContext(); UMConfigure.preInit(mContext, getUmId(), getChannel()); // AppUtil.getPublicKey(AppUtil.getSign(mContext)); // LogK.e(GetPublicKey.getSignInfo(mContext)); initDb(); // setNavigationBarColor("#ffffff"); agreeSercurity(); LogK.e("APP_INFO: " + "\n" + AppSigning.getSha1(this) + "\n" + AppUtil.getPackageName(mContext) + "\n" + getChannel() + "\n" + getCsjId() + "\n" + mContext.getResources().getString(R.string.app_name) + "\n" + AppUtil.getAppVersionName(mContext) + "\n" + AppUtil.getAppVersionCode(mContext) + "\n" ); } private void initDb() { try { GDOpenHelper gdOpenHelper = new GDOpenHelper(this, "tfq.db"); SQLiteDatabase db = gdOpenHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mSession = daoMaster.newSession(); } catch (Exception e) { e.printStackTrace(); } } public DaoSession getDaoSession() { return mSession; } public String getUmId() { if (TextUtils.isEmpty(umId)) { umId = mContext.getResources().getString(R.string.umId); } return umId; } public String getAppid() { if (TextUtils.isEmpty(appid)) { appid = mContext.getResources().getString(R.string.appid); } return appid; } /** * 获取appinfoId * * @return */ public String getAppinfoId() { if (TextUtils.isEmpty(appinfoId)) { appinfoId = mContext.getResources().getString(R.string.appinfoId); } return appinfoId; } public String getCsjId() { if (TextUtils.isEmpty(csjId)) { csjId = mContext.getResources().getString(R.string.csjId); } return csjId; } public void agreeSercurity() { SharedPreferences sharedPreferences = SpManager.startRead(mContext, Constants.SP_NAME); boolean openNoFirst = sharedPreferences.getBoolean("no_first_open", false); if (openNoFirst) { init_BaseLibrary(); init_ADLibrary(); UMConfigure.init(this, getUmId(), getChannel(), UMConfigure.DEVICE_TYPE_PHONE, ""); } } private void init_BaseLibrary() { new LibraryApp.Builder(this) .addSlot(BaseConstants.LOG_PRINT, String.valueOf(Constants.APP_DEBUG_PRINT)) .addSlot(BaseConstants.ANIMATION_SKIP,"0") .initialize(); } private void init_ADLibrary() { new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) .addSlot(AD_CSJID, getCsjId()) // CSJID .addSlot(AD_CODE_SPLASH, getCsjIdSplash()) // 添加横幅广告位 .addSlot(AD_CODE_REWARD, getCsjIdReward()) // 激励视频广告位 .addSlot(AD_CODE_FEED1, getCsjIdFeed1()) // 信息流1广告位 .addSlot(AD_CODE_BANNER, getCsjIdBanner()) // banner广告位 .initialize(); LogAd.setDebug(true); ADStateUtils.setSwitchRequestListener(new ADStateUtils.SwitchRequestListener() { @Override public void onSwitchRequestChanged() { AdUtils.getAdvFlag(); } }); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); } public String getCsjIdSplash() { if (TextUtils.isEmpty(csjIdSplash)) { csjIdSplash = mContext.getResources().getString(R.string.csjIdSplash); } return csjIdSplash; } public String getCsjIdCQP() { if (TextUtils.isEmpty(csjIdCQP)) { csjIdCQP = mContext.getResources().getString(R.string.csjIdCQP); } return csjIdCQP; } public String getCsjIdFeed1() { if (TextUtils.isEmpty(csjIdFeed1)) { csjIdFeed1 = mContext.getResources().getString(R.string.csjIdFeed1); } return csjIdFeed1; } public String getCsjIdFeed2() { if (TextUtils.isEmpty(csjIdFeed2)) { csjIdFeed2 = mContext.getResources().getString(R.string.csjIdFeed2); } return csjIdFeed2; } public String getCsjIdFeed3() { if (TextUtils.isEmpty(csjIdFeed3)) { csjIdFeed3 = mContext.getResources().getString(R.string.csjIdFeed3); } return csjIdFeed3; } public String getCsjIdReward() { if (TextUtils.isEmpty(csjIdReward)) { csjIdReward = mContext.getResources().getString(R.string.csjIdReward); } return csjIdReward; } public String getCsjIdBanner() { if (TextUtils.isEmpty(csjIdBanner)) { csjIdBanner = mContext.getResources().getString(R.string.csjIdBanner); } return csjIdBanner; } public String getCsjIdDraw() { if (TextUtils.isEmpty(csjIdDraw)) { csjIdDraw = mContext.getResources().getString(R.string.csjIdDraw); } return csjIdDraw; } public boolean isNeedLogin() { return mContext.getResources().getBoolean(R.bool.need_login); } public int getAppSplash() { return R.drawable.app_splash; } } \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/core/constants/Constants.java b/app/src/main/java/com/tfq/finances/core/constants/Constants.java index 8e9d434..47af6e4 100644 --- a/app/src/main/java/com/tfq/finances/core/constants/Constants.java +++ b/app/src/main/java/com/tfq/finances/core/constants/Constants.java @@ -1,7 +1,7 @@ package com.tfq.finances.core.constants; import com.tfq.finances.app.App; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; public class Constants { /** diff --git a/app/src/main/java/com/tfq/finances/core/enums/AvatarEnum.java b/app/src/main/java/com/tfq/finances/core/enums/AvatarEnum.java deleted file mode 100644 index 756dc6c..0000000 --- a/app/src/main/java/com/tfq/finances/core/enums/AvatarEnum.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.tfq.finances.core.enums; - -import com.tfq.finances.jzrcj.R; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public enum AvatarEnum { - // 枚举实例 - AVATAR1(1, "头像1", R.mipmap.avatar_01, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR2(2, "头像2", R.mipmap.avatar_02, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR3(3, "头像3", R.mipmap.avatar_03, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR4(4, "头像4", R.mipmap.avatar_04, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR5(5, "头像5", R.mipmap.avatar_05, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR6(6, "头像6", R.mipmap.avatar_06, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR7(7, "头像7", R.mipmap.avatar_07, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR8(8, "头像8", R.mipmap.avatar_08, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR9(9, "头像9", R.mipmap.avatar_09, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR10(10, "头像10", R.mipmap.avatar_10, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR11(11, "头像11", R.mipmap.avatar_11, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR12(12, "头像12", R.mipmap.avatar_12, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR13(13, "头像13", R.mipmap.avatar_13, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR14(14, "头像14", R.mipmap.avatar_14, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR15(15, "头像15", R.mipmap.avatar_15, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR16(16, "头像16", R.mipmap.avatar_16, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR17(17, "头像17", R.mipmap.avatar_17, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR18(18, "头像18", R.mipmap.avatar_18, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR19(19, "头像19", R.mipmap.avatar_19, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null), - AVATAR20(20, "头像20", R.mipmap.avatar_20, R.drawable.ll_boder_head, R.drawable.ll_boder_head_null); - - private final int id; - private final String name; - private final int avatar; - private final int icUnOnChecked; - private final int icOnChecked; - - // 缓存映射 - private static final Map ID_MAP = new HashMap<>(); - private static final Map NAME_MAP = new HashMap<>(); - - static { - for (AvatarEnum category : values()) { - ID_MAP.put(category.id, category); - NAME_MAP.put(category.name, category); - } - } - - AvatarEnum(int id, String name, int avatar, int icOnChecked, int icUnOnChecked) { - this.id = id; - this.name = name; - this.avatar = avatar; - this.icOnChecked = icOnChecked; - this.icUnOnChecked = icUnOnChecked; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public int getAvatar() { - return avatar; - } - - public int getIcUnOnChecked() { - return icUnOnChecked; - } - - public int getIcOnChecked() { - return icOnChecked; - } - - /** - * 获取所有枚举的列表 - * @return 包含所有枚举的列表 - */ - public static List getAll() { - List list = new ArrayList<>(); - for (AvatarEnum category : values()) { - list.add(category); - } - return list; - } - - /** - * 根据ID获取枚举 - * @param id 枚举ID - * @return 对应的枚举实例,未找到返回null - */ - public static AvatarEnum getById(int id) { - return ID_MAP.get(id); - } - - /** - * 根据名称获取枚举 - * @param name 枚举名称 - * @return 对应的枚举实例,未找到返回null - */ - public static AvatarEnum getByName(String name) { - return NAME_MAP.get(name); - } - - /** - * 根据ID获取名称 - * @param id 枚举ID - * @return 对应的名称,未找到返回null - */ - public static String getNameById(int id) { - AvatarEnum category = ID_MAP.get(id); - return category != null ? category.name : null; - } - - /** - * 根据ID获取头像 - * @param id 枚举ID - * @return 对应的名称,未找到返回null - */ - public static int getAvatarById(int id) { - AvatarEnum category = ID_MAP.get(id); - return category != null ? category.avatar : 0; - } - - /** - * 根据名称获取ID - * @param name 枚举名称 - * @return 对应的ID,未找到返回-1 - */ - public static int getIdByName(String name) { - AvatarEnum category = NAME_MAP.get(name); - return category != null ? category.id : -1; - } -} diff --git a/app/src/main/java/com/tfq/finances/core/enums/SystemExpensesCategoriesEnum.java b/app/src/main/java/com/tfq/finances/core/enums/SystemExpensesCategoriesEnum.java deleted file mode 100644 index fc33c90..0000000 --- a/app/src/main/java/com/tfq/finances/core/enums/SystemExpensesCategoriesEnum.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.tfq.finances.core.enums; - -import com.tfq.finances.jzrcj.R; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public enum SystemExpensesCategoriesEnum { - // 枚举实例 - RESTAURANT(31325, "餐饮", R.mipmap.ic_cy_check, R.mipmap.ic_cy_checked), - FRUIT(31326, "水果", R.mipmap.ic_sg_check, R.mipmap.ic_sg_checked), - SNACK(31327, "零食", R.mipmap.ic_ls_check, R.mipmap.ic_ls_checked), - GROCERY(31328, "买菜", R.mipmap.ic_mc_check, R.mipmap.ic_mc_checked), - CHILD(31329, "孩子", R.mipmap.ic_hz_check, R.mipmap.ic_hz_checked), - MEMBERSHIP(31330, "会员", R.mipmap.ic_hy_check, R.mipmap.ic_hy_checked), - COURIER(31331, "快递", R.mipmap.ic_kd_check, R.mipmap.ic_kd_checked), - BEAUTY(31332, "美容", R.mipmap.ic_mr_check, R.mipmap.ic_mr_checked), - STUDY(31333, "学习", R.mipmap.ic_xx_check, R.mipmap.ic_xx_checked), - DAILY_NECESSITIES(31334, "日用品", R.mipmap.ic_ryp_check, R.mipmap.ic_ryp_checked), - UTILITIES(31335, "水电煤", R.mipmap.ic_sdm_check, R.mipmap.ic_sdm_checked), - COMMUNICATION(31336, "通讯", R.mipmap.ic_tx_check, R.mipmap.ic_tx_checked), - MAINTENANCE(31337, "维修", R.mipmap.ic_wx_check, R.mipmap.ic_wx_checked), - TRANSPORTATION(31338, "交通", R.mipmap.ic_jt_check, R.mipmap.ic_jt_checked), - PET(31339, "宠物", R.mipmap.ic_cw_check, R.mipmap.ic_cw_checked), - LOTTERY(31340, "彩票", R.mipmap.ic_cp_check, R.mipmap.ic_cp_checked), - CLOTHING(31341, "服饰", R.mipmap.ic_fs_check, R.mipmap.ic_fs_checked), - GIFT(31342, "礼物", R.mipmap.ic_lw_check, R.mipmap.ic_lw_checked), - DIGITAL(31343, "数码", R.mipmap.ic_sm_check, R.mipmap.ic_sm_checked), - ENTERTAINMENT(31344, "娱乐", R.mipmap.ic_yl_check, R.mipmap.ic_yl_checked), - MEDICINE(31345, "医药", R.mipmap.ic_yy_check, R.mipmap.ic_yy_checked), - HOUSING(31346, "住房", R.mipmap.ic_zf_check, R.mipmap.ic_zf_checked), - CAR(31347, "汽车", R.mipmap.ic_qc_check, R.mipmap.ic_qc_checked), - ELECTRICAL_APPLIANCE(31348, "电器", R.mipmap.ic_dq_check, R.mipmap.ic_dq_checked), - OFFICE(31349, "办公", R.mipmap.ic_bg_check, R.mipmap.ic_bg_checked), - INSURANCE(31350, "保险", R.mipmap.ic_bx_check, R.mipmap.ic_bx_checked), - FURNITURE(31351, "家具", R.mipmap.ic_jj_check, R.mipmap.ic_jj_checked), - DONATION(31352, "捐赠", R.mipmap.ic_jzeng_check, R.mipmap.ic_jzeng_checked), - SPORTS(31353, "运动", R.mipmap.ic_yd_check, R.mipmap.ic_yd_checked), - TRAVEL(31354, "旅行", R.mipmap.ic_lx_check, R.mipmap.ic_lx_checked), - INVESTMENT(31355, "投资", R.mipmap.ic_tz_check, R.mipmap.ic_tz_checked), - GAME(31356, "游戏", R.mipmap.ic_yx_check, R.mipmap.ic_yx_checked), - CASH_GIFT(31357, "礼金", R.mipmap.ic_lj_check, R.mipmap.ic_lj_checked), - JEWELRY(31358, "珠宝", R.mipmap.ic_zb_check, R.mipmap.ic_zb_checked), - ELDERS(31359, "长辈", R.mipmap.ic_zbei_check, R.mipmap.ic_zbei_checked), - TOBACCO_ALCOHOL(31360, "烟酒", R.mipmap.ic_yj_check, R.mipmap.ic_yj_checked); - - private final int id; - private final String name; - private final int iconUnchecked; - private final int iconChecked; - - // 缓存映射 - private static final Map ID_MAP = new HashMap<>(); - private static final Map NAME_MAP = new HashMap<>(); - - static { - for (SystemExpensesCategoriesEnum category : values()) { - ID_MAP.put(category.id, category); - NAME_MAP.put(category.name, category); - } - } - - SystemExpensesCategoriesEnum(int id, String name, int iconUnchecked, int iconChecked) { - this.id = id; - this.name = name; - this.iconUnchecked = iconUnchecked; - this.iconChecked = iconChecked; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public int getIconUnchecked() { - return iconUnchecked; - } - - public int getIconChecked() { - return iconChecked; - } - - /** - * 获取所有枚举的列表 - * @return 包含所有枚举的列表 - */ - public static List getAll() { - List list = new ArrayList<>(); - for (SystemExpensesCategoriesEnum category : values()) { - list.add(category); - } - return list; - } - - /** - * 根据ID获取枚举 - * @param id 枚举ID - * @return 对应的枚举实例,未找到返回null - */ - public static SystemExpensesCategoriesEnum getById(int id) { - return ID_MAP.get(id); - } - - /** - * 根据名称获取枚举 - * @param name 枚举名称 - * @return 对应的枚举实例,未找到返回null - */ - public static SystemExpensesCategoriesEnum getByName(String name) { - return NAME_MAP.get(name); - } - - /** - * 根据ID获取名称 - * @param id 枚举ID - * @return 对应的名称,未找到返回null - */ - public static String getNameById(int id) { - SystemExpensesCategoriesEnum category = ID_MAP.get(id); - return category != null ? category.name : null; - } - - /** - * 根据ID获取选中的图标 - * @param id 枚举ID - * @return 对应的名称,未找到返回null - */ - public static int getCheckedIconById(int id) { - SystemExpensesCategoriesEnum category = ID_MAP.get(id); - return category != null ? category.iconChecked : -1; - } - - /** - * 根据名称获取ID - * @param name 枚举名称 - * @return 对应的ID,未找到返回-1 - */ - public static int getIdByName(String name) { - SystemExpensesCategoriesEnum category = NAME_MAP.get(name); - return category != null ? category.id : -1; - } -} diff --git a/app/src/main/java/com/tfq/finances/core/enums/SystemIncomeCategoriesEnum.java b/app/src/main/java/com/tfq/finances/core/enums/SystemIncomeCategoriesEnum.java deleted file mode 100644 index 5a88ad0..0000000 --- a/app/src/main/java/com/tfq/finances/core/enums/SystemIncomeCategoriesEnum.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.tfq.finances.core.enums; - -import com.tfq.finances.jzrcj.R; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public enum SystemIncomeCategoriesEnum { - // 枚举实例 - RED_PACKET(31361, "收红包", R.mipmap.ic_shb_check, R.mipmap.ic_shb_checked), - SALARY(31362, "工资", R.mipmap.ic_gz_check, R.mipmap.ic_gz_checked), - PART_TIME_JOB(31363, "兼职", R.mipmap.ic_jz_check, R.mipmap.ic_jz_checked), - FINANCIAL_MANAGEMENT(31364, "理财", R.mipmap.ic_lc_check, R.mipmap.ic_lc_checked), - INSURANCE(31365, "保险", R.mipmap.ic_bx_check, R.mipmap.ic_bx_checked), - BONUS(31366, "奖金", R.mipmap.ic_jjin_check, R.mipmap.ic_jjin_checked), - REIMBURSEMENT(31367, "报销", R.mipmap.ic_bxiao_check, R.mipmap.ic_bxiao_checked); - - private final int id; - private final String name; - private final int mipmapCheck; - private final int mipmapChecked; - - // 缓存映射 - private static final Map ID_MAP = new HashMap<>(); - private static final Map NAME_MAP = new HashMap<>(); - - static { - for (SystemIncomeCategoriesEnum category : values()) { - ID_MAP.put(category.id, category); - NAME_MAP.put(category.name, category); - } - } - - SystemIncomeCategoriesEnum(int id, String name, int mipmapCheck, int mipmapChecked) { - this.id = id; - this.name = name; - this.mipmapCheck = mipmapCheck; - this.mipmapChecked = mipmapChecked; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public int getIconUnchecked() { - return mipmapCheck; - } - - public int getIconChecked() { - return mipmapChecked; - } - - /** - * 获取所有枚举的列表 - * @return 包含所有枚举的列表 - */ - public static List getAll() { - List list = new ArrayList<>(); - for (SystemIncomeCategoriesEnum category : values()) { - list.add(category); - } - return list; - } - - /** - * 根据ID获取枚举 - * @param id 枚举ID - * @return 对应的枚举实例,未找到返回null - */ - public static SystemIncomeCategoriesEnum getById(int id) { - return ID_MAP.get(id); - } - - /** - * 根据名称获取枚举 - * @param name 枚举名称 - * @return 对应的枚举实例,未找到返回null - */ - public static SystemIncomeCategoriesEnum getByName(String name) { - return NAME_MAP.get(name); - } - - /** - * 根据ID获取名称 - * @param id 枚举ID - * @return 对应的名称,未找到返回null - */ - public static String getNameById(int id) { - SystemIncomeCategoriesEnum category = ID_MAP.get(id); - return category != null ? category.name : null; - } - - /** - * 根据ID获取选中的图标 - * @param id 枚举ID - * @return 对应的名称,未找到返回null - */ - public static int getCheckedIconById(int id) { - SystemIncomeCategoriesEnum category = ID_MAP.get(id); - return category != null ? category.mipmapChecked : -1; - } - - /** - * 根据名称获取ID - * @param name 枚举名称 - * @return 对应的ID,未找到返回-1 - */ - public static int getIdByName(String name) { - SystemIncomeCategoriesEnum category = NAME_MAP.get(name); - return category != null ? category.id : -1; - } -} diff --git a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Budgets.java b/app/src/main/java/com/tfq/finances/finances/activity/Activity_Budgets.java deleted file mode 100644 index f5ce67d..0000000 --- a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Budgets.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.tfq.finances.finances.activity; - -import android.annotation.SuppressLint; -import android.os.Bundle; -import android.view.View; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; - -import com.tfq.ad.ad.AdFeedUtils; -import com.tfq.ad.app.ADConstants; -import com.tfq.ad.app.AdApp; -import com.tfq.finances.finances.view.CircleProgressBarWithAnimation; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.network.api.finances.BudgetsService; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.model.response.finances.budgets.BudgetsMonthResp; -import com.tfq.finances.network.model.response.finances.budgets.BudgetsResp; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.base.BaseActivity; -import com.tfq.library.utils.AddTextDialog; -import com.tfq.library.utils.AppUtil; -import com.tfq.library.utils.LogK; -import com.tfq.library.utils.ToasterUtil; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -public class Activity_Budgets extends BaseActivity { - - private CircleProgressBarWithAnimation progressBar; - private TextView tv_month; - private TextView tv_residue; - private TextView tv_current; - private TextView tv_expenditure; - private FrameLayout fl_content; - - @Override - protected int getLayoutId() { - return R.layout.activity_budgets_layout; - } - - @Override - protected void initView() { - ImageView iv_back = findViewById(R.id.iv_back); - iv_back.setOnClickListener(this::onClick); - TextView tv_edit = findViewById(R.id.tv_edit); - tv_edit.setOnClickListener(this::onClick); - tv_residue = findViewById(R.id.tv_residue); - tv_current = findViewById(R.id.tv_current); - tv_expenditure = findViewById(R.id.tv_expenditure); - tv_month = findViewById(R.id.tv_month); - - progressBar = findViewById(R.id.progressBar); - fl_content = findViewById(R.id.fl_content); - - } - - @SuppressLint("SetTextI18n") - @Override - protected void initData(Bundle savedInstanceState) { - setStatusBarDarkFont(true); - - getMonthBudgetsInfo(); - } - - @Override - protected void onResume() { - super.onResume(); - initAd(); - } - - private void initAd() { - AdFeedUtils.show_ad(this, AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_FEED1), fl_content, 20, "budgets", 3); - } - - @Override - protected void onPause() { - super.onPause(); - - AdFeedUtils.cancelTag("budgets"); - } - - @SuppressLint("SetTextI18n") - private void getMonthBudgetsInfo( ) { - // 方式1:使用SimpleDateFormat(兼容所有API版本) - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM", Locale.getDefault()); - // 初始化 - String currentDate = sdf.format(new Date()); - tv_month.setText(currentDate.split("-")[1] + "月总预算"); - new BudgetsService(this).getMonthBudgetsInfo(currentDate, new ApiCallback() { - @Override - public void onSuccess(BudgetsMonthResp response) { - if (response!=null) { - tv_residue.setText(String.valueOf(response.getRemainingAmount())); - tv_current.setText(String.valueOf(response.getAmount())); - tv_expenditure.setText(String.valueOf(response.getTotalExpenses())); - - // 随机生成0-100的进度值 - float randomProgress = 0; - if (response.getTotalExpenses().compareTo(response.getAmount()) > 0) {//支出大于预算 - randomProgress = 100; - } else { - BigDecimal divide = response.getTotalExpenses().divide(response.getAmount(), 2, RoundingMode.HALF_UP); - randomProgress = divide.multiply(new BigDecimal(100)).floatValue(); - } - - // 随机生成0-100的进度值 -// float randomProgress = (float) (Math.random() * 100); - // 带动画设置新进度 - progressBar.setProgress(randomProgress, true); - }else { - // 带动画设置新进度 - progressBar.setProgress(0, true); - } - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - - } - }); - } - - public void onClick(View view) { - int viewId = view.getId(); - if (viewId == R.id.iv_back) { - finish(); - } else if (viewId == R.id.tv_edit) { - addBudgetsDialog(); - } - } - - - private void addBudgetsDialog() { - new AddTextDialog(this, "", "设置预算", "budgets", new AddTextDialog.Listener() { - @Override - public void success(String name) { - LogK.e("name=" + name); - if (AppUtil.isNumeric(name)) { - // 方式1:使用SimpleDateFormat(兼容所有API版本) - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM", Locale.getDefault()); - // 初始化 - String currentDate = sdf.format(new Date()); - new BudgetsService(Activity_Budgets.this).setBudgetsInfo(new BigDecimal(name),currentDate, new ApiCallback() { - @Override - public void onSuccess(BudgetsResp response) { - getMonthBudgetsInfo(); - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - ToasterUtil.show(errorMessage); - } - }); - }else { - ToasterUtil.show("输入不准确"); - } - } - }).show(); - } -} diff --git a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Detail_Add.java b/app/src/main/java/com/tfq/finances/finances/activity/Activity_Detail_Add.java deleted file mode 100644 index 8454dbf..0000000 --- a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Detail_Add.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.tfq.finances.finances.activity; - -import static android.view.View.GONE; -import static android.view.View.VISIBLE; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.fragment.app.Fragment; -import androidx.viewpager2.widget.ViewPager2; - -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.finances.fragment.Fm_Page_Expenditure; -import com.tfq.finances.finances.fragment.Fm_Page_Income; -import com.tfq.library.adapter.MyFragmentStateAdapter; -import com.tfq.library.base.BaseActivity; -import com.tfq.library.utils.AppUtil; - -import java.util.ArrayList; -import java.util.List; - -public class Activity_Detail_Add extends BaseActivity { - - private ViewPager2 viewPager; - private boolean isReqSuccessRefreshRv; - private View view1, view2; - - @Override - protected int getLayoutId() { - return R.layout.activity_detail_add; - } - - @Override - protected void initView() { - ImageView iv_back = findViewById(R.id.iv_back); - iv_back.setOnClickListener(this::onClick); - TextView tv_left = findViewById(R.id.tv_left); - tv_left.setOnClickListener(this::onClick); - TextView tv_right = findViewById(R.id.tv_right); - tv_right.setOnClickListener(this::onClick); - viewPager = findViewById(R.id.viewPager); - view1 = findViewById(R.id.view1); - view2 = findViewById(R.id.view2); - - List fragmentList = new ArrayList<>(); - fragmentList.add(new Fm_Page_Expenditure()); - fragmentList.add(new Fm_Page_Income()); - - viewPager.setAdapter(new MyFragmentStateAdapter(getSupportFragmentManager(), getLifecycle(), fragmentList)); - viewPager.registerOnPageChangeCallback(PagerChangeListener()); - viewPager.setUserInputEnabled(false); - - } - - @Override - protected void initData(Bundle savedInstanceState) { - setStatusBarDarkFont(true); - } - - public void onClick(View view) { - int viewId = view.getId(); - if (viewId == R.id.iv_back) { - toFinish(); - } else if (viewId == R.id.tv_left) { - viewPager.setCurrentItem(0); - view1.setVisibility(VISIBLE); - view2.setVisibility(GONE); - } else if (viewId == R.id.tv_right) { - viewPager.setCurrentItem(1); - view2.setVisibility(VISIBLE); - view1.setVisibility(GONE); - } - } - - private void toFinish() { - if (isReqSuccessRefreshRv) { - isReqSuccessRefreshRv = false; - Intent intent = new Intent(); - setResult(Activity.RESULT_OK, intent); - finish(); - } else { - finish(); - } - } - - @Override - protected void onPause() { - super.onPause(); - -// AppUtil.closeKeyBoard(this); - } - - public void setReqSuccessRefreshRv(boolean isReqSuccessRefreshRv) { - this.isReqSuccessRefreshRv = isReqSuccessRefreshRv; - } - - @Override - public void onBackPressed() { - if (true) { - // 自定义拦截逻辑(如显示确认对话框) - toFinish(); - } else { - super.onBackPressed(); // 默认返回行为 - } - } - - - private ViewPager2.OnPageChangeCallback PagerChangeListener() { - return new ViewPager2.OnPageChangeCallback() { - @Override - public void onPageSelected(int position) { - super.onPageSelected(position); - switch (position) { - case 0: - - break; - case 1: - - break; - } - } - }; - } - -} diff --git a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Transactions.java b/app/src/main/java/com/tfq/finances/finances/activity/Activity_Transactions.java deleted file mode 100644 index 274f8db..0000000 --- a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Transactions.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.tfq.finances.finances.activity; - -import android.annotation.SuppressLint; -import android.graphics.Color; -import android.os.Bundle; -import android.os.Handler; -import android.view.View; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.tfq.ad.ad.AdFeedUtils; -import com.tfq.ad.app.ADConstants; -import com.tfq.ad.app.AdApp; -import com.tfq.finances.finances.adapter.TransactionsAdapter; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.network.api.finances.BillsService; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.model.response.finances.transactions.BillsResp; -import com.tfq.finances.utils.BigDecimalUtils; -import com.tfq.finances.utils.androidpicker.CalculateUtils; -import com.tfq.finances.utils.androidpicker.DateMode; -import com.tfq.finances.utils.animation.AnimationClick; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.base.BaseActivity; -import com.tfq.library.utils.RecyclerViewHelper; -import com.tfq.library.utils.ToasterUtil; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Locale; - -import androidx.recyclerview.widget.RecyclerView; - -public class Activity_Transactions extends BaseActivity { - - private TextView tv_month; - private TextView tv_year; - private CalculateUtils calculateUtils; - private TextView tv_choose_year; - private RecyclerView recycler_view; - private TransactionsAdapter mAdapter; - private boolean isReqServer; - private LinearLayout ll_choose_year; - private TextView tv_balance, tv_income, tv_expenditure; - private TextView tv01, tv02, tv03, tv04, tv05, tv06, tv07; - private FrameLayout fl_content; - - @Override - protected int getLayoutId() { - return R.layout.activity_transactions_layout; - } - - @Override - protected void initView() { - ImageView iv_back = findViewById(R.id.iv_back); - iv_back.setOnClickListener(this::onClick); - tv_month = findViewById(R.id.tv_month); - tv_month.setOnClickListener(this::onClick); - tv_year = findViewById(R.id.tv_year); - tv_year.setOnClickListener(this::onClick); - ll_choose_year = findViewById(R.id.ll_choose_year); - ll_choose_year.setOnClickListener(this::onClick); - tv_choose_year = findViewById(R.id.tv_choose_year); - - recycler_view = findViewById(R.id.recycler_view); - - fl_content = findViewById(R.id.fl_content); - - tv_balance = findViewById(R.id.tv_balance); - tv_income = findViewById(R.id.tv_income); - tv_expenditure = findViewById(R.id.tv_expenditure); - tv01 = findViewById(R.id.tv_01); - tv02 = findViewById(R.id.tv_02); - tv03 = findViewById(R.id.tv_03); - tv04 = findViewById(R.id.tv_04); - tv05 = findViewById(R.id.tv_05); - tv06 = findViewById(R.id.tv_06); - tv07 = findViewById(R.id.tv_07); - - initRecyclerView(); - } - - @SuppressLint("SetTextI18n") - @Override - protected void initData(Bundle savedInstanceState) { - setStatusBarDarkFont(true); - - checkLeft(); - } - - private void initAd() { - AdFeedUtils.show_ad(this, AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_FEED1), fl_content, 20, "budgets", 3); - } - - @Override - protected void onPause() { - super.onPause(); - - AdFeedUtils.cancelTag("budgets"); - } - - private void getMonthBillsInfo(String currentDate) { - new BillsService(this).getMonthBillsInfo(currentDate, new ApiCallback>() { - @Override - public void onSuccess(List response) { - setAdapter(response); - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - ToasterUtil.show(errorMessage); - } - }); - } - - private void setAdapter(List response) { - if (response != null && !response.isEmpty()) { - mAdapter.setNewData(response); - List balance = new ArrayList<>(); - List expenditure = new ArrayList<>(); - List income = new ArrayList<>(); - for (int i = 0; i < response.size(); i++) { - balance.add(response.get(i).getBalance()); - expenditure.add(response.get(i).getExpenditure()); - income.add(response.get(i).getIncome()); - } - - BigDecimal sum = BigDecimalUtils.sum(expenditure); - tv_expenditure.setText(String.valueOf(sum)); - BigDecimal sum2 = BigDecimalUtils.sum(income); - tv_income.setText(String.valueOf(sum2)); - BigDecimal sum3 = BigDecimalUtils.sum(balance); - tv_balance.setText(String.valueOf(sum3)); - - AnimationClick.startScaleAnimation(recycler_view); - } else { - mAdapter.setNewData(new ArrayList<>()); - tv_expenditure.setText("0"); - tv_income.setText("0"); - tv_balance.setText("0"); - } - } - - private void initRecyclerView() { - mAdapter = new TransactionsAdapter(R.layout.item_transactions_layout); - recycler_view.setAdapter(mAdapter); - RecyclerViewHelper.initRecyclerViewV(this, recycler_view, mAdapter); - - } - - public void onClick(View view) { - int viewId = view.getId(); - if (viewId == R.id.iv_back) { - finish(); - } else if (viewId == R.id.tv_month) { - checkLeft(); - } else if (viewId == R.id.tv_year) { - checkRight(); - } else if (viewId == R.id.ll_choose_year) { - if (!isReqServer) { - isReqServer = true; - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - isReqServer = false; - } - }, 500); - calculateUtils.yearMonthDay(DateMode.YEAR); - calculateUtils.choose_date(tv_choose_year); - calculateUtils.setListener(new CalculateUtils.Listener() { - @Override - public void success(String year) { - getMonthBillsInfo(year); - } - }); - } - } - } - - private void checkLeft() { - tv_month.setTextColor(Color.parseColor("#FFFFFF")); - tv_year.setTextColor(Color.parseColor("#000000")); - tv_month.setSelected(true); - tv_year.setSelected(false); - - ll_choose_year.setVisibility(View.VISIBLE); - - // 方式1:使用SimpleDateFormat(兼容所有API版本) - SimpleDateFormat sdf = new SimpleDateFormat("yyyy", Locale.getDefault()); - // 初始化 - calculateUtils = new CalculateUtils(this); - String currentDate = sdf.format(new Date()); - tv_choose_year.setText(currentDate + "年"); - getMonthBillsInfo(currentDate); - - tv01.setText("月份"); - tv02.setText("月收入"); - tv03.setText("月支出"); - tv04.setText("月结余"); - tv05.setText("月结余"); - tv06.setText("月收入"); - tv07.setText("月支出"); - - initAd(); - } - - private void checkRight() { - tv_month.setTextColor(Color.parseColor("#000000")); - tv_year.setTextColor(Color.parseColor("#FFFFFF")); - tv_month.setSelected(false); - tv_year.setSelected(true); - - ll_choose_year.setVisibility(View.GONE); - - getYearBillsInfo(); - - tv01.setText("年份"); - tv02.setText("年收入"); - tv03.setText("年支出"); - tv04.setText("年结余"); - tv05.setText("年结余"); - tv06.setText("年收入"); - tv07.setText("年支出"); - - initAd(); - } - - private void getYearBillsInfo() { - new BillsService(this).getYearBillsInfo(new ApiCallback>() { - @Override - public void onSuccess(List response) { - setAdapter(response); - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - ToasterUtil.show(errorMessage); - } - }); - } - -} diff --git a/app/src/main/java/com/tfq/finances/finances/adapter/HeadAdapter.java b/app/src/main/java/com/tfq/finances/finances/adapter/HeadAdapter.java deleted file mode 100644 index d503757..0000000 --- a/app/src/main/java/com/tfq/finances/finances/adapter/HeadAdapter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.tfq.finances.finances.adapter; - -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; -import com.tfq.finances.app.App; -import com.tfq.finances.core.enums.CommonTypeOriginEnum; -import com.tfq.finances.finances.model.HeadConfig; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.main.model.TypeOriginConfig; -import com.tfq.finances.utils.animation.AnimationClick; - -public class HeadAdapter extends BaseQuickAdapter { - - public HeadAdapter(int layoutID) { - super(layoutID); - } - - @Override - protected void convert(BaseViewHolder helper, HeadConfig entity) { - helper.setImageResource(R.id.iv_head, entity.getHeadResource()!=-1?entity.getHeadResource(): R.mipmap.ic_head); - if (entity.getItemCheck()){ - helper.setBackgroundRes(R.id.iv_head, entity.getHeadChecked()); - AnimationClick.startScaleAnimation(helper.getView(R.id.iv_head)); - }else { - helper.setBackgroundRes(R.id.iv_head, entity.getHeadCheck()); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/finances/adapter/TransactionsAdapter.java b/app/src/main/java/com/tfq/finances/finances/adapter/TransactionsAdapter.java deleted file mode 100644 index 3579b8e..0000000 --- a/app/src/main/java/com/tfq/finances/finances/adapter/TransactionsAdapter.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.tfq.finances.finances.adapter; - -import android.text.TextUtils; - -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.network.model.response.finances.transactions.BillsResp; - -public class TransactionsAdapter extends BaseQuickAdapter { - - public TransactionsAdapter(int layoutID) { - super(layoutID); - } - - @Override - protected void convert(BaseViewHolder helper, BillsResp entity) { - if (!TextUtils.isEmpty(entity.getTimeKey())) { - if (entity.getTimeKey().length() > 2) { - helper.setText(R.id.tv_timeKey, entity.getTimeKey() + "年"); - } else { - helper.setText(R.id.tv_timeKey, entity.getTimeKey() + "月"); - } - } else { - helper.setText(R.id.tv_timeKey, "未知"); - } - helper.setText(R.id.tv_expenditure, String.valueOf(entity.getExpenditure())); - helper.setText(R.id.tv_income, String.valueOf(entity.getIncome())); - helper.setText(R.id.tv_balance, String.valueOf(entity.getBalance())); - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/finances/fragment/Fm_Page_Expenditure.java b/app/src/main/java/com/tfq/finances/finances/fragment/Fm_Page_Expenditure.java deleted file mode 100644 index 911ffbe..0000000 --- a/app/src/main/java/com/tfq/finances/finances/fragment/Fm_Page_Expenditure.java +++ /dev/null @@ -1,396 +0,0 @@ -package com.tfq.finances.finances.fragment; - -import android.annotation.SuppressLint; -import android.os.Bundle; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.github.gzuliyujiang.wheelpicker.annotation.DateMode; -import com.gyf.immersionbar.ImmersionBar; -import com.gyf.immersionbar.OnKeyboardListener; -import com.tfq.finances.core.enums.CommonTypeOriginEnum; -import com.tfq.finances.core.enums.SystemExpensesCategoriesEnum; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.main.adapter.TypeOriginAdapter; -import com.tfq.finances.main.model.TypeOriginConfig; -import com.tfq.finances.network.api.finances.CategoriesService; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.token.TokenManager; -import com.tfq.finances.network.model.response.finances.categories.CategoriesAllResp; -import com.tfq.finances.network.model.response.finances.categories.CategoriesData; -import com.tfq.finances.utils.androidpicker.CalculateUtils; -import com.tfq.finances.utils.animation.AnimationClick; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.base.BaseFragment; -import com.tfq.library.utils.AddTextDialog; -import com.tfq.library.utils.AppUtil; -import com.tfq.library.utils.LogK; -import com.tfq.library.utils.RecyclerViewHelper; -import com.tfq.library.utils.ToasterUtil; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import static android.view.View.VISIBLE; - -/** - * 支出 - */ -public class Fm_Page_Expenditure extends BaseFragment { - - private LinearLayout ll_keyboard; - private LinearLayout ll, ll_today; - private EditText et_remark; - private TextView tv_0, tv_1, tv_2, tv_3, tv_4, tv_5, tv_6, tv_7, tv_8, tv_9, tv_dot; - private TextView tv_num1, tv_num2, tv_symbol1, tv_result, tv_add, tv_subtract, tv_complete, tv_today; - private ImageView iv_delete, iv_today, iv_hide_keybord; - private long lastEventTime = 0; - private CalculateUtils calculateUtils; - private RecyclerView recycler_view; - private int old_checked_item = 0; - private TypeOriginAdapter mAdapter; - - @Override - protected int getLayoutId() { - return R.layout.fm_page_expenditure; - } - - @Override - protected void initView() { - ll_keyboard = findViewBy_Id(R.id.ll_keyboard); - ll = findViewBy_Id(R.id.ll); - - tv_result = findViewBy_Id(R.id.tv_result); - et_remark = findViewBy_Id(R.id.et_remark); - tv_7 = findViewBy_Id(R.id.tv_7); - tv_8 = findViewBy_Id(R.id.tv_8); - tv_9 = findViewBy_Id(R.id.tv_9); - ll_today = findViewBy_Id(R.id.ll_today); - tv_today = findViewBy_Id(R.id.tv_today); - iv_today = findViewBy_Id(R.id.iv_today); - tv_4 = findViewBy_Id(R.id.tv_4); - tv_5 = findViewBy_Id(R.id.tv_5); - tv_6 = findViewBy_Id(R.id.tv_6); - tv_add = findViewBy_Id(R.id.tv_add); - tv_1 = findViewBy_Id(R.id.tv_1); - tv_2 = findViewBy_Id(R.id.tv_2); - tv_3 = findViewBy_Id(R.id.tv_3); - tv_subtract = findViewBy_Id(R.id.tv_subtract); - tv_dot = findViewBy_Id(R.id.tv_dot); - tv_0 = findViewBy_Id(R.id.tv_0); - iv_delete = findViewBy_Id(R.id.iv_delete); - tv_complete = findViewBy_Id(R.id.tv_complete); - tv_num1 = findViewBy_Id(R.id.tv_num1); - tv_num2 = findViewBy_Id(R.id.tv_num2); - tv_symbol1 = findViewBy_Id(R.id.tv_symbol1); - iv_hide_keybord = findViewBy_Id(R.id.iv_hide_keybord); - ll.setVisibility(View.GONE); - - recycler_view = findViewBy_Id(R.id.recycler_view); - - initListener(); - } - - private void initListener() { - tv_7.setOnClickListener(this::onClick); - tv_8.setOnClickListener(this::onClick); - tv_9.setOnClickListener(this::onClick); - ll_today.setOnClickListener(this::onClick); - tv_4.setOnClickListener(this::onClick); - tv_5.setOnClickListener(this::onClick); - tv_6.setOnClickListener(this::onClick); - tv_add.setOnClickListener(this::onClick); - tv_1.setOnClickListener(this::onClick); - tv_2.setOnClickListener(this::onClick); - tv_3.setOnClickListener(this::onClick); - tv_subtract.setOnClickListener(this::onClick); - tv_dot.setOnClickListener(this::onClick); - tv_0.setOnClickListener(this::onClick); - iv_delete.setOnClickListener(this::onClick); - tv_complete.setOnClickListener(this::onClick); - iv_hide_keybord.setOnClickListener(this::onClick); - - } - - @Override - protected void initData(Bundle savedInstanceState) { - ImmersionBar.with(this) - .statusBarDarkFont(true) - .navigationBarColor(BaseConstants.navigationBarColor) - .keyboardEnable(true) - .setOnKeyboardListener(new OnKeyboardListener() { - @Override - public void onKeyboardChange(boolean isPopup, int keyboardHeight) { - LogK.e("isPopup=" + isPopup); //isPopup为true,软键盘弹出,为false,软键盘关闭 - if (System.currentTimeMillis() - lastEventTime > 100) { // 100ms间隔阈值 - lastEventTime = System.currentTimeMillis(); - if (isPopup) { - ll_keyboard.setVisibility(View.GONE); - } else { - ll_keyboard.setVisibility(View.VISIBLE); - } - } - - } - }).init(); - - // 初始化 - calculateUtils = new CalculateUtils(getActivity()); - calculateUtils.initialize(1, tv_complete, tv_num1, tv_num2, tv_symbol1, tv_result, tv_today, et_remark); - - initRecyclerView(); - - reqCategoriesAll(); - - } - - private void initRecyclerView() { - mAdapter = new TypeOriginAdapter(R.layout.item_type_origin_layout); - recycler_view.setAdapter(mAdapter); - GridLayoutManager manager = new GridLayoutManager(getActivity(), 4, RecyclerView.VERTICAL, false); - RecyclerViewHelper.initRecyclerViewV(getActivity(), recycler_view, mAdapter); - recycler_view.setLayoutManager(manager); - List typeOriginConfigs = getTypeOriginConfigs(); - mAdapter.setNewData(typeOriginConfigs); - mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @SuppressLint("NotifyDataSetChanged") - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - if (getOldCheckedItem() != position) { - if (mAdapter.getData().get(position).getTypeOriginId() == -1) {//点击自定义应该弹窗并且选中,若取消弹窗,应该返回之前的老按钮 - addTypeDialog(); - } else { - setAndRefresh(position); - calculateUtils.setOriginBean(mAdapter.getData().get(position)); - - refreshRv(position); - - ll.setVisibility(View.VISIBLE); - } - } else { - refreshRv(position); - - ll.setVisibility(View.VISIBLE); - } - } - }); - AnimationClick.startScaleAnimation(recycler_view); - - calculateUtils.setOriginBean(mAdapter.getData().get(0)); - } - - private void refreshRv(int position) { - RecyclerView.LayoutManager layoutManager = recycler_view.getLayoutManager(); - // 或者方法3:使用scrollToPositionWithOffset - if (layoutManager instanceof LinearLayoutManager) { - View view = layoutManager.findViewByPosition(position); - if (view != null) { - LogK.e("recycler_view.getHeight()1=" + recycler_view.getHeight()); - int offset = 200; - if (ll.getVisibility() == VISIBLE) { - offset = recycler_view.getHeight() / 2 - view.getHeight() / 2; - } /*else { - ll.setVisibility(VISIBLE); - // 或者方法3:使用scrollToPositionWithOffset - offset = recycler_view.getHeight() / 2 - ll.getHeight() / 2 - view.getHeight() / 2; - }*/ - ((LinearLayoutManager) layoutManager).scrollToPositionWithOffset(position, offset); - } - } - } - - private void reqCategoriesAll() { - TokenManager instance = TokenManager.getInstance(getActivity()); - new CategoriesService(getActivity()).getCategoriesList(instance.getUserId(), 1, new ApiCallback() { - @Override - public void onSuccess(CategoriesAllResp response) { - List list = new ArrayList<>(); - if (response.getUser() != null && !response.getUser().isEmpty()) { - for (CategoriesData categoriesData : Objects.requireNonNull(response.getUser())) { - String name = categoriesData.getName(); - int id = categoriesData.getId(); - - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.USER.getName()); - config.setTypeOriginId(id); - config.setTypeOriginName(name); - config.setTypeOriginIdCheck(R.mipmap.ic_zdy_check); - config.setTypeOriginIdChecked(R.mipmap.ic_zdy_checked); - list.add(config); - } - } - - addZdyType(list); - if (getActivity() != null) { - getActivity().runOnUiThread(() -> { - mAdapter.addData(list); - }); - } - - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - ToasterUtil.show(errorMessage); - } - }); - } - - public void onClick(View view) { - int viewId = view.getId(); - - if (viewId == R.id.tv_7) { - calculateUtils.press("7", tv_7); - } else if (viewId == R.id.tv_8) { - calculateUtils.press("8", tv_8); - } else if (viewId == R.id.tv_9) { - calculateUtils.press("9", tv_9); - } else if (viewId == R.id.ll_today) { - calculateUtils.yearMonthDay(DateMode.YEAR_MONTH); - calculateUtils.choose_date(tv_today, iv_today); - } else if (viewId == R.id.tv_4) { - calculateUtils.press("4", tv_4); - } else if (viewId == R.id.tv_5) { - calculateUtils.press("5", tv_5); - } else if (viewId == R.id.tv_6) { - calculateUtils.press("6", tv_6); - } else if (viewId == R.id.tv_add) { - calculateUtils.symbol("+"); - } else if (viewId == R.id.tv_1) { - calculateUtils.press("1", tv_1); - } else if (viewId == R.id.tv_2) { - calculateUtils.press("2", tv_2); - } else if (viewId == R.id.tv_3) { - calculateUtils.press("3", tv_3); - } else if (viewId == R.id.tv_subtract) { - calculateUtils.symbol("-"); - } else if (viewId == R.id.tv_dot) { - calculateUtils.press(".", tv_dot); - } else if (viewId == R.id.tv_0) { - calculateUtils.press("0", tv_0); - } else if (viewId == R.id.iv_delete) { - calculateUtils.onClickDelete(); - } else if (viewId == R.id.tv_complete) { - if (tv_complete.getText().toString().equals("完成")){ - ll.setVisibility(View.GONE); - AppUtil.closeKeyBoard(ll); - } - calculateUtils.onClickFinish(); - } else if (viewId == R.id.iv_hide_keybord) { - ll.setVisibility(View.GONE); - AppUtil.closeKeyBoard(ll); - } - } - - private void addZdyType(List list) { - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.USER.getName()); - config.setTypeOriginId(-1); - config.setTypeOriginName("自定义"); - config.setTypeOriginIdCheck(R.mipmap.ic_zdy_check); - config.setTypeOriginIdChecked(R.mipmap.ic_zdy_checked); - list.add(config); - } - - private void addZdyResponse(String response, String name) { - List data = mAdapter.getData(); - - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.USER.getName()); - config.setTypeOriginId(Integer.parseInt(response)); - config.setTypeOriginName(name); - config.setTypeOriginIdCheck(R.mipmap.ic_zdy_check); - config.setTypeOriginIdChecked(R.mipmap.ic_zdy_checked); - data.add(data.size() - 1, config); - - setAndRefreshNoCheck(data.size() - 2); - -// refreshRv(getOldCheckedItem()); - } - - @SuppressLint("NotifyDataSetChanged") - private void setAndRefresh(int position) { - mAdapter.getData().get(position).setItemCheck(true); - mAdapter.getData().get(getOldCheckedItem()).setItemCheck(false); - setOldCheckedItem(position); - mAdapter.notifyDataSetChanged(); - - calculateUtils.setOriginBean(mAdapter.getData().get(position)); - } - - @SuppressLint("NotifyDataSetChanged") - private void setAndRefreshNoCheck(int position) { - mAdapter.notifyDataSetChanged(); - } - - private void addTypeDialog() { - new AddTextDialog(getActivity(), new AddTextDialog.ListenerFail() { - @Override - public void success(String name) { - LogK.e("success"); - new CategoriesService(getActivity()).addCategories(1, name, "", new ApiCallback() { - @Override - public void onSuccess(String response) {//response 31370 是id - if (getActivity() != null) { - getActivity().runOnUiThread(() -> { - addZdyResponse(response, name); - }); - } - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - ToasterUtil.show(errorMessage); - } - }); - } - - @SuppressLint("NotifyDataSetChanged") - @Override - public void callCancel() { - LogK.e("callCancel"); - - } - }).show(); - } - - @NonNull - private List getTypeOriginConfigs() { - List typeOriginConfigs = new ArrayList<>(); - - List categoriesEnumList = SystemExpensesCategoriesEnum.getAll(); - for (int i = 0; i < categoriesEnumList.size(); i++) { - SystemExpensesCategoriesEnum systemExpensesCategoriesEnum = categoriesEnumList.get(i); - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.SYSTEM.getName()); - config.setTypeOriginId(systemExpensesCategoriesEnum.getId()); - config.setTypeOriginName(systemExpensesCategoriesEnum.getName()); - config.setTypeOriginIdCheck(systemExpensesCategoriesEnum.getIconUnchecked()); - config.setTypeOriginIdChecked(systemExpensesCategoriesEnum.getIconChecked()); - if (i == 0) { - config.setItemCheck(true); - } - typeOriginConfigs.add(config); - } - return typeOriginConfigs; - } - - public int getOldCheckedItem() { - return old_checked_item; - } - - public void setOldCheckedItem(int old_checked_item) { - this.old_checked_item = old_checked_item; - } - -} diff --git a/app/src/main/java/com/tfq/finances/finances/fragment/Fm_Page_Income.java b/app/src/main/java/com/tfq/finances/finances/fragment/Fm_Page_Income.java deleted file mode 100644 index 77be351..0000000 --- a/app/src/main/java/com/tfq/finances/finances/fragment/Fm_Page_Income.java +++ /dev/null @@ -1,384 +0,0 @@ -package com.tfq.finances.finances.fragment; - -import android.annotation.SuppressLint; -import android.os.Bundle; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.github.gzuliyujiang.wheelpicker.annotation.DateMode; -import com.gyf.immersionbar.ImmersionBar; -import com.gyf.immersionbar.OnKeyboardListener; -import com.tfq.finances.core.enums.CommonTypeOriginEnum; -import com.tfq.finances.core.enums.SystemIncomeCategoriesEnum; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.main.adapter.TypeOriginAdapter; -import com.tfq.finances.main.model.TypeOriginConfig; -import com.tfq.finances.network.api.finances.CategoriesService; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.token.TokenManager; -import com.tfq.finances.network.model.response.finances.categories.CategoriesAllResp; -import com.tfq.finances.network.model.response.finances.categories.CategoriesData; -import com.tfq.finances.utils.androidpicker.CalculateUtils; -import com.tfq.finances.utils.animation.AnimationClick; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.base.BaseFragment; -import com.tfq.library.utils.AddTextDialog; -import com.tfq.library.utils.AppUtil; -import com.tfq.library.utils.LogK; -import com.tfq.library.utils.RecyclerViewHelper; -import com.tfq.library.utils.ToasterUtil; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import static android.view.View.VISIBLE; - -/** - * 支出 - */ -public class Fm_Page_Income extends BaseFragment { - - private LinearLayout ll, ll_today; - private EditText et_remark; - private TextView tv_0, tv_1, tv_2, tv_3, tv_4, tv_5, tv_6, tv_7, tv_8, tv_9, tv_dot; - private TextView tv_num1, tv_num2, tv_symbol1, tv_result, tv_add, tv_subtract, tv_complete, tv_today; - private ImageView iv_delete, iv_today, iv_hide_keybord; - private LinearLayout ll_keyboard; - private long lastEventTime = 0; - - private CalculateUtils calculateUtils; - private TypeOriginAdapter mAdapter; - private RecyclerView recycler_view; - private int old_checked_item = 0; - - @Override - protected int getLayoutId() { - return R.layout.fm_page_income; - } - - @Override - protected void initView() { - ll_keyboard = findViewBy_Id(R.id.ll_keyboard); - ll = findViewBy_Id(R.id.ll); - - tv_result = findViewBy_Id(R.id.tv_result); - et_remark = findViewBy_Id(R.id.et_remark); - tv_7 = findViewBy_Id(R.id.tv_7); - tv_8 = findViewBy_Id(R.id.tv_8); - tv_9 = findViewBy_Id(R.id.tv_9); - ll_today = findViewBy_Id(R.id.ll_today); - tv_today = findViewBy_Id(R.id.tv_today); - iv_today = findViewBy_Id(R.id.iv_today); - tv_4 = findViewBy_Id(R.id.tv_4); - tv_5 = findViewBy_Id(R.id.tv_5); - tv_6 = findViewBy_Id(R.id.tv_6); - tv_add = findViewBy_Id(R.id.tv_add); - tv_1 = findViewBy_Id(R.id.tv_1); - tv_2 = findViewBy_Id(R.id.tv_2); - tv_3 = findViewBy_Id(R.id.tv_3); - tv_subtract = findViewBy_Id(R.id.tv_subtract); - tv_dot = findViewBy_Id(R.id.tv_dot); - tv_0 = findViewBy_Id(R.id.tv_0); - iv_delete = findViewBy_Id(R.id.iv_delete); - tv_complete = findViewBy_Id(R.id.tv_complete); - tv_num1 = findViewBy_Id(R.id.tv_num1); - tv_num2 = findViewBy_Id(R.id.tv_num2); - tv_symbol1 = findViewBy_Id(R.id.tv_symbol1); - iv_hide_keybord = findViewBy_Id(R.id.iv_hide_keybord); - ll.setVisibility(View.GONE); - - recycler_view = findViewBy_Id(R.id.recycler_view); - - initListener(); - } - - private void initListener() { - tv_7.setOnClickListener(this::onClick); - tv_8.setOnClickListener(this::onClick); - tv_9.setOnClickListener(this::onClick); - ll_today.setOnClickListener(this::onClick); - tv_4.setOnClickListener(this::onClick); - tv_5.setOnClickListener(this::onClick); - tv_6.setOnClickListener(this::onClick); - tv_add.setOnClickListener(this::onClick); - tv_1.setOnClickListener(this::onClick); - tv_2.setOnClickListener(this::onClick); - tv_3.setOnClickListener(this::onClick); - tv_subtract.setOnClickListener(this::onClick); - tv_dot.setOnClickListener(this::onClick); - tv_0.setOnClickListener(this::onClick); - iv_delete.setOnClickListener(this::onClick); - tv_complete.setOnClickListener(this::onClick); - iv_hide_keybord.setOnClickListener(this::onClick); - - } - - @Override - protected void initData(Bundle savedInstanceState) { - ImmersionBar.with(this) - .statusBarDarkFont(true) - .navigationBarColor(BaseConstants.navigationBarColor) - .keyboardEnable(true) - .setOnKeyboardListener(new OnKeyboardListener() { - @Override - public void onKeyboardChange(boolean isPopup, int keyboardHeight) { - LogK.e("isPopup=" + isPopup); //isPopup为true,软键盘弹出,为false,软键盘关闭 - if (System.currentTimeMillis() - lastEventTime > 100) { // 100ms间隔阈值 - lastEventTime = System.currentTimeMillis(); - if (isPopup) { - ll_keyboard.setVisibility(View.GONE); - } else { - ll_keyboard.setVisibility(View.VISIBLE); - } - } - - } - }).init(); - - // 初始化 - calculateUtils = new CalculateUtils(getActivity()); - calculateUtils.initialize(2, tv_complete, tv_num1, tv_num2, tv_symbol1, tv_result, tv_today, et_remark); - - initRecyclerView(); - - reqCategoriesAll(); - } - - private void initRecyclerView() { - mAdapter = new TypeOriginAdapter(R.layout.item_type_origin_layout); - recycler_view.setAdapter(mAdapter); - GridLayoutManager manager = new GridLayoutManager(getActivity(), 4, RecyclerView.VERTICAL, false); - RecyclerViewHelper.initRecyclerViewV(getActivity(), recycler_view, mAdapter); - recycler_view.setLayoutManager(manager); - List typeOriginConfigs = getTypeOriginConfigs(); - mAdapter.setNewData(typeOriginConfigs); - mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @SuppressLint("NotifyDataSetChanged") - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - if (getOldCheckedItem() != position) { - if (mAdapter.getData().get(position).getTypeOriginId() == -1) {//点击自定义应该弹窗并且选中,若取消弹窗,应该返回之前的老按钮 - addTypeDialog(); - } else { - setAndRefresh(position); - calculateUtils.setOriginBean(mAdapter.getData().get(position)); - - refreshRv(position); - - ll.setVisibility(View.VISIBLE); - } - } - } - }); - AnimationClick.startScaleAnimation(recycler_view); - - calculateUtils.setOriginBean(mAdapter.getData().get(0)); - } - - private void refreshRv(int position) { - RecyclerView.LayoutManager layoutManager = recycler_view.getLayoutManager(); - // 或者方法3:使用scrollToPositionWithOffset - if (layoutManager instanceof LinearLayoutManager) { - View view = layoutManager.findViewByPosition(position); - if (view != null) { - LogK.e("recycler_view.getHeight()1=" + recycler_view.getHeight()); - int offset = 800; - if (ll.getVisibility() == VISIBLE) { - offset = recycler_view.getHeight() / 2 - view.getHeight() / 2; - } else { - ll.setVisibility(VISIBLE); - // 或者方法3:使用scrollToPositionWithOffset - offset = recycler_view.getHeight() / 2 - ll.getHeight() / 2 - view.getHeight() / 2; - } - ((LinearLayoutManager) layoutManager).scrollToPositionWithOffset(position, offset); - } - } - - } - - private void reqCategoriesAll() { - TokenManager instance = TokenManager.getInstance(getActivity()); - new CategoriesService(getActivity()).getCategoriesList(instance.getUserId(), 2, new ApiCallback() { - @Override - public void onSuccess(CategoriesAllResp response) { - List list = new ArrayList<>(); - if (response.getUser() != null && !response.getUser().isEmpty()) { - for (CategoriesData categoriesData : Objects.requireNonNull(response.getUser())) { - String name = categoriesData.getName(); - int id = categoriesData.getId(); - - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.USER.getName()); - config.setTypeOriginId(id); - config.setTypeOriginName(name); - config.setTypeOriginIdCheck(R.mipmap.ic_zdy_check); - config.setTypeOriginIdChecked(R.mipmap.ic_zdy_checked); - list.add(config); - } - } - - addZdyType(list); - if (getActivity() != null) { - getActivity().runOnUiThread(() -> { - mAdapter.addData(list); - }); - } - - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - - } - }); - } - - public void onClick(View view) { - int viewId = view.getId(); - - if (viewId == R.id.tv_7) { - calculateUtils.press("7", tv_7); - } else if (viewId == R.id.tv_8) { - calculateUtils.press("8", tv_8); - } else if (viewId == R.id.tv_9) { - calculateUtils.press("9", tv_9); - } else if (viewId == R.id.ll_today) { - calculateUtils.yearMonthDay(DateMode.YEAR_MONTH); - calculateUtils.choose_date(tv_today, iv_today); - } else if (viewId == R.id.tv_4) { - calculateUtils.press("4", tv_4); - } else if (viewId == R.id.tv_5) { - calculateUtils.press("5", tv_5); - } else if (viewId == R.id.tv_6) { - calculateUtils.press("6", tv_6); - } else if (viewId == R.id.tv_add) { - calculateUtils.symbol("+"); - } else if (viewId == R.id.tv_1) { - calculateUtils.press("1", tv_1); - } else if (viewId == R.id.tv_2) { - calculateUtils.press("2", tv_2); - } else if (viewId == R.id.tv_3) { - calculateUtils.press("3", tv_3); - } else if (viewId == R.id.tv_subtract) { - calculateUtils.symbol("-"); - } else if (viewId == R.id.tv_dot) { - calculateUtils.press(".", tv_dot); - } else if (viewId == R.id.tv_0) { - calculateUtils.press("0", tv_0); - } else if (viewId == R.id.iv_delete) { - calculateUtils.onClickDelete(); - } else if (viewId == R.id.tv_complete) { - if (tv_complete.getText().toString().equals("完成")){ - ll.setVisibility(View.GONE); - AppUtil.closeKeyBoard(ll); - } - calculateUtils.onClickFinish(); - } else if (viewId == R.id.iv_hide_keybord) { - ll.setVisibility(View.GONE); - AppUtil.closeKeyBoard(ll); - } - } - - private void addZdyType(List list) { - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.USER.getName()); - config.setTypeOriginId(-1); - config.setTypeOriginName("自定义"); - config.setTypeOriginIdCheck(R.mipmap.ic_zdy_check); - config.setTypeOriginIdChecked(R.mipmap.ic_zdy_checked); - list.add(config); - } - - private void addZdyResponse(String response, String name) { - List data = mAdapter.getData(); - - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.USER.getName()); - config.setTypeOriginId(Integer.parseInt(response)); - config.setTypeOriginName(name); - config.setTypeOriginIdCheck(R.mipmap.ic_zdy_check); - config.setTypeOriginIdChecked(R.mipmap.ic_zdy_checked); - data.add(data.size() - 1, config); - - setAndRefresh(data.size() - 2); - - refreshRv(getOldCheckedItem()); - } - - @SuppressLint("NotifyDataSetChanged") - private void setAndRefresh(int position) { - mAdapter.getData().get(position).setItemCheck(true); - mAdapter.getData().get(getOldCheckedItem()).setItemCheck(false); - setOldCheckedItem(position); - mAdapter.notifyDataSetChanged(); - - calculateUtils.setOriginBean(mAdapter.getData().get(position)); - } - - private void addTypeDialog() { - new AddTextDialog(getActivity(), new AddTextDialog.ListenerFail() { - @Override - public void success(String name) { - LogK.e("success"); - new CategoriesService(getActivity()).addCategories(2, name, "", new ApiCallback() { - @Override - public void onSuccess(String response) {//response 31370 是id - addZdyResponse(response, name); - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - ToasterUtil.show(errorMessage); - } - }); - } - - @SuppressLint("NotifyDataSetChanged") - @Override - public void callCancel() { - LogK.e("callCancel"); - - } - }).show(); - } - - @NonNull - private List getTypeOriginConfigs() { - List typeOriginConfigs = new ArrayList<>(); - - List categoriesEnumList = SystemIncomeCategoriesEnum.getAll(); - for (int i = 0; i < categoriesEnumList.size(); i++) { - SystemIncomeCategoriesEnum systemIncomeCategoriesEnum = categoriesEnumList.get(i); - TypeOriginConfig config = new TypeOriginConfig(); - config.setType(CommonTypeOriginEnum.SYSTEM.getName()); - config.setTypeOriginId(systemIncomeCategoriesEnum.getId()); - config.setTypeOriginName(systemIncomeCategoriesEnum.getName()); - config.setTypeOriginIdCheck(systemIncomeCategoriesEnum.getIconUnchecked()); - config.setTypeOriginIdChecked(systemIncomeCategoriesEnum.getIconChecked()); - if (i == 0) { - config.setItemCheck(true); - } - typeOriginConfigs.add(config); - } - return typeOriginConfigs; - } - - public int getOldCheckedItem() { - return old_checked_item; - } - - public void setOldCheckedItem(int old_checked_item) { - this.old_checked_item = old_checked_item; - } - -} diff --git a/app/src/main/java/com/tfq/finances/finances/model/HeadConfig.kt b/app/src/main/java/com/tfq/finances/finances/model/HeadConfig.kt deleted file mode 100644 index 5778bfd..0000000 --- a/app/src/main/java/com/tfq/finances/finances/model/HeadConfig.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.tfq.finances.finances.model - -import com.tfq.finances.jzrcj.R - -data class HeadConfig( - - /** - * 类别id - */ - var headId: Int = -1, - - /** - * 类别名称 - */ - var headName: String = "", - - /** - * 类别名称 - */ - var headResource: Int = -1, - - /** - * 类别未选中资源id - */ - var headChecked: Int = R.drawable.ll_boder_head, - - /** - * 类别未选中资源id - */ - var headCheck: Int = R.drawable.ll_boder_head_null, - - /** - * 类别选中 - */ - var itemCheck: Boolean = false, - - ) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Login.java b/app/src/main/java/com/tfq/finances/main/Activity_Login.java similarity index 98% rename from app/src/main/java/com/tfq/finances/finances/activity/Activity_Login.java rename to app/src/main/java/com/tfq/finances/main/Activity_Login.java index ac7334a..9c03860 100644 --- a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Login.java +++ b/app/src/main/java/com/tfq/finances/main/Activity_Login.java @@ -1,4 +1,4 @@ -package com.tfq.finances.finances.activity; +package com.tfq.finances.main; import android.annotation.SuppressLint; import android.content.Intent; @@ -20,8 +20,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.main.Activity_Main; +import com.tfq.demo.R; import com.tfq.finances.main.activity.Activity_Tw; import com.tfq.finances.main.activity.Activity_WebView; import com.tfq.finances.network.api.member.MemberService; diff --git a/app/src/main/java/com/tfq/finances/main/Activity_Main.java b/app/src/main/java/com/tfq/finances/main/Activity_Main.java index 38d82b8..511f9ba 100644 --- a/app/src/main/java/com/tfq/finances/main/Activity_Main.java +++ b/app/src/main/java/com/tfq/finances/main/Activity_Main.java @@ -1,5 +1,6 @@ package com.tfq.finances.main; +import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; import android.view.View; @@ -9,7 +10,7 @@ import androidx.fragment.app.Fragment; import androidx.viewpager2.widget.ViewPager2; import com.google.gson.Gson; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; import com.tfq.finances.network.api.userinfo.UserInfoService; import com.tfq.finances.network.config.ApiCallback; import com.tfq.finances.network.model.response.userinfo.UserInfoData; @@ -17,7 +18,6 @@ import com.tfq.finances.network.model.response.userinfo.UserInfoResp; import com.tfq.library.adapter.MyFragmentStateAdapter; import com.tfq.library.base.BaseActivity; import com.tfq.finances.main.fragment.Fm_Page_A; -import com.tfq.finances.main.fragment.Fm_Page_B; import com.tfq.finances.main.fragment.Fm_Page_S; import com.tfq.library.utils.LogK; import com.tfq.library.utils.ToasterUtil; @@ -27,12 +27,10 @@ import java.util.List; public class Activity_Main extends BaseActivity { - ImageView ivLocal; - ImageView ivPrivate; - ImageView ivSetting; + ImageView iv01; + ImageView iv10; ViewPager2 viewPager; private boolean mOnPage = false; - public static UserInfoData memberUser; @Override protected int getLayoutId() { @@ -41,17 +39,14 @@ public class Activity_Main extends BaseActivity { @Override protected void initView() { - ivLocal = findViewById(R.id.iv_page01); - ivLocal.setOnClickListener(this::onClick); - ivPrivate = findViewById(R.id.iv_page02); - ivPrivate.setOnClickListener(this::onClick); - ivSetting = findViewById(R.id.iv_page03); - ivSetting.setOnClickListener(this::onClick); + iv01 = findViewById(R.id.iv_page01); + iv01.setOnClickListener(this::onClick); + iv10 = findViewById(R.id.iv_page10); + iv10.setOnClickListener(this::onClick); viewPager = findViewById(R.id.viewPager); List fragmentList = new ArrayList<>(); fragmentList.add(new Fm_Page_A()); - fragmentList.add(new Fm_Page_B()); fragmentList.add(new Fm_Page_S()); viewPager.setAdapter(new MyFragmentStateAdapter(getSupportFragmentManager(), getLifecycle(), fragmentList)); @@ -72,7 +67,6 @@ public class Activity_Main extends BaseActivity { new UserInfoService(this).getInfo(new ApiCallback() { @Override public void onSuccess(UserInfoResp response) { - memberUser = response.getMemberUser(); LogK.e(new Gson().toJson(response)); } @@ -89,10 +83,7 @@ public class Activity_Main extends BaseActivity { if (viewId == R.id.iv_page01 && !mOnPage) { viewPager.setCurrentItem(0); toTime(); - } else if (viewId == R.id.iv_page02 && !mOnPage) { - viewPager.setCurrentItem(1); - toTime(); - } else if (viewId == R.id.iv_page03 && !mOnPage) { + }else if (viewId == R.id.iv_page10 && !mOnPage) { viewPager.setCurrentItem(2); toTime(); } @@ -115,24 +106,18 @@ public class Activity_Main extends BaseActivity { private ViewPager2.OnPageChangeCallback PagerChangeListener() { return new ViewPager2.OnPageChangeCallback() { + @SuppressLint("UseCompatLoadingForDrawables") @Override public void onPageSelected(int position) { super.onPageSelected(position); switch (position) { case 0: - ivLocal.setImageDrawable(getDrawable(R.mipmap.image_page1_2)); - ivPrivate.setImageDrawable(getDrawable(R.mipmap.image_page2_1)); - ivSetting.setImageDrawable(getDrawable(R.mipmap.image_page3_1)); + iv01.setImageDrawable(getDrawable(R.mipmap.image_page1_2)); + iv10.setImageDrawable(getDrawable(R.mipmap.image_page2_1)); break; case 1: - ivLocal.setImageDrawable(getDrawable(R.mipmap.image_page1_1)); - ivPrivate.setImageDrawable(getDrawable(R.mipmap.image_page2_2)); - ivSetting.setImageDrawable(getDrawable(R.mipmap.image_page3_1)); - break; - case 2: - ivLocal.setImageDrawable(getDrawable(R.mipmap.image_page1_1)); - ivPrivate.setImageDrawable(getDrawable(R.mipmap.image_page2_1)); - ivSetting.setImageDrawable(getDrawable(R.mipmap.image_page3_2)); + iv01.setImageDrawable(getDrawable(R.mipmap.image_page1_1)); + iv10.setImageDrawable(getDrawable(R.mipmap.image_page2_2)); break; } } diff --git a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Setting_More.java b/app/src/main/java/com/tfq/finances/main/Activity_Setting_More.java similarity index 73% rename from app/src/main/java/com/tfq/finances/finances/activity/Activity_Setting_More.java rename to app/src/main/java/com/tfq/finances/main/Activity_Setting_More.java index 20a6653..0777e8e 100644 --- a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Setting_More.java +++ b/app/src/main/java/com/tfq/finances/main/Activity_Setting_More.java @@ -1,4 +1,4 @@ -package com.tfq.finances.finances.activity; +package com.tfq.finances.main; import android.app.Activity; import android.content.Intent; @@ -12,19 +12,16 @@ import android.widget.TextView; import com.tfq.ad.ad.AdCQPUtils; import com.tfq.finances.app.App; -import com.tfq.finances.core.enums.AvatarEnum; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.main.Activity_Main; +import com.tfq.demo.R; import com.tfq.finances.network.api.feedback.FeedbackService; import com.tfq.finances.network.api.userinfo.UserInfoService; import com.tfq.finances.network.config.ApiCallback; import com.tfq.finances.network.config.token.TokenManager; -import com.tfq.finances.utils.ChooseHeadDialog; +import com.tfq.finances.utils.ConfirmationDialog; +import com.tfq.finances.view.AddTextDialog; import com.tfq.library.base.BaseActivity; -import com.tfq.library.utils.AddTextDialog; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; -import com.tfq.library.utils.PermissionDialog; import com.tfq.library.utils.ToasterUtil; import androidx.annotation.Nullable; @@ -56,10 +53,6 @@ public class Activity_Setting_More extends BaseActivity { private LinearLayout ll_nickname; private LinearLayout ll_cancel_account; private TextView tv_phone; - /** - * 用户头像资源id - */ - private int avatarById; /** * 用户头像索引 */ @@ -108,24 +101,6 @@ public class Activity_Setting_More extends BaseActivity { @Override protected void initData(Bundle savedInstanceState) { tvTitle.setText(FEEDBACK_TITLE); - String nickname = Activity_Main.memberUser.getNickname(); - tv_nickname.setText(!TextUtils.isEmpty(nickname) ? nickname : ""); - String mobile = maskPhoneNumber(Activity_Main.memberUser.getMobile()); - tv_phone.setText(!TextUtils.isEmpty(mobile) ? mobile : ""); - - try { - avatar = Activity_Main.memberUser.getAvatar(); - LogK.e("avatar="+avatar); - if (AppUtil.isInteger(avatar) && Integer.parseInt(avatar) > 0) { - avatarById = AvatarEnum.getAvatarById(Integer.parseInt(avatar)); - iv_avatar.setImageResource(avatarById); - } else { - avatar = "-1"; - } - } catch (Exception e) { - e.printStackTrace(); - avatar = "-1"; - } } @@ -142,15 +117,7 @@ public class Activity_Setting_More extends BaseActivity { public void onClick(View view) { // 保留这个方法以满足可能的其他点击需求 if (view.getId() == R.id.ll_head) { - new ChooseHeadDialog(this, "choose_head", "选择头像", "", new ChooseHeadDialog.Listener() { - @Override - public void success(int avatarId) { - avatar_Id = avatarId; - avatar = String.valueOf(avatarId); - String nickname = tv_nickname.getText().toString().trim(); - setInfo(true, avatarId, nickname); - } - }).show(); + } else if (view.getId() == R.id.ll_nickname) {//昵称 String nickname = tv_nickname.getText().toString().trim(); new AddTextDialog(this, nickname, "修改用户昵称", "nickname", new AddTextDialog.Listener() { @@ -163,7 +130,7 @@ public class Activity_Setting_More extends BaseActivity { } }).show(); } else if (view.getId() == R.id.ll_cancel_account) {//注销 - new PermissionDialog(this, "注销账号", "注意: 注销账号后所有数据将不可恢复,请谨慎操作", new PermissionDialog.Listener() { + new ConfirmationDialog(this, "注销账号", "注意: 注销账号后所有数据将不可恢复,请谨慎操作", new ConfirmationDialog.Listener() { @Override public void success() { cancelAccount(); @@ -205,19 +172,11 @@ public class Activity_Setting_More extends BaseActivity { } private void setInfo(boolean isAvatar, int avatarId, String nickname) { - int avatarById = AvatarEnum.getAvatarById(avatarId); - LogK.e("avatarById="+avatarById); - if (avatarById > 0) { - iv_avatar.setImageResource(avatarById); - } new UserInfoService(Activity_Setting_More.this).setInfo(nickname, String.valueOf(avatarId), new ApiCallback() { @Override public void onSuccess(Boolean response) { ToasterUtil.show(isAvatar ? "头像更新成功" : "昵称更新成功"); - if (isAvatar) { - Activity_Main.memberUser.setAvatar(String.valueOf(avatarId)); - } - Activity_Main.memberUser.setNickname(nickname); + } @Override diff --git a/app/src/main/java/com/tfq/finances/main/Activity_Splash.java b/app/src/main/java/com/tfq/finances/main/Activity_Splash.java index 206afc0..17c27b3 100644 --- a/app/src/main/java/com/tfq/finances/main/Activity_Splash.java +++ b/app/src/main/java/com/tfq/finances/main/Activity_Splash.java @@ -22,10 +22,9 @@ import android.widget.TextView; import com.tfq.ad.ad.AdSplashUtils; import com.tfq.ad.ad.SplashUtils; import com.tfq.ad.ad.TTAdManagerHolder; +import com.tfq.demo.R; import com.tfq.finances.app.App; import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.finances.activity.Activity_Login; -import com.tfq.finances.jzrcj.R; import com.tfq.finances.main.activity.Activity_Tw; import com.tfq.finances.main.activity.Activity_WebView; import com.tfq.finances.network.api.adv.AdService; @@ -75,7 +74,7 @@ public class Activity_Splash extends Activity { private void startSecurity() { //TODO 显示提醒对话框 - Dialog securityDialog = new Dialog(this, R.style.CustomDialog); + Dialog securityDialog = new Dialog(this, com.tfq.library.R.style.Dialog); securityDialog.setCancelable(false); securityDialog.setCanceledOnTouchOutside(false); View view = View.inflate(this, R.layout.dialog_activity_sercurity, null); @@ -164,10 +163,14 @@ public class Activity_Splash extends Activity { private void to_main() { - TokenManager instance = TokenManager.getInstance(this); - boolean tokenValid = instance.isTokenValid(); - if (!tokenValid) { - startActivity(new Intent(Activity_Splash.this, Activity_Login.class)); + if (App.getInstances().isNeedLogin()) { + TokenManager instance = TokenManager.getInstance(this); + boolean tokenValid = instance.isTokenValid(); + if (!tokenValid) { + startActivity(new Intent(Activity_Splash.this, Activity_Login.class)); + } else { + startActivity(new Intent(Activity_Splash.this, Activity_Main.class)); + } } else { startActivity(new Intent(Activity_Splash.this, Activity_Main.class)); } diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_About.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_About.java index f85d85b..1085ac0 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_About.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_About.java @@ -6,7 +6,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; import com.tfq.library.base.BaseActivity; import com.tfq.library.utils.AppUtil; diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java index 5dd0964..6d2e8e5 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java @@ -13,7 +13,7 @@ import android.widget.TextView; import com.tfq.ad.ad.AdFeedUtils; import com.tfq.ad.app.ADConstants; import com.tfq.ad.app.AdApp; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; import com.tfq.library.app.BaseConstants; import com.tfq.library.base.BaseActivity; import com.tfq.library.utils.AppUtil; @@ -24,6 +24,9 @@ import com.tfq.finances.core.constants.Constants; import com.tfq.finances.app.App; import com.tfq.finances.main.Activity_Splash; +import static com.tfq.library.app.BaseConstants.AUTHORIZATIO; +import static com.tfq.library.app.BaseConstants.PRIVACY; + public class Activity_About_Us extends BaseActivity { private FrameLayout flContent; @@ -100,7 +103,7 @@ public class Activity_About_Us extends BaseActivity { intent.putExtra("title", "隐私政策"); startActivity(intent); } else if (viewId == R.id.ll_05) { - new AuthDialog(this, "privacy", new AuthDialog.Listener() { + new AuthDialog(this, PRIVACY, new AuthDialog.Listener() { @Override public void callBack() { Intent intent = new Intent(); @@ -116,7 +119,7 @@ public class Activity_About_Us extends BaseActivity { private void recallAuthorization() { - new AuthDialog(this, "authorizatio", new AuthDialog.Listener() { + new AuthDialog(this, AUTHORIZATIO, new AuthDialog.Listener() { @Override public void callBack() { ADConstants.AD_Switch_Requested = false; diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_Export.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_Export.java deleted file mode 100644 index a98472c..0000000 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_Export.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.tfq.finances.main.activity; - -import android.os.Bundle; -import android.text.TextUtils; -import android.util.Patterns; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import com.github.gzuliyujiang.wheelpicker.annotation.DateMode; -import com.hjq.toast.ToastParams; -import com.hjq.toast.Toaster; -import com.hjq.toast.style.CustomToastStyle; -import com.tfq.ad.ad.AdCQPUtils; -import com.tfq.ad.ad.AdRewardUtils; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.network.api.finances.TransactionsService; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.utils.DateCalculator; -import com.tfq.finances.utils.androidpicker.CalculateUtils; -import com.tfq.library.base.BaseActivity; -import com.tfq.library.utils.NetworkUtils; -import com.tfq.library.utils.PermissionDialog; -import com.tfq.library.utils.ToasterUtil; - -import androidx.annotation.Nullable; - -public class Activity_Export extends BaseActivity { - - - // 常量 - private static final String FEEDBACK_TITLE = "数据导出"; - private static final String EMPTY_START_MESSAGE = "请选择开始日期"; - private static final String EMPTY_END_MESSAGE = "请选择结束日期"; - private static final String EMPTY_MAIL_MESSAGE = "邮箱地址不能为空"; - private static final String INVALID_MAIL_MESSAGE = "您填写的邮箱地址不正确"; - private static final String SUCCESS_MESSAGE = "数据导出成功"; - /** - * 导出 - */ - private final TransactionsService transactionsService = new TransactionsService(this); - // UI组件 - private ImageView ivBack; - private TextView tvTitle; - private RelativeLayout rl_export; - private EditText et_email; - private TextView tv_timestart; - private TextView tv_timeend; - private CalculateUtils calculateUtils; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - setStatusBarDarkFont(true); - super.onCreate(savedInstanceState); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_export_layout; - } - - @Override - protected void initView() { - findViews(); - setupViews(); - } - - private void findViews() { - ivBack = findViewById(R.id.iv_back); - tvTitle = findViewById(R.id.tv_title); - rl_export = findViewById(R.id.rl_export); - et_email = findViewById(R.id.et_email); - tv_timestart = findViewById(R.id.tv_timestart); - tv_timeend = findViewById(R.id.tv_timeend); - } - - private void setupViews() { - ivBack.setOnClickListener(this::onBackClicked); - tv_timestart.setOnClickListener(this::onTimeStartClicked); - tv_timeend.setOnClickListener(this::onTimeEndClicked); - rl_export.setOnClickListener(this::onExportClicked); - } - - @Override - protected void initData(Bundle savedInstanceState) { - tvTitle.setText(FEEDBACK_TITLE); - - // 初始化 - calculateUtils = new CalculateUtils(this); - calculateUtils.yearMonthDay(DateMode.YEAR_MONTH_DAY); - - initializeAd(); - } - - @Override - protected void onResume() { - super.onResume(); - } - - private void initializeAd() { - new AdCQPUtils().init(this); - } - - public void onClick(View view) { - // 保留这个方法以满足可能的其他点击需求 - } - - private void onBackClicked(View view) { - finish(); - } - - private void onTimeStartClicked(View view) { - calculateUtils.choose_date(tv_timestart, ""); - calculateUtils.setListener(new CalculateUtils.Listener() { - @Override - public void success(String date) { - DateCalculator.DatePair datePair = DateCalculator.calculateMonthDates(date); - String nextMonth = datePair.nextMonth; - tv_timeend.setText(DateCalculator.isAfterToday(nextMonth) ? DateCalculator.getDefDate() : nextMonth); - } - }); - } - - private void onTimeEndClicked(View view) { - calculateUtils.choose_date(tv_timeend, ""); - calculateUtils.setListener(new CalculateUtils.Listener() { - @Override - public void success(String date) { - DateCalculator.DatePair datePair = DateCalculator.calculateMonthDates(date); - String previousMonth = datePair.previousMonth; - tv_timestart.setText(previousMonth); - } - }); - } - - private void onExportClicked(View view) { - submitFeedback(); - } - - private void submitFeedback() { - String email = et_email.getText().toString().trim(); - String start = tv_timestart.getText().toString().trim(); - String end = tv_timeend.getText().toString().trim(); - - if (!validateInput(start, end, email)) { - return; - } - - if (NetworkUtils.isConnectedAvailableNetwork(this)) { - new PermissionDialog(this, "export_data", "导出数据", "完整观看视频后方可导出数据", new PermissionDialog.Listener() { - @Override - public void success() { - new AdRewardUtils(Activity_Export.this, new AdRewardUtils.Listener() { - @Override - public void success(boolean b) { - exportDataToEmail(start, end, email); - } - }); - } - }).show(); - } else { - ToasterUtil.show("请先连接网络", 3); - } - - } - - private void exportDataToEmail(String start, String end, String email) { - transactionsService.exportTransactions(start, end, email, new ApiCallback() { - @Override - public void onSuccess(Boolean response) { - showSuccessAndFinish(); - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - showErrorToast(errorMessage); - } - }); - } - - private boolean validateInput(String start, String end, String email) { - if (TextUtils.isEmpty(start)) { - showToast(EMPTY_START_MESSAGE); - return false; - } - - if (TextUtils.isEmpty(end)) { - showToast(EMPTY_END_MESSAGE); - return false; - } - - if (TextUtils.isEmpty(email)) { - showToast(EMPTY_MAIL_MESSAGE); - return false; - } - - if (!isValidEmail(email)) { - showToast(INVALID_MAIL_MESSAGE); - return false; - } - - return true; - } - - private void showSuccessAndFinish() { - ToasterUtil.show(SUCCESS_MESSAGE, 1); -// finish(); - } - - private void showErrorToast(String message) { - ToastParams params = new ToastParams(); - params.text = message; - params.style = new CustomToastStyle(com.tfq.library.R.layout.toast_error); - Toaster.show(params); - } - - private void showToast(String message) { - ToasterUtil.show(message, 3); - } - - public boolean isValidEmail(CharSequence target) { - return target != null && Patterns.EMAIL_ADDRESS.matcher(target).matches(); - } -} diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java index 5a3600d..773b4c3 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java @@ -12,7 +12,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.hjq.permissions.XXPermissions; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; import com.tfq.library.base.BaseActivity; import com.tfq.library.utils.LogK; import com.tfq.library.utils.ToasterUtil; @@ -80,7 +80,7 @@ public class Activity_Font extends BaseActivity { selectedScaleIndex(4); } - boolean granted = XXPermissions.isGranted(this, new String[]{Manifest.permission.WRITE_SETTINGS}); + boolean granted = XXPermissions.isGrantedPermissions(this, new String[]{Manifest.permission.WRITE_SETTINGS}); if (!granted) { ll_perssion.setVisibility(View.VISIBLE); } @@ -92,7 +92,7 @@ public class Activity_Font extends BaseActivity { } private void onClick(View view) { - boolean granted = XXPermissions.isGranted(this, new String[]{Manifest.permission.WRITE_SETTINGS}); + boolean granted = XXPermissions.isGrantedPermissions(this, new String[]{Manifest.permission.WRITE_SETTINGS}); int viewId = view.getId(); if (viewId == R.id.iv_back) { diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_PbFeedback.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_PbFeedback.java index 248eeb1..caca654 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_PbFeedback.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_PbFeedback.java @@ -19,8 +19,7 @@ import com.tfq.library.base.BaseActivity; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.ToasterUtil; import com.tfq.finances.network.api.feedback.FeedbackService; -import com.tfq.finances.app.App; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; public class Activity_PbFeedback extends BaseActivity { @@ -150,7 +149,7 @@ public class Activity_PbFeedback extends BaseActivity { private void showErrorToast(String message) { ToastParams params = new ToastParams(); params.text = message; - params.style = new CustomToastStyle(com.tfq.library.R.layout.toast_error); + params.style = new CustomToastStyle(com.tfq.library.R.layout.library_toast_error); Toaster.show(params); } diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_Tw.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_Tw.java index 959ba42..abd4eb6 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_Tw.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_Tw.java @@ -6,7 +6,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; import com.tfq.library.base.BaseActivity; public class Activity_Tw extends BaseActivity { diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_WebView.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_WebView.java index c603dbf..16d2a0d 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_WebView.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_WebView.java @@ -18,7 +18,7 @@ import android.widget.TextView; import com.tfq.library.base.BaseActivity; import com.tfq.library.utils.LogK; import com.tfq.finances.core.utils.PolicyUtils; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; public class Activity_WebView extends BaseActivity { WebView webView; diff --git a/app/src/main/java/com/tfq/finances/main/adapter/IndexBillAdapter.java b/app/src/main/java/com/tfq/finances/main/adapter/IndexBillAdapter.java deleted file mode 100644 index c10bb8e..0000000 --- a/app/src/main/java/com/tfq/finances/main/adapter/IndexBillAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.tfq.finances.main.adapter; - -import android.view.View; -import android.widget.LinearLayout; - -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; -import com.tfq.finances.core.enums.CommonTypeOriginEnum; -import com.tfq.finances.core.enums.SystemExpensesCategoriesEnum; -import com.tfq.finances.core.enums.SystemIncomeCategoriesEnum; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.network.model.response.finances.transactions.TransactionsResp; -import com.tfq.finances.utils.androidpicker.CalculateUtils; -import com.tfq.library.utils.LogK; - -public class IndexBillAdapter extends BaseQuickAdapter { - - public IndexBillAdapter(int layoutID) { - super(layoutID); - } - - @Override - protected void convert(BaseViewHolder helper, TransactionsResp entity) { - LinearLayout ll_title = helper.getView(R.id.ll_title); - View view_short = helper.getView(R.id.view_short); - View view_long = helper.getView(R.id.view_long); - if (Boolean.TRUE.equals(entity.isShowTitle())) { - ll_title.setVisibility(View.VISIBLE); - view_short.setVisibility(View.GONE); - view_long.setVisibility(View.VISIBLE); - } else { - ll_title.setVisibility(View.GONE); - view_short.setVisibility(View.VISIBLE); - view_long.setVisibility(View.GONE); - } - helper.setText(R.id.tv_title, CalculateUtils.convertToChineseFormat(entity.getTransactionDate())); - helper.setText(R.id.tv_week, CalculateUtils.getWeekDay(entity.getUserDesc())); - //此处是标签名称 - helper.setText(R.id.tv_categoryName, entity.getCategoryName()); - - if (entity.getType() == 1) { - helper.setText(R.id.tv_amount, "-" + entity.getAmount()); - } else { - helper.setText(R.id.tv_amount, entity.getAmount().toString()); - } - - int iconChecked = SystemExpensesCategoriesEnum.getCheckedIconById(entity.getCategoryId()); - if (iconChecked==-1){ - iconChecked = SystemIncomeCategoriesEnum.getCheckedIconById(entity.getCategoryId()); - } - LogK.e("iconChecked="+iconChecked); - if (iconChecked > 0) { - helper.setImageResource(R.id.image_view, iconChecked); - } else { - helper.setImageResource(R.id.image_view, R.mipmap.ic_zdy_checked_text); - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/main/adapter/TypeOriginAdapter.java b/app/src/main/java/com/tfq/finances/main/adapter/TypeOriginAdapter.java deleted file mode 100644 index 7101a4e..0000000 --- a/app/src/main/java/com/tfq/finances/main/adapter/TypeOriginAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.tfq.finances.main.adapter; - -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; -import com.tfq.finances.core.enums.CommonTypeOriginEnum; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.utils.animation.AnimationClick; -import com.tfq.finances.main.model.TypeOriginConfig; - -public class TypeOriginAdapter extends BaseQuickAdapter { - - public TypeOriginAdapter(int layoutID) { - super(layoutID); - } - - @Override - protected void convert(BaseViewHolder helper, TypeOriginConfig entity) { - /*LinearLayout ll_title = helper.getView(R.id.ll_title); - View view_short = helper.getView(R.id.view_short); - View view_long = helper.getView(R.id.view_long); - if (entity.isShowTitle()) { - ll_title.setVisibility(View.VISIBLE); - view_short.setVisibility(View.GONE); - view_long.setVisibility(View.VISIBLE); - } else { - ll_title.setVisibility(View.GONE); - view_short.setVisibility(View.VISIBLE); - view_long.setVisibility(View.GONE); - } - helper.setText(R.id.tv_title, CalculateUtils.convertToChineseFormat(entity.getTransactionDate())); - helper.setText(R.id.tv_week, CalculateUtils.getWeekDay(entity.getUserDesc())); - helper.setText(R.id.tv_userDesc, entity.getUserDesc()); - - if (entity.getType() == 1) { - helper.setText(R.id.tv_amount, "-" + entity.getAmount()); - } else { - helper.setText(R.id.tv_amount, entity.getAmount().toString()); - }*/ - - helper.setText(R.id.tv_zdy_name, entity.getTypeOriginName()); - if (entity.getType().equals(CommonTypeOriginEnum.SYSTEM.getName())) { - helper.setVisible(R.id.iv_iamge, true); - helper.setGone(R.id.ll_zdy, false); - } else { - helper.setGone(R.id.iv_iamge, false); - helper.setVisible(R.id.ll_zdy, true); - } - if (entity.getItemCheck()) { - helper.setImageResource(R.id.iv_iamge, entity.getTypeOriginIdChecked()); - helper.setImageResource(R.id.iv_iamge_zdy, entity.getTypeOriginIdChecked()); - AnimationClick.startScaleAnimation(helper.getView(R.id.relativeLayout)); - } else { - helper.setImageResource(R.id.iv_iamge, entity.getTypeOriginIdCheck()); - helper.setImageResource(R.id.iv_iamge_zdy, entity.getTypeOriginIdCheck()); -// AnimationClick.startScaleAnimation(helper.getView(R.id.iv_iamge)); - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java index 3cc39fc..b3fd660 100644 --- a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java +++ b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java @@ -1,69 +1,27 @@ package com.tfq.finances.main.fragment; import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.text.TextUtils; import android.view.View; -import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContracts; -import androidx.recyclerview.widget.RecyclerView; - -import com.alibaba.fastjson.JSON; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.tfq.ad.ad.AdBannerUtils; -import com.tfq.ad.ad.AdFeedUtils; -import com.tfq.ad.ad.LoadingDialog; -import com.tfq.finances.finances.activity.Activity_Budgets; -import com.tfq.finances.finances.activity.Activity_Detail_Add; -import com.tfq.finances.finances.activity.Activity_Transactions; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.main.adapter.IndexBillAdapter; -import com.tfq.finances.network.api.finances.TransactionsService; -import com.tfq.finances.network.api.index.IndexService; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.token.TokenManager; -import com.tfq.finances.network.model.response.finances.index.IndexResp; -import com.tfq.finances.network.model.response.finances.transactions.TransactionsResp; -import com.tfq.finances.utils.androidpicker.CalculateUtils; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.request.transition.Transition; +import com.tfq.finances.app.App; +import com.tfq.demo.R; +import com.tfq.finances.utils.BitmapUtils; import com.tfq.library.base.BaseFragment; -import com.tfq.library.utils.LogK; -import com.tfq.library.utils.PermissionDialog; -import com.tfq.library.utils.RecyclerViewHelper; -import com.tfq.library.utils.ToasterUtil; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; public class Fm_Page_A extends BaseFragment { - private FrameLayout flContent; - private TextView tv_year, tv_month, tv_expenditure, tv_income; - private CalculateUtils calculateUtils; - private RecyclerView recycler_view; - private IndexBillAdapter mAdapter; - private Map> old_detailsMap = new HashMap<>(); - private final ActivityResultLauncher detail_add = registerForActivityResult( - new ActivityResultContracts.StartActivityForResult(), - result -> { - if (result.getResultCode() == Activity.RESULT_OK) { - Fm_Page_B.shouldRefresh = true; - getIndex(); - } - } - ); - private boolean mOnReqListener; @Override protected int getLayoutId() { @@ -72,149 +30,45 @@ public class Fm_Page_A extends BaseFragment { @Override protected void initView() { - ImageView iv_add = findViewBy_Id(R.id.iv_add); - iv_add.setOnClickListener(this::onClick); - LinearLayout ll_01 = findViewBy_Id(R.id.ll_01); - ll_01.setOnClickListener(this::onClick); - LinearLayout ll_02 = findViewBy_Id(R.id.ll_02); - ll_02.setOnClickListener(this::onClick); - LinearLayout ll_03 = findViewBy_Id(R.id.ll_03); - ll_03.setOnClickListener(this::onClick); - flContent = findViewBy_Id(R.id.fl_content); - LinearLayout ll_date = findViewBy_Id(R.id.ll_date); - ll_date.setOnClickListener(this::onClick); - tv_year = findViewBy_Id(R.id.tv_year); - tv_month = findViewBy_Id(R.id.tv_month); - tv_expenditure = findViewBy_Id(R.id.tv_expenditure); - tv_income = findViewBy_Id(R.id.tv_income); - recycler_view = findViewBy_Id(R.id.recycler_view); - - mAdapter = new IndexBillAdapter(R.layout.item_index_bill_layout); - recycler_view.setAdapter(mAdapter); - RecyclerViewHelper.initRecyclerViewV(getActivity(), recycler_view, mAdapter); - mAdapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() { - @Override - public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) { - new PermissionDialog(getActivity(), "del_project","注意", "点击确认将删除当前记账项目", new PermissionDialog.Listener() { - @Override - public void success() { - deleteTransactions(position); - } - }).show(); - return true; - } - }); - } - - private void deleteTransactions(int position) { - Integer id = mAdapter.getData().get(position).getId(); - new TransactionsService(getActivity()).deleteTransactions(id, new ApiCallback() { - @Override - public void onSuccess(String response) { -// mAdapter.remove(position); -// mAdapter.notifyItemChanged(position); - ToasterUtil.show("删除记账项目成功"); - if (!TextUtils.isEmpty(year_Month)) { - getResponseByYearMonth(year_Month); - } - Fm_Page_B.shouldRefresh = true; - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - ToasterUtil.show(errorMessage); - } - }); } @Override protected void initData(Bundle savedInstanceState) { - getIndex(); + setBg(); } - private void getIndex() { - // 方式1:使用SimpleDateFormat(兼容所有API版本) - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM", Locale.getDefault()); - // 初始化 - calculateUtils = new CalculateUtils(getActivity()); - String currentDate = sdf.format(new Date()); - tv_year.setText(String.valueOf(currentDate.split("-")[0])); - tv_month.setText(String.valueOf(currentDate.split("-")[1])); + private void setBg() { + // 设置默认背景色 +// imageView.setImageDrawable(new ColorDrawable(ContextCompat.getColor(requireActivity(), PLACEHOLDER_BG_COLOR))); + ImageView imageView = findViewBy_Id(R.id.imageView); + // 定义颜色常量 + int PLACEHOLDER_BG_COLOR = R.color.themeColor; // 主题颜色 + Glide.with(App.getContext()) + .asBitmap() + .load(R.drawable.app_splash) + .placeholder(new ColorDrawable(ContextCompat.getColor(requireActivity(), PLACEHOLDER_BG_COLOR))) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .into(new CustomTarget() { + @SuppressLint("StaticFieldLeak") + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + Bitmap blur = BitmapUtils.applyBlurWithScaling(resource, 8, 40); + imageView.setImageBitmap(blur); + } - year_Month = currentDate; - getResponseByYearMonth(currentDate); - } - - private void getResponseByYearMonth(String currentDate) { - mAdapter.setNewData(new ArrayList<>()); - new IndexService(getActivity()).index(currentDate, new ApiCallback() { - @Override - public void onSuccess(IndexResp response) { - if (getActivity() != null) { - getActivity().runOnUiThread(new Runnable() { - @SuppressLint("SetTextI18n") - @Override - public void run() { - try { - LogK.e("response=" + response); -// LogK.e("response=" + JSON.toJSONString(response)); - BigDecimal expenditure = response.getExpenditure(); - tv_expenditure.setText(expenditure.toString()); - BigDecimal income = response.getIncome(); - tv_income.setText(income.toString()); - - Map> detailsMap = response.getDetails(); - if (!detailsMap.isEmpty()) { - if (detailsMap != old_detailsMap) { - for (Map.Entry> entry : detailsMap.entrySet()) { - String key = entry.getKey(); - LogK.e("key=" + key); - List value = entry.getValue(); - for (int i = 0; i < value.size(); i++) { - TransactionsResp resp = value.get(i); - //resp.setCategoryName(SystemExpensesCategoriesEnum.getNameById(resp.getCategoryId())); - List list = new ArrayList<>(); - list.add(resp); - if (i == 0) { - resp.setShowTitle(true); - } - if (mAdapter == null) { - mAdapter.setNewData(list); - } else { - mAdapter.addData(list); - } - LogK.e(JSON.toJSONString(list)); - } - } - } - } - old_detailsMap = detailsMap; - } catch (Exception e) { - e.printStackTrace(); - } - - } - }); - } - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - - } - }); + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + } + }); } @Override public void onResume() { super.onResume(); - AdBannerUtils.show_ad(getActivity(), flContent); +// AdBannerUtils.show_ad(getActivity(), flContent); // AdFeedUtils.show_ad(getActivity(), flContent, 20, "page_01"); - - TokenManager instance = TokenManager.getInstance(getActivity()); - LogK.e("token=" + instance.getAccessToken() + " userId=" + instance.getUserId()); } @Override @@ -223,31 +77,11 @@ public class Fm_Page_A extends BaseFragment { // AdFeedUtils.cancelTag("page_01"); } - private String year_Month; - public void onClick(View view) { int viewId = view.getId(); - - if (viewId == R.id.iv_add) {//创建记账 - Intent intent = new Intent(getActivity(), Activity_Detail_Add.class); - detail_add.launch(intent); - } else if (viewId == R.id.ll_01) {//账单 - Intent intent = new Intent(getActivity(), Activity_Transactions.class); - startActivity(intent); - } else if (viewId == R.id.ll_02) {//预算 - Intent intent = new Intent(getActivity(), Activity_Budgets.class); - startActivity(intent); - } else if (viewId == R.id.ll_03) { - // 预留处理逻辑 - } else if (viewId == R.id.ll_date || viewId == R.id.tv_year || viewId == R.id.tv_month) { - calculateUtils.choose_date(tv_year, tv_month, new CalculateUtils.Listener() { - @Override - public void success(String yearAndMonth) { - year_Month = yearAndMonth; - getResponseByYearMonth(yearAndMonth); - } - }); - } +// if (viewId == R.id.iv_add) { +// +// } } - } + diff --git a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_B.java b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_B.java deleted file mode 100644 index 4830bb3..0000000 --- a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_B.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.tfq.finances.main.fragment; - -import android.annotation.SuppressLint; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.os.Build; -import android.os.Bundle; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.WebSettings; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.FrameLayout; -import android.widget.PopupWindow; -import android.widget.TextView; - -import com.tfq.ad.ad.AdFeedUtils; -import com.tfq.finances.app.App; -import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.network.config.ApiConfig; -import com.tfq.finances.network.config.token.TokenManager; -import com.tfq.library.base.BaseFragment; - -import androidx.annotation.RequiresApi; -import okhttp3.HttpUrl; - -public class Fm_Page_B extends BaseFragment { - - /** - * 统计页面url - */ - private static final String STATISTICS_URL = ApiConfig.buildH5Url("/finances/statistics/income"); - // 新增成员变量 - public static boolean shouldRefresh = true; - private FrameLayout flContent, bottom_ad_area; - private WebView webView; - //TODO 当前用户ID - private String userId = String.valueOf(TokenManager.getInstance(App.getInstances()).getUserId()); - private String currentType = "1"; // 当前选中的类型,1:支出 2:收入 - private TextView tvType; - private PopupWindow typePopupWindow; - private View dimBackground; // 用于背景变暗的视图 - - @Override - protected int getLayoutId() { - return R.layout.fm_page_b; - } - - @SuppressLint("SetJavaScriptEnabled") - @Override - protected void initView() { - tvType = findViewBy_Id(R.id.tv_type); - View typeSelector = findViewBy_Id(R.id.top_header); // 点击整个顶部区域触发下拉 - - typeSelector.setOnClickListener(this::onClick); - flContent = findViewBy_Id(R.id.fl_content); - bottom_ad_area = findViewBy_Id(R.id.bottom_ad_area); - - // 初始化WebView - webView = new WebView(requireActivity()); - flContent.addView(webView); - - // 配置WebView - WebSettings webSettings = webView.getSettings(); - webSettings.setJavaScriptEnabled(true); - webSettings.setDomStorageEnabled(true); - webSettings.setLoadWithOverviewMode(true); - webSettings.setUseWideViewPort(true); - - webView.setWebViewClient(new WebViewClient() { - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { - view.loadUrl(url); - return true; - } - }); - // 初始化下拉菜单 - initTypePopup(); - } - - private void initTypePopup() { - // 创建蒙层背景 - dimBackground = new View(getContext()); - dimBackground.setLayoutParams(new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - dimBackground.setBackgroundResource(R.drawable.bg_dim); - dimBackground.setVisibility(View.GONE); - dimBackground.setOnClickListener(v -> dismissPopup()); - ((ViewGroup) getView()).addView(dimBackground); - - @SuppressLint("InflateParams") - View popupView = LayoutInflater.from(getContext()).inflate(R.layout.popup_type_menu, null); - typePopupWindow = new PopupWindow( - popupView, - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT, - true); - - - // 设置弹出动画 - typePopupWindow.setAnimationStyle(R.style.PopupAnimation); - - // 设置背景透明,这样圆角才能显示 - typePopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - // 设置外部可点击 - typePopupWindow.setOutsideTouchable(true); - typePopupWindow.setOnDismissListener(() -> dimBackground.setVisibility(View.GONE)); - - // 设置下拉菜单项点击事件 - popupView.findViewById(R.id.item_income).setOnClickListener(v -> { - selectType("2", "收入"); - dismissPopup(); - }); - - popupView.findViewById(R.id.item_expenditure).setOnClickListener(v -> { - selectType("1", "支出"); - dismissPopup(); - }); - } - - - private void dismissPopup() { - if (typePopupWindow != null && typePopupWindow.isShowing()) { - typePopupWindow.dismiss(); - } - } - - private void showTypePopup(View anchor) { - if (typePopupWindow != null) { - dimBackground.setVisibility(View.VISIBLE); - typePopupWindow.showAtLocation(anchor, Gravity.TOP, 0, getTopHeaderBottom()); - } - } - - private int getTopHeaderBottom() { - View topHeader = findViewBy_Id(R.id.top_header); - int[] location = new int[2]; - topHeader.getLocationOnScreen(location); - return location[1] + topHeader.getHeight(); - } - - private void selectType(String type, String typeName) { - currentType = type; - tvType.setText(typeName); - reloadWebView(); - } - - private void reloadWebView() { - HttpUrl url = HttpUrl.parse(STATISTICS_URL) - .newBuilder() - .addQueryParameter("appinfoId", Constants.APP_INFO_ID) - .addQueryParameter("userId", userId) - .addQueryParameter("type", currentType) - .build(); - webView.loadUrl(url.toString()); - } - - @Override - protected void initData(Bundle savedInstanceState) { - reloadWebView(); - } - - @RequiresApi(api = Build.VERSION_CODES.R) - @Override - public void onResume() { - super.onResume(); -// AdFeedUtils.show_ad(getActivity(), bottom_ad_area, 20, "page_02"); - // 添加此处刷新逻辑 - if (shouldRefresh) { - reloadWebView(); - shouldRefresh = false; - } - - if (webView != null) { - webView.onResume(); - } - } - - @Override - public void onPause() { - super.onPause(); - AdFeedUtils.cancelTag("page_02"); - if (webView != null) { - webView.onPause(); - } - } - - @Override - public void onDestroyView() { - if (dimBackground != null) { - ((ViewGroup) dimBackground.getParent()).removeView(dimBackground); - dimBackground = null; - } - if (webView != null) { - webView.destroy(); - webView = null; - } - if (typePopupWindow != null && typePopupWindow.isShowing()) { - typePopupWindow.dismiss(); - } - typePopupWindow = null; - super.onDestroyView(); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View rootView = super.onCreateView(inflater, container, savedInstanceState); - return rootView; - } - - public void onClick(View view) { - if (view.getId() == R.id.top_header) { - showTypePopup(view); - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_C.java b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_C.java index aa1e30c..d1ecf86 100644 --- a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_C.java +++ b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_C.java @@ -5,7 +5,7 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; import com.tfq.library.base.BaseFragment; import com.tfq.library.utils.LogK; import com.tfq.library.view.SlideDownView; diff --git a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java index 2fe4717..1c14d0c 100644 --- a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java +++ b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java @@ -1,5 +1,6 @@ package com.tfq.finances.main.fragment; +import android.Manifest; import android.app.Activity; import android.content.Intent; import android.os.Build; @@ -15,41 +16,35 @@ import android.widget.TextView; import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.RenderMode; import com.tfq.ad.ad.AdFeedUtils; +import com.tfq.ad.ad.AdRewardUtils; import com.tfq.ad.app.ADConstants; import com.tfq.ad.app.AdApp; -import com.tfq.finances.core.enums.AvatarEnum; -import com.tfq.finances.finances.activity.Activity_Setting_More; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.main.Activity_Main; +import com.tfq.demo.R; +import com.tfq.finances.main.Activity_Setting_More; import com.tfq.finances.main.Activity_Splash; import com.tfq.finances.main.activity.Activity_About_Us; -import com.tfq.finances.main.activity.Activity_Export; import com.tfq.finances.main.activity.Activity_PbFeedback; import com.tfq.finances.utils.PAGAnimationLoader; -import com.tfq.library.app.BaseConstants; import com.tfq.library.base.BaseFragment; -import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; +import com.tfq.library.utils.ToasterUtil; import com.tfq.library.view.SlideDownView; import org.libpag.PAGView; +import java.util.Objects; + import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; -import static com.tfq.finances.main.Activity_Main.memberUser; - public class Fm_Page_S extends BaseFragment { - private final ActivityResultLauncher moreSetting = registerForActivityResult( - new ActivityResultContracts.StartActivityForResult(), - result -> { - if (result.getResultCode() == Activity.RESULT_OK) { - Intent intent = new Intent(getActivity(), Activity_Splash.class); - startActivity(intent); - requireActivity().finish(); - } - } - ); + private final ActivityResultLauncher moreSetting = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + if (result.getResultCode() == Activity.RESULT_OK) { + Intent intent = new Intent(getActivity(), Activity_Splash.class); + startActivity(intent); + requireActivity().finish(); + } + }); private FrameLayout flContent; private SlideDownView slide_down_view; private ImageView iv_avatar; @@ -81,7 +76,6 @@ public class Fm_Page_S extends BaseFragment { //slide_down_view.showFunctionBar(); tv_nickname = findViewBy_Id(R.id.tv_nickname); - tv_nickname.setText(memberUser != null ? memberUser.getNickname() : ""); // setAnimationView(); @@ -91,7 +85,7 @@ public class Fm_Page_S extends BaseFragment { private void setPagView() { PAGView pagView = findViewBy_Id(R.id.pag_view); - PAGAnimationLoader.loadAndPlayAnimation(getActivity(),pagView,"1.pag"); + PAGAnimationLoader.loadAndPlayAnimation(getActivity(), pagView, "1.pag"); } private void setAnimationView() { @@ -112,28 +106,18 @@ public class Fm_Page_S extends BaseFragment { lottieView.setPerformanceTrackingEnabled(true); // 在Activity中开启硬件加速 - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getActivity().getWindow().setFlags( - WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, - WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED - ); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); } // 根据情况选择合适的渲染模式 lottieView.setRenderMode(RenderMode.AUTOMATIC); // 或RenderMode.AUTOMATIC - } @Override protected void initData(Bundle savedInstanceState) { - String avatar = Activity_Main.memberUser.getAvatar(); - if (AppUtil.isInteger(avatar) && Integer.parseInt(avatar) > 0) { - int avatarById = AvatarEnum.getAvatarById(Integer.parseInt(avatar)); - iv_avatar.setImageResource(avatarById); - LogK.e("设置页 iv_avatar 设置头像"); - } } @Override @@ -145,14 +129,14 @@ public class Fm_Page_S extends BaseFragment { if (Activity_Setting_More.avatar_Id != -1) { LogK.e("设置页 onResume 设置头像"); - int avatarById = AvatarEnum.getAvatarById(Activity_Setting_More.avatar_Id); - iv_avatar.setImageResource(avatarById); } if (!TextUtils.isEmpty(Activity_Setting_More.activity_nickname)) { tv_nickname.setText(Activity_Setting_More.activity_nickname); } // setAnimationView(); + + } @Override @@ -168,14 +152,22 @@ public class Fm_Page_S extends BaseFragment { if (viewId == R.id.ll_01) { intent = new Intent(getActivity(), Activity_Setting_More.class); moreSetting.launch(intent); - } else if (viewId == R.id.ll_02) { - + animationStart(); } else if (viewId == R.id.ll_03) { intent = new Intent(getActivity(), Activity_PbFeedback.class); startActivity(intent); } else if (viewId == R.id.ll_04) { - intent = new Intent(getActivity(), Activity_Export.class); - startActivity(intent); + new AdRewardUtils(requireActivity(), new AdRewardUtils.Listener() { + @Override + public void success(boolean b) { + LogK.e("获取奖励结果=" + b); + if (b) { + + }else { + ToasterUtil.show("视频观看失败,请重试"); + } + } + }); } else if (viewId == R.id.ll_05) { intent = new Intent(getActivity(), Activity_About_Us.class); startActivity(intent); diff --git a/app/src/main/java/com/tfq/finances/main/model/TypeOriginConfig.kt b/app/src/main/java/com/tfq/finances/main/model/TypeOriginConfig.kt index 9da0c29..aa7ebf5 100644 --- a/app/src/main/java/com/tfq/finances/main/model/TypeOriginConfig.kt +++ b/app/src/main/java/com/tfq/finances/main/model/TypeOriginConfig.kt @@ -1,8 +1,6 @@ package com.tfq.finances.main.model -import com.google.gson.annotations.SerializedName import com.tfq.finances.core.enums.CommonTypeOriginEnum -import com.tfq.finances.jzrcj.R data class TypeOriginConfig( /** @@ -17,12 +15,12 @@ data class TypeOriginConfig( /** * 类别未选中资源id */ - var typeOriginIdCheck: Int = R.mipmap.ic_zdy_check, + var typeOriginIdCheck: Int = 0, /** * 类别选中资源id */ - var typeOriginIdChecked: Int = R.mipmap.ic_zdy_checked, + var typeOriginIdChecked: Int = 1, /** * 当前类别是否选中 @@ -34,4 +32,4 @@ data class TypeOriginConfig( */ var type: String = CommonTypeOriginEnum.SYSTEM.name - ) \ No newline at end of file +) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/api/finances/BillsService.java b/app/src/main/java/com/tfq/finances/network/api/finances/BillsService.java deleted file mode 100644 index 50d1430..0000000 --- a/app/src/main/java/com/tfq/finances/network/api/finances/BillsService.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.tfq.finances.network.api.finances; - -import android.content.Context; - -import com.google.gson.reflect.TypeToken; -import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.network.api.BaseApiClient; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.ApiConfig; -import com.tfq.finances.network.model.response.finances.transactions.BillsData; -import com.tfq.finances.network.model.response.finances.transactions.BillsResp; - -import java.util.List; - -import okhttp3.HttpUrl; -import okhttp3.Request; - -/** - * 账单服务 - */ -public class BillsService extends BaseApiClient { - - private static final String GET_BILLS_MONTH_URL = ApiConfig.buildUrl("/finances/transactions/month/list"); - private static final String GET_BILLS_YEAR_URL = ApiConfig.buildUrl("/finances/transactions/year/list"); - - - /** - * 获取月度账单详情 - * - * @param callback - */ - public void getMonthBillsInfo(String year, ApiCallback> callback) { - - HttpUrl url = HttpUrl.parse(GET_BILLS_MONTH_URL) - .newBuilder() - .addQueryParameter("appinfoId", Constants.APP_INFO_ID) - .addQueryParameter("year", year) - .build(); - - Request httpRequest = new Request.Builder() - .url(url) - .get() - .build(); - executeAuthRequest(httpRequest,new TypeToken>(){} , callback); - } - - /** - * 获取年度账单详情 - * - * @param callback - */ - public void getYearBillsInfo(ApiCallback> callback) { - HttpUrl url = HttpUrl.parse(GET_BILLS_YEAR_URL) - .newBuilder() - .addQueryParameter("appinfoId", Constants.APP_INFO_ID) - .build(); - - Request httpRequest = new Request.Builder() - .url(url) - .get() - .build(); - executeAuthRequest(httpRequest, new TypeToken>(){}, callback); - } - - /** - * 构造方法 - * - * @param context - */ - public BillsService(Context context) { - super(context); - } - - - @Override - protected T decryptIfNeeded(T data) throws Exception { - // 当前接口无需解密,直接返回原始数据 - return data; - } - -} diff --git a/app/src/main/java/com/tfq/finances/network/api/finances/BudgetsService.java b/app/src/main/java/com/tfq/finances/network/api/finances/BudgetsService.java deleted file mode 100644 index fafac63..0000000 --- a/app/src/main/java/com/tfq/finances/network/api/finances/BudgetsService.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.tfq.finances.network.api.finances; - -import android.content.Context; - -import com.tfq.finances.network.api.BaseApiClient; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.ApiConfig; -import com.tfq.finances.network.config.TfqConstants; -import com.tfq.finances.network.model.request.finances.budgets.BudgetsRequest; -import com.tfq.finances.network.model.response.finances.budgets.BudgetsMonthResp; -import com.tfq.finances.network.model.response.finances.budgets.BudgetsResp; -import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.app.App; - -import java.math.BigDecimal; - -import okhttp3.MediaType; -import okhttp3.Request; -import okhttp3.RequestBody; - -/** - * 预算模块 - */ -public class BudgetsService extends BaseApiClient { - - private static final String GET_BUDGETS_MONTH_INFO_URL = ApiConfig.buildUrl("/finances/budgets/month/info"); - private static final String GET_BUDGETS_URL = ApiConfig.buildUrl("/finances/budgets/get"); - private static final String SET_BUDGETS_URL = ApiConfig.buildUrl("/finances/budgets/set"); - - - /** - * 获取月度预算详情 - * - * @param callback - */ - public void getMonthBudgetsInfo(String month, ApiCallback callback) { - BudgetsRequest request = new BudgetsRequest(); - request.setAppinfoId(Constants.APP_INFO_ID); - request.setMonth(month); - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - - Request httpRequest = new Request.Builder() - .url(GET_BUDGETS_MONTH_INFO_URL) - .post(body) - .build(); - - executeAuthRequest(httpRequest, BudgetsMonthResp.class, callback); - } - - - /** - * 获取预算信息 - * - * @param callback - */ - public void getBudgetsInfo(ApiCallback callback) { - BudgetsRequest request = new BudgetsRequest(); - request.setAppinfoId(Constants.APP_INFO_ID); - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - - Request httpRequest = new Request.Builder() - .url(GET_BUDGETS_URL) - .post(body) - .build(); - - executeAuthRequest(httpRequest, BudgetsResp.class, callback); - } - - - /** - * 设置用户预算 - * - * @param callback - * @param amount - */ - public void setBudgetsInfo(BigDecimal amount, String month, ApiCallback callback) { - BudgetsRequest request = new BudgetsRequest(Constants.APP_INFO_ID, Constants.USER_ID, amount, month, 1); - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - - Request httpRequest = new Request.Builder() - .url(SET_BUDGETS_URL) - .post(body) - .build(); - - executeAuthRequest(httpRequest, BudgetsResp.class, callback); - } - - /** - * 构造方法 - * - * @param context - */ - public BudgetsService(Context context) { - super(context); - } - - - @Override - protected T decryptIfNeeded(T data) throws Exception { - // 当前接口无需解密,直接返回原始数据 - return data; - } - -} diff --git a/app/src/main/java/com/tfq/finances/network/api/finances/CategoriesService.java b/app/src/main/java/com/tfq/finances/network/api/finances/CategoriesService.java deleted file mode 100644 index b9984ed..0000000 --- a/app/src/main/java/com/tfq/finances/network/api/finances/CategoriesService.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.tfq.finances.network.api.finances; - -import android.content.Context; - -import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.network.api.BaseApiClient; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.ApiConfig; -import com.tfq.finances.network.model.request.finances.budgets.BudgetsRequest; -import com.tfq.finances.network.model.request.finances.categories.CategoriesAllRequest; -import com.tfq.finances.network.model.request.finances.categories.CategoriesRequest; -import com.tfq.finances.network.model.response.finances.categories.CategoriesAllResp; - -import java.math.BigDecimal; - -import okhttp3.HttpUrl; -import okhttp3.MediaType; -import okhttp3.Request; -import okhttp3.RequestBody; - -/** - * 类别 - */ -public class CategoriesService extends BaseApiClient { - - private static final String GET_ALL_URL = ApiConfig.buildUrl("/finances/categories/all"); - private static final String ADD_CATEGORIES_URL = ApiConfig.buildUrl("/finances/categories/create"); - private static final String UPDATE_CATEGORIES_URL = ApiConfig.buildUrl("/finances/categories/update"); - private static final String DELETE_CATEGORIES_URL = ApiConfig.buildUrl("/finances/categories/delete"); - - - /** - * 构造方法 - * - * @param context - */ - public CategoriesService(Context context) { - super(context); - } - - /** - * 新增自定义类别 - * - * @param callback - */ - public void addCategories(Integer type, String name, String icon, ApiCallback callback) { - CategoriesRequest request = new CategoriesRequest(null, Constants.APP_INFO_ID, - icon, - name, - type - ); - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - Request httpRequest = new Request.Builder() - .url(ADD_CATEGORIES_URL) - .post(body) - .build(); - executeAuthRequest(httpRequest, String.class, callback); - } - - /** - * 修改自定义类别 - * - * @param callback - */ - public void updateCategories(Integer categoriesId, Integer type, String name, String icon, ApiCallback callback) { - CategoriesRequest request = new CategoriesRequest(categoriesId, Constants.APP_INFO_ID, - icon, - name, - type - ); - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - Request httpRequest = new Request.Builder() - .url(UPDATE_CATEGORIES_URL) - .post(body) - .build(); - executeAuthRequest(httpRequest, String.class, callback); - } - - /** - * 删除自定义类别 - * - * @param categoriesId - * @param callback - */ - public void deleteCategories(Integer categoriesId, ApiCallback callback) { - - HttpUrl url = HttpUrl.parse(DELETE_CATEGORIES_URL) - .newBuilder() - .addQueryParameter("id", String.valueOf(categoriesId)) - .build(); - Request httpRequest = new Request.Builder() - .url(url) - .get() - .build(); - executeAuthRequest(httpRequest, String.class, callback); - } - - /** - * 获取所有类别 - * 系统+自定义 - * - * @param userId - * @param type - */ - public void getCategoriesList(long userId, int type, ApiCallback callback) { - CategoriesAllRequest request = new CategoriesAllRequest( - Constants.APP_INFO_ID, - userId, - type - ); - - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - - Request httpRequest = new Request.Builder() - .url(GET_ALL_URL) - .post(body) - .build(); - - executeAuthRequest(httpRequest, CategoriesAllResp.class, callback); - } - - @Override - protected T decryptIfNeeded(T data) throws Exception { - // 当前接口无需解密,直接返回原始数据 - return data; - } - -} diff --git a/app/src/main/java/com/tfq/finances/network/api/finances/TransactionsService.java b/app/src/main/java/com/tfq/finances/network/api/finances/TransactionsService.java deleted file mode 100644 index 4284fd8..0000000 --- a/app/src/main/java/com/tfq/finances/network/api/finances/TransactionsService.java +++ /dev/null @@ -1,229 +0,0 @@ -package com.tfq.finances.network.api.finances; - -import android.content.Context; - -import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.network.api.BaseApiClient; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.ApiConfig; -import com.tfq.finances.network.config.TfqConstants; -import com.tfq.finances.network.model.request.finances.categories.CategoriesRequest; -import com.tfq.finances.network.model.request.finances.transactions.TransactionsExportRequest; -import com.tfq.finances.network.model.request.finances.transactions.TransactionsPageRequest; -import com.tfq.finances.network.model.request.finances.transactions.TransactionsRequest; - -import java.math.BigDecimal; -import java.time.LocalDate; - -import okhttp3.HttpUrl; -import okhttp3.MediaType; -import okhttp3.Request; -import okhttp3.RequestBody; - -/** - * 账目 - */ -public class TransactionsService extends BaseApiClient { - - - // 定义添加交易的API URL - private static final String ADD_TRANSACTIONS_URL = ApiConfig.buildUrl("/finances/transactions/create"); - // 定义更新交易的API URL - private static final String UPDATE_TRANSACTIONS_URL = ApiConfig.buildUrl("/finances/transactions/update"); - // 定义删除交易的API URL - private static final String DELETE_TRANSACTIONS_URL = ApiConfig.buildUrl("/finances/transactions/delete"); - // 定义获取单个交易的API URL - private static final String GET_TRANSACTIONS_URL = ApiConfig.buildUrl("/finances/transactions/get"); - // 定义分页获取交易的API URL - private static final String PAGE_TRANSACTIONS_URL = ApiConfig.buildUrl("/finances/transactions/page"); - //导出 - private static final String EXPORT_TRANSACTIONS_URL = ApiConfig.buildUrl("/finances/transactions/export"); - - - /** - * 新增账目 - * - * @param type 账目类型,如1收入或2支出 - * @param categoryId 账目类别ID - * @param amount 金额 - * @param desc 描述 - * @param transactionDate 交易日期 - * @param callback 回调接口,用于处理API请求结果 - */ - public void addTransactions(Integer type, Integer categoryId, BigDecimal amount, String desc, String transactionDate, ApiCallback callback) { - // 创建一个账目请求对象,封装账目相关信息 - TransactionsRequest request = new TransactionsRequest( - null, - Constants.APP_INFO_ID, - type, - categoryId, - amount, - desc, - transactionDate - ); - // 定义JSON内容类型,用于HTTP请求体 - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - // 将请求对象序列化为JSON格式,并创建请求体 - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - // 构建HTTP请求,指定URL和请求方法 - Request httpRequest = new Request.Builder() - .url(ADD_TRANSACTIONS_URL) - .post(body) - .build(); - // 执行需要身份验证的请求,并处理响应 - executeAuthRequest(httpRequest, String.class, callback); - } - - - /** - * 修改账目 - * - * @param transactionsId 账目ID - * @param type 交易类型 - * @param categoryId 账目类别ID - * @param amount 交易金额 - * @param desc 交易描述 - * @param transactionDate 交易日期 - * @param callback 回调接口,用于处理API请求结果 - */ - public void updateTransactions(Integer transactionsId, Integer type, Integer categoryId, BigDecimal amount, String desc, String transactionDate, ApiCallback callback) { - // 创建一个账目请求对象,封装账目相关信息 - TransactionsRequest request = new TransactionsRequest( - transactionsId, - Constants.APP_INFO_ID, - type, - categoryId, - amount, - desc, - transactionDate - ); - // 定义JSON内容类型,用于HTTP请求体 - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - // 将请求对象序列化为JSON格式,并创建请求体 - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - // 构建HTTP请求对象,指定请求URL和请求体 - Request httpRequest = new Request.Builder() - .url(UPDATE_TRANSACTIONS_URL) - .post(body) - .build(); - // 执行需要身份验证的请求,并处理响应 - executeAuthRequest(httpRequest, String.class, callback); - } - - /** - * 删除交易记录 - *

- * 通过发送GET请求到指定URL,请求中携带需要删除的交易记录ID作为查询参数,来删除指定的交易记录 - * - * @param transactionsId 需要删除的交易记录的ID - * @param callback 请求的回调,用于处理请求成功或失败的响应 - */ - public void deleteTransactions(Integer transactionsId, ApiCallback callback) { - - // 构建请求的URL,包含删除交易记录的API endpoint和查询参数 - HttpUrl url = HttpUrl.parse(DELETE_TRANSACTIONS_URL) - .newBuilder() - .addQueryParameter("id", String.valueOf(transactionsId)) - .build(); - - // 创建HTTP请求,指定请求的URL和方法(GET) - Request httpRequest = new Request.Builder() - .url(url) - .get() - .build(); - - // 执行需要身份验证的HTTP请求,并期望返回一个String类型的结果,回调处理结果 - executeAuthRequest(httpRequest, String.class, callback); - } - - - /** - * 分页查询类别信息 - *

- * 该方法用于根据指定的条件分页查询交易类别信息它构造一个包含查询参数的请求, - * 并将其发送到API服务器处理完成后,通过回调函数返回结果 - * - * @param pageNo 分页查询的页号 - * @param pageSize 每页的记录数 - * @param type 交易类型,用于筛选交易记录 - * @param categoryId 类别ID,用于筛选交易记录 - * @param transactionDateStart 交易日期开始,用于筛选交易记录 - * @param transactionDateEnd 交易日期结束,用于筛选交易记录 - * @param callback API回调,用于处理服务器返回的响应 - */ - public void pageTransactions(Integer pageNo, Integer pageSize, Integer type, - Integer categoryId, LocalDate transactionDateStart, LocalDate transactionDateEnd, - ApiCallback callback) { - - // 创建分页请求对象,封装查询参数 - TransactionsPageRequest request = new TransactionsPageRequest( - pageNo, - pageSize, - Constants.APP_INFO_ID, - type, - categoryId, - transactionDateStart, - transactionDateEnd - ); - - // 定义JSON媒体类型,用于请求体 - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - // 将请求对象序列化为JSON,并创建请求体 - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - // 构建POST请求 - Request httpRequest = new Request.Builder() - .url(PAGE_TRANSACTIONS_URL) - .post(body) - .build(); - // 执行请求,并通过回调函数处理响应 - executeAuthRequest(httpRequest, String.class, callback); - } - - - /** - * 导出账目 - * - * @param startDate 开始日期 - * @param endDate 结束日期 - * @param email 邮箱地址 - * @param callback 回调接口,用于处理API请求结果 - */ - public void exportTransactions(String startDate, String endDate, String email, ApiCallback callback) { - // 创建一个账目请求对象,封装账目相关信息 - TransactionsExportRequest request = new TransactionsExportRequest( - Constants.APP_INFO_ID, - email, - startDate, - endDate - ); - // 定义JSON内容类型,用于HTTP请求体 - MediaType jsonType = MediaType.parse("application/json; charset=utf-8"); - // 将请求对象序列化为JSON格式,并创建请求体 - RequestBody body = RequestBody.create(jsonType, gson.toJson(request)); - // 构建HTTP请求对象,指定请求URL和请求体 - Request httpRequest = new Request.Builder() - .url(EXPORT_TRANSACTIONS_URL) - .post(body) - .build(); - // 执行需要身份验证的请求,并处理响应 - executeAuthRequest(httpRequest, Boolean.class, callback); - } - - - /** - * 构造方法 - * - * @param context - */ - public TransactionsService(Context context) { - super(context); - } - - - @Override - protected T decryptIfNeeded(T data) throws Exception { - // 当前接口无需解密,直接返回原始数据 - return data; - } - -} diff --git a/app/src/main/java/com/tfq/finances/network/api/index/IndexService.java b/app/src/main/java/com/tfq/finances/network/api/index/IndexService.java deleted file mode 100644 index 36637f8..0000000 --- a/app/src/main/java/com/tfq/finances/network/api/index/IndexService.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.tfq.finances.network.api.index; - -import android.content.Context; - -import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.network.api.BaseApiClient; -import com.tfq.finances.network.config.ApiCallback; -import com.tfq.finances.network.config.ApiConfig; -import com.tfq.finances.network.config.TfqConstants; -import com.tfq.finances.network.model.response.finances.index.IndexResp; - -import okhttp3.HttpUrl; -import okhttp3.Request; - -public class IndexService extends BaseApiClient { - - private static final String INDEX_URL = ApiConfig.buildUrl("/finances/member/index"); - - public IndexService(Context context) { - super(context); - } - - /** - * 首页数据 - * - * @param callback - */ - public void index(String month, ApiCallback callback) { - - HttpUrl url = HttpUrl.parse(INDEX_URL) - .newBuilder() - .addQueryParameter("appinfoId", Constants.APP_INFO_ID) - .addQueryParameter("month", month) - .build(); - - Request httpRequest = new Request.Builder() - .url(url) - .get() - .build(); - executeAuthRequest(httpRequest, IndexResp.class, callback); - } - - - @Override - protected T decryptIfNeeded(T data) throws Exception { - // 当前接口无需解密,直接返回原始数据 - return data; - } -} diff --git a/app/src/main/java/com/tfq/finances/network/interceptor/AuthInterceptor.java b/app/src/main/java/com/tfq/finances/network/interceptor/AuthInterceptor.java index 5940ea3..0078ade 100644 --- a/app/src/main/java/com/tfq/finances/network/interceptor/AuthInterceptor.java +++ b/app/src/main/java/com/tfq/finances/network/interceptor/AuthInterceptor.java @@ -7,11 +7,12 @@ import android.os.Looper; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import com.tfq.finances.app.App; import com.tfq.finances.core.enums.TokenRefreshLock; -import com.tfq.finances.finances.activity.Activity_Login; +import com.tfq.finances.main.Activity_Login; import com.tfq.finances.network.api.member.MemberService; -import com.tfq.finances.network.model.response.base.TfqBaseResult; import com.tfq.finances.network.config.token.TokenManager; +import com.tfq.finances.network.model.response.base.TfqBaseResult; import java.io.IOException; import java.lang.reflect.Type; @@ -135,11 +136,13 @@ public class AuthInterceptor implements Interceptor { * 启动登录Activity */ private void startLoginActivity() { - //TODO 待测试 - new Handler(Looper.getMainLooper()).post(() -> { - Intent intent = new Intent(context, Activity_Login.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - }); + if (App.getInstances().isNeedLogin()) { + //TODO 待测试 + new Handler(Looper.getMainLooper()).post(() -> { + Intent intent = new Intent(context, Activity_Login.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + }); + } } } diff --git a/app/src/main/java/com/tfq/finances/network/model/request/finances/budgets/BudgetsRequest.kt b/app/src/main/java/com/tfq/finances/network/model/request/finances/budgets/BudgetsRequest.kt deleted file mode 100644 index 2dd29a4..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/request/finances/budgets/BudgetsRequest.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.tfq.finances.network.model.request.finances.budgets - -import java.math.BigDecimal - -data class BudgetsRequest( - /** - * 应用id - */ - var appinfoId: String = "", - /** - * 用户id - */ - var userId: Long = -1, - /** - * 金额 - */ - var amount: BigDecimal = BigDecimal.ZERO, - /** - * 月份 yyyy-MM - */ - var month: String = "", - /** - * 预算类型(默认1总2分类预算) - */ - var type: Int = 1, -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/request/finances/categories/CategoriesAllRequest.kt b/app/src/main/java/com/tfq/finances/network/model/request/finances/categories/CategoriesAllRequest.kt deleted file mode 100644 index e658929..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/request/finances/categories/CategoriesAllRequest.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.tfq.finances.network.model.request.finances.categories - -data class CategoriesAllRequest( - - /** - * 应用id - */ - var appinfoId: String? = null, - - /** - * userId - */ - var userId: Long? = null, - - /** - * 类型 - */ - var type: Int? = null - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/request/finances/categories/CategoriesRequest.kt b/app/src/main/java/com/tfq/finances/network/model/request/finances/categories/CategoriesRequest.kt deleted file mode 100644 index 6a52998..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/request/finances/categories/CategoriesRequest.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.tfq.finances.network.model.request.finances.categories - -import java.math.BigDecimal - -data class CategoriesRequest( - - /** - * id - */ - var id: Int? = null, - - /** - * 应用id - */ - var appinfoId: String = "", - - /** - * 图标 - */ - var iconUrl: String = "", - - /** - * 名称 - */ - var name: String = "", - - /** - * 类型 - */ - var type: Int? = null - - - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsExportRequest.kt b/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsExportRequest.kt deleted file mode 100644 index ee2ba72..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsExportRequest.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.tfq.finances.network.model.request.finances.transactions - -import java.math.BigDecimal -import java.time.LocalDate - -/** - * 账目 - */ -data class TransactionsExportRequest( - - /** - * 应用id - */ - var appinfoId: String = "", - /** - * 邮箱 - */ - var email: String = "", - - - /** - * 发生日期 起始时间 - * yyyy-MM-dd - */ - var startDate: String? = null, - - /** - * 发生日期 结束时间 - * yyyy-MM-dd - */ - var endDate: String? = null, - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsPageRequest.kt b/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsPageRequest.kt deleted file mode 100644 index 459dd65..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsPageRequest.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.tfq.finances.network.model.request.finances.transactions - -import java.math.BigDecimal -import java.time.LocalDate - -/** - * 账目 - */ -data class TransactionsPageRequest( - - /** - * 分页参数 - */ - var pageNo: Int? = 1, - /** - * 分页参数 - */ - var pageSize: Int? = 10, - - /** - * 应用id - */ - var appinfoId: String = "", - - /** - * 类型 - */ - var type: Int? = null, - - /** - * categoryId - */ - var categoryId: Int? = null, - - /** - * 发生日期 - */ - var transactionDateStart: LocalDate? = null, - - /** - * 发生日期 - */ - var transactionDateEnd: LocalDate? = null - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsRequest.kt b/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsRequest.kt deleted file mode 100644 index 69b2955..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/request/finances/transactions/TransactionsRequest.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.tfq.finances.network.model.request.finances.transactions - -import java.math.BigDecimal -import java.time.LocalDate - -/** - * 账目 - */ -data class TransactionsRequest( - - /** - * id - */ - var id: Int? = null, - - /** - * 应用id - */ - var appinfoId: String = "", - - /** - * 类型 - */ - var type: Int? = null, - - /** - * categoryId - */ - var categoryId: Int? = null, - - /** - * 金额 - */ - var amount: BigDecimal = BigDecimal.ZERO, - - /** - * 备注 - */ - var userDesc: String = "", - - /** - * 发生日期 - */ - var transactionDate: String? = null - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/budgets/BudgetsMonthResp.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/budgets/BudgetsMonthResp.kt deleted file mode 100644 index b6d6a7f..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/budgets/BudgetsMonthResp.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.tfq.finances.network.model.response.finances.budgets - -import com.google.gson.annotations.SerializedName -import java.math.BigDecimal - -data class BudgetsMonthResp( - @SerializedName("amount") - var amount: BigDecimal = BigDecimal.ZERO, - - @SerializedName("totalExpenses") - var totalExpenses: BigDecimal = BigDecimal.ZERO, - - @SerializedName("remainingAmount") - var remainingAmount: BigDecimal = BigDecimal.ZERO, - - @SerializedName("month") - var month: String = "", -) diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/budgets/BudgetsResp.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/budgets/BudgetsResp.kt deleted file mode 100644 index e520f57..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/budgets/BudgetsResp.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.tfq.finances.network.model.response.finances.budgets - -import com.google.gson.annotations.SerializedName -import java.math.BigDecimal - -data class BudgetsResp( - - @SerializedName("userId") - var userId: Long = 0, - - @SerializedName("categoriesId") - var categoriesId: Long = 0, - - @SerializedName("granularity") - var granularity: String = "", - - @SerializedName("amount") - var amount: BigDecimal = BigDecimal.ZERO, - - @SerializedName("type") - var type: Long = 0, - -) diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/categories/CategoriesAllResp.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/categories/CategoriesAllResp.kt deleted file mode 100644 index 48b890d..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/categories/CategoriesAllResp.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.tfq.finances.network.model.response.finances.categories - -import com.google.gson.annotations.SerializedName - -data class CategoriesAllResp( - - /** - * 系统类别 - */ - @SerializedName("system") - var system: List? = listOf(), - - /** - * 用户自定义类别 - */ - @SerializedName("user") - var user: List? = listOf() - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/categories/CategoriesData.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/categories/CategoriesData.kt deleted file mode 100644 index ba449b6..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/categories/CategoriesData.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.tfq.finances.network.model.response.finances.categories - -import com.google.gson.annotations.SerializedName -import com.tfq.finances.core.enums.CommonTypeOriginEnum -import java.math.BigDecimal - -/** - * 类别数据 - */ -data class CategoriesData( - @SerializedName("id") - var id: Int = 0, - - @SerializedName("typeOrigin") - var typeOrigin: String = CommonTypeOriginEnum.SYSTEM.getName(), - - @SerializedName("sort") - var sort: Int = 0, - - @SerializedName("type") - var type: Int = 0, - - @SerializedName("name") - var name: String = "", - - @SerializedName("iconUrl") - var iconUrl: String = "" - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/index/IndexResp.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/index/IndexResp.kt deleted file mode 100644 index f6a06a3..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/index/IndexResp.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.tfq.finances.network.model.response.finances.index - -import com.google.gson.annotations.SerializedName -import com.tfq.finances.network.model.response.finances.transactions.TransactionsResp -import java.math.BigDecimal - -data class IndexResp( - /** - * 支出 - */ - @SerializedName("expenditure") - var expenditure: BigDecimal = BigDecimal.ZERO, - - /** - * 收入 - */ - @SerializedName("income") - var income: BigDecimal = BigDecimal.ZERO, - - /** - * 明细 - */ - @SerializedName("details") - var details: Map>? = null - -) diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/BillsData.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/BillsData.kt deleted file mode 100644 index 5fee795..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/BillsData.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tfq.finances.network.model.response.finances.transactions - - -import com.google.gson.annotations.SerializedName -import com.tfq.finances.network.model.response.adv.AdvSpaceData - -/** - * 账单(月度/年度) - */ -data class BillsData( - @SerializedName("billsResp") - val billsResp: List? = null, -) diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/BillsResp.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/BillsResp.kt deleted file mode 100644 index 193f6b9..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/BillsResp.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.tfq.finances.network.model.response.finances.transactions - -import com.google.gson.annotations.SerializedName -import java.math.BigDecimal - -data class BillsResp( - - - /** - * 时间key 月份/年份 - */ - @SerializedName("timeKey") - val timeKey: String = "", - - - /** - * 支出 - */ - @SerializedName("expenditure") - var expenditure: BigDecimal = BigDecimal.ZERO, - - /** - * 收入 - */ - @SerializedName("income") - var income: BigDecimal = BigDecimal.ZERO, - - /** - * 账户余额 - */ - @SerializedName("balance") - var balance: BigDecimal = BigDecimal.ZERO, - -) \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/TransactionsResp.kt b/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/TransactionsResp.kt deleted file mode 100644 index 570d00e..0000000 --- a/app/src/main/java/com/tfq/finances/network/model/response/finances/transactions/TransactionsResp.kt +++ /dev/null @@ -1,65 +0,0 @@ -package com.tfq.finances.network.model.response.finances.transactions - -import com.google.gson.annotations.SerializedName -import java.math.BigDecimal - -data class TransactionsResp( - - @SerializedName("id") - var id: Int? = null, - - @SerializedName("appinfoId") - var appinfoId: Int? = null, - - @SerializedName("userId") - var userId: Int? = null, - - /** - * 分类id - */ - @SerializedName("categoryId") - var categoryId: Int? = null, - - /** - * 分类名称 - */ - @SerializedName("categoryName") - var categoryName: String? = null, - - /** - * 金额 - */ - @SerializedName("amount") - var amount: BigDecimal = BigDecimal.ZERO, - - /** - * 描述 - */ - @SerializedName("userDesc") - var userDesc: String? = null, - - /** - * 交易时间 - */ - @SerializedName("transactionDate") - val transactionDate: String? = null, - - /** - * 创建时间 - */ - @SerializedName("createTime") - var createTime: String? = null, - - /** - * 交易类型 - * 1支出 2收入 - */ - @SerializedName("type") - var type: Int? = null, - - /** - * 明细 - */ - @SerializedName("isShowTitle") - var isShowTitle: Boolean? = false -) diff --git a/app/src/main/java/com/tfq/finances/utils/BitmapUtils.java b/app/src/main/java/com/tfq/finances/utils/BitmapUtils.java new file mode 100644 index 0000000..a996243 --- /dev/null +++ b/app/src/main/java/com/tfq/finances/utils/BitmapUtils.java @@ -0,0 +1,259 @@ +package com.tfq.finances.utils; + +import android.graphics.Bitmap; + +import java.util.Objects; + +public class BitmapUtils { + + private static int[] r; + private static int[] g; + private static int[] b; + private static int[] vmin; + private static int[] dv; + + /** + * 高斯模糊 + * + * @param lessen 预缩小采样 + * @param blurRadius 模糊半径 0 < radius <= 25 + */ + public static Bitmap applyBlurWithScaling(Bitmap originalBitmap, int lessen, float blurRadius) { + if (originalBitmap == null) { + return null; + } + + // 1. 预缩小采样 + int scaledWidth = originalBitmap.getWidth() / lessen; + int scaledHeight = originalBitmap.getHeight() / lessen; + Bitmap scaledBitmap = Bitmap.createScaledBitmap( + originalBitmap, + scaledWidth, + scaledHeight, + true // 使用双线性过滤保持平滑 + ); + + // 2. 使用快速模糊算法处理 + Bitmap blurredBitmap = fastBlur(scaledBitmap, Math.min((int)blurRadius, 25)); + + // 3. 放大回原尺寸 + return Bitmap.createScaledBitmap( + blurredBitmap, + originalBitmap.getWidth(), + originalBitmap.getHeight(), + true + ); + } + + /** + * 使用FastBlur算法实现模糊效果 + */ + public static Bitmap fastBlur(Bitmap sentBitmap, int radius) { + if (sentBitmap == null) return null; + if (radius < 1) return sentBitmap; + + Bitmap bitmap = sentBitmap.copy(Objects.requireNonNull(sentBitmap.getConfig()), true); + + int w = bitmap.getWidth(); + int h = bitmap.getHeight(); + + // 特殊情况处理 - 图片太小或半径太大时直接返回 + if (w <= 1 || h <= 1 || radius >= Math.min(w, h)) { + return bitmap; + } + + int wh = w * h; + int div = radius + radius + 1; + + // 初始化必要的数组和数据结构 + if (r == null || r.length != wh) { + r = new int[wh]; + g = new int[wh]; + b = new int[wh]; + vmin = new int[Math.max(w, h)]; + // 预计算除法结果,避免循环中的重复计算 + int divsum = (div + 1) >> 1; + divsum *= divsum; + dv = new int[256 * divsum]; + for (int i = 0; i < 256 * divsum; i++) { + dv[i] = (i / divsum); + } + } + + int[] pix = new int[wh]; + bitmap.getPixels(pix, 0, w, 0, 0, w, h); + + int wm = w - 1; + int hm = h - 1; + int rsum, gsum, bsum, x, y, i, p, yp, yi, yw; + int stackpointer; + int stackstart; + int[] sir; + int rbs; + int r1 = radius + 1; + int routsum, goutsum, boutsum; + int rinsum, ginsum, binsum; + + yw = yi = 0; + + int[][] stack = new int[div][3]; + + for (y = 0; y < h; y++) { + rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; + for (i = -radius; i <= radius; i++) { + p = pix[yi + Math.min(wm, Math.max(i, 0))]; + sir = stack[i + radius]; + sir[0] = (p & 0xff0000) >> 16; + sir[1] = (p & 0x00ff00) >> 8; + sir[2] = (p & 0x0000ff); + rbs = r1 - Math.abs(i); + rsum += sir[0] * rbs; + gsum += sir[1] * rbs; + bsum += sir[2] * rbs; + if (i > 0) { + rinsum += sir[0]; + ginsum += sir[1]; + binsum += sir[2]; + } else { + routsum += sir[0]; + goutsum += sir[1]; + boutsum += sir[2]; + } + } + stackpointer = radius; + + for (x = 0; x < w; x++) { + r[yi] = dv[rsum]; + g[yi] = dv[gsum]; + b[yi] = dv[bsum]; + + rsum -= routsum; + gsum -= goutsum; + bsum -= boutsum; + + stackstart = stackpointer - radius + div; + sir = stack[stackstart % div]; + + routsum -= sir[0]; + goutsum -= sir[1]; + boutsum -= sir[2]; + + if (y == 0) { + vmin[x] = Math.min(x + radius + 1, wm); + } + p = pix[yw + vmin[x]]; + + sir[0] = (p & 0xff0000) >> 16; + sir[1] = (p & 0x00ff00) >> 8; + sir[2] = (p & 0x0000ff); + + rinsum += sir[0]; + ginsum += sir[1]; + binsum += sir[2]; + + rsum += rinsum; + gsum += ginsum; + bsum += binsum; + + stackpointer = (stackpointer + 1) % div; + sir = stack[(stackpointer) % div]; + + routsum += sir[0]; + goutsum += sir[1]; + boutsum += sir[2]; + + rinsum -= sir[0]; + ginsum -= sir[1]; + binsum -= sir[2]; + + yi++; + } + yw += w; + } + for (x = 0; x < w; x++) { + rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; + yp = -radius * w; + for (i = -radius; i <= radius; i++) { + yi = Math.max(0, yp) + x; + + sir = stack[i + radius]; + + sir[0] = r[yi]; + sir[1] = g[yi]; + sir[2] = b[yi]; + + rbs = r1 - Math.abs(i); + + rsum += r[yi] * rbs; + gsum += g[yi] * rbs; + bsum += b[yi] * rbs; + + if (i > 0) { + rinsum += sir[0]; + ginsum += sir[1]; + binsum += sir[2]; + } else { + routsum += sir[0]; + goutsum += sir[1]; + boutsum += sir[2]; + } + + if (i < hm) { + yp += w; + } + } + yi = x; + stackpointer = radius; + for (y = 0; y < h; y++) { + pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum]; + + rsum -= routsum; + gsum -= goutsum; + bsum -= boutsum; + + stackstart = stackpointer - radius + div; + sir = stack[stackstart % div]; + + routsum -= sir[0]; + goutsum -= sir[1]; + boutsum -= sir[2]; + + if (x == 0) { + vmin[y] = Math.min(y + r1, hm) * w; + } + p = x + vmin[y]; + + sir[0] = r[p]; + sir[1] = g[p]; + sir[2] = b[p]; + + rinsum += sir[0]; + ginsum += sir[1]; + binsum += sir[2]; + + rsum += rinsum; + gsum += ginsum; + bsum += binsum; + + stackpointer = (stackpointer + 1) % div; + sir = stack[stackpointer]; + + routsum += sir[0]; + goutsum += sir[1]; + boutsum += sir[2]; + + rinsum -= sir[0]; + ginsum -= sir[1]; + binsum -= sir[2]; + + yi += w; + } + } + + Bitmap blurredBitmap = Bitmap.createBitmap(w, h, Objects.requireNonNull(bitmap.getConfig())); + blurredBitmap.setPixels(pix, 0, w, 0, 0, w, h); + bitmap.recycle(); // 回收原始位图 + return blurredBitmap; + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tfq/finances/utils/ChooseHeadDialog.java b/app/src/main/java/com/tfq/finances/utils/ChooseHeadDialog.java deleted file mode 100644 index 9134237..0000000 --- a/app/src/main/java/com/tfq/finances/utils/ChooseHeadDialog.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.tfq.finances.utils; - -import android.annotation.SuppressLint; -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.util.DisplayMetrics; -import android.view.LayoutInflater; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.widget.TextView; - -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.tfq.finances.core.enums.AvatarEnum; -import com.tfq.finances.finances.adapter.HeadAdapter; -import com.tfq.finances.finances.model.HeadConfig; -import com.tfq.finances.jzrcj.R; -import com.tfq.finances.utils.animation.AnimationClick; -import com.tfq.library.utils.RecyclerViewHelper; - -import java.util.ArrayList; -import java.util.List; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -public class ChooseHeadDialog extends Dialog { - private final Context mContext; - private final LayoutInflater inflater; - private Listener listener; - private String type; - private String content; - private String title; - private RecyclerView recycler_view; - private int old_checked_item = 0; - private HeadAdapter mAdapter; - - public ChooseHeadDialog(Context context, Listener listener) { - super(context, com.tfq.finances.jzrcj.R.style.CustomDialog); - this.listener = listener; - this.mContext = context; - inflater = LayoutInflater.from(context); - } - - public ChooseHeadDialog(Context context, String type) { - super(context, R.style.CustomDialog); - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - public ChooseHeadDialog(Context context, String title, String content, Listener listener) { - super(context, R.style.CustomDialog); - this.mContext = context; - this.title = title; - this.content = content; - this.listener = listener; - inflater = LayoutInflater.from(context); - } - - public ChooseHeadDialog(Context context, String type, String title, String content) { - super(context, R.style.CustomDialog); - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - public ChooseHeadDialog(Context context, String type, String title, String content, Listener listener) { - super(context, R.style.CustomDialog); - this.listener = listener; - this.mContext = context; - this.type = type; - this.title = title; - this.content = content; - inflater = LayoutInflater.from(context); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setViews(); - } - - private void setViews() { - View contentView = inflater.inflate(com.tfq.finances.jzrcj.R.layout.layout_dialog_choose_head, null); - setContentView(contentView); - TextView tv_title = contentView.findViewById(R.id.tv_title); - TextView tv_content = contentView.findViewById(R.id.tv_content); - TextView tv_left = contentView.findViewById(R.id.tv_left); - TextView tv_right = contentView.findViewById(R.id.tv_right); - - recycler_view = contentView.findViewById(R.id.recycler_view); - - initRecyclerView(); - - Window dialogWindow = getWindow(); - WindowManager.LayoutParams lp = dialogWindow.getAttributes(); - DisplayMetrics d = mContext.getResources().getDisplayMetrics(); // 获取屏幕宽、高用 - lp.width = (int) (d.widthPixels * 0.93); // 宽度设置为屏幕的0..8 0.9 - dialogWindow.setAttributes(lp); - - if ("choose_head".equals(type)) { - tv_title.setText(title); - } - - tv_left.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - dismiss(); - } - }); - - tv_right.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (listener != null) { - if ("choose_head".equals(type)) { - int avatarId = mAdapter.getData().get(getOldCheckedItem()).getHeadId(); - listener.success(avatarId); - dismiss(); - } - } - } - }); - } - - private void initRecyclerView() { - mAdapter = new HeadAdapter(R.layout.item_head_layout); - recycler_view.setAdapter(mAdapter); - GridLayoutManager manager = new GridLayoutManager(mContext, 4, RecyclerView.VERTICAL, false); - RecyclerViewHelper.initRecyclerViewV(mContext, recycler_view, mAdapter); - recycler_view.setLayoutManager(manager); - List typeOriginConfigs = getHeadConfigs(); - mAdapter.setNewData(typeOriginConfigs); - mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @SuppressLint("NotifyDataSetChanged") - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - if (getOldCheckedItem() != position) { - mAdapter.getData().get(position).setItemCheck(true); - mAdapter.getData().get(getOldCheckedItem()).setItemCheck(false); - setOldCheckedItem(position); - mAdapter.notifyDataSetChanged(); - } - } - }); - AnimationClick.startScaleAnimation(recycler_view); - - } - - @NonNull - private List getHeadConfigs() { - List headConfigs = new ArrayList<>(); - - List mAvatarEnum = AvatarEnum.getAll(); - for (int i = 0; i < mAvatarEnum.size(); i++) { - AvatarEnum avatarEnum = mAvatarEnum.get(i); - HeadConfig config = new HeadConfig(); - config.setHeadId(avatarEnum.getId()); - config.setHeadName(avatarEnum.getName()); - config.setHeadResource(avatarEnum.getAvatar()); - config.setHeadCheck(avatarEnum.getIcUnOnChecked()); - config.setHeadChecked(avatarEnum.getIcOnChecked()); - if (i == getOldCheckedItem()) { - config.setItemCheck(true); - } - headConfigs.add(config); - } - return headConfigs; - } - - public int getOldCheckedItem() { - return old_checked_item; - } - - public void setOldCheckedItem(int old_checked_item) { - this.old_checked_item = old_checked_item; - } - - public interface Listener { - void success(int avaterId); - } - -} diff --git a/app/src/main/java/com/tfq/finances/utils/ConfirmationDialog.java b/app/src/main/java/com/tfq/finances/utils/ConfirmationDialog.java new file mode 100644 index 0000000..adfe855 --- /dev/null +++ b/app/src/main/java/com/tfq/finances/utils/ConfirmationDialog.java @@ -0,0 +1,127 @@ +package com.tfq.finances.utils; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; + +import com.tfq.library.R; + +public class ConfirmationDialog extends Dialog { + private final Context mContext; + private final LayoutInflater inflater; + private Listener listener; + private View contentView; + private String type; + private String content; + private String title; + private Listener_Result listener_result; + + public ConfirmationDialog(Context context, String type) { + super(context, R.style.Dialog); + this.mContext = context; + this.type = type; + this.title = title; + this.content = content; + inflater = LayoutInflater.from(context); + } + + public ConfirmationDialog(Context context, String title, String content, Listener listener) { + super(context, R.style.Dialog); + this.mContext = context; + this.title = title; + this.content = content; + this.listener = listener; + inflater = LayoutInflater.from(context); + } + + public ConfirmationDialog(Context context, String type, String title, String content) { + super(context, R.style.Dialog); + this.mContext = context; + this.type = type; + this.title = title; + this.content = content; + inflater = LayoutInflater.from(context); + } + + public ConfirmationDialog(Context context, String type, String title, String content, Listener_Result listener_result) { + super(context, R.style.Dialog); + this.listener_result = listener_result; + this.mContext = context; + this.type = type; + this.title = title; + this.content = content; + inflater = LayoutInflater.from(context); + } + + public ConfirmationDialog(Context context, String type, String title, String content, Listener listener) { + super(context, R.style.Dialog); + this.listener = listener; + this.mContext = context; + this.type = type; + this.title = title; + this.content = content; + inflater = LayoutInflater.from(context); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setViews(); + } + + private void setViews() { + contentView = inflater.inflate(R.layout.library_layout_dialog_confirmation, null); + setContentView(contentView); + TextView tv_title = contentView.findViewById(R.id.tv_title); + TextView tv_content = contentView.findViewById(R.id.tv_content); + TextView tv_left = contentView.findViewById(R.id.tv_left); + TextView tv_right = contentView.findViewById(R.id.tv_right); + if ("del_project".equals(type)) { + tv_content.setText(content); + tv_title.setText(title); + tv_right.setTextColor(mContext.getResources().getColor(R.color.gold)); + } else if ("export_data".equals(type)) { + tv_content.setText(content); + tv_title.setText(title); + tv_right.setTextColor(mContext.getResources().getColor(R.color.gold)); + } else { + tv_content.setText(content); + tv_title.setText(title); + } + + tv_left.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (listener_result != null) { + listener_result.success(false); + } + dismiss(); + } + }); + + tv_right.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (listener != null) { + listener.success(); + dismiss(); + } else if (listener_result != null) { + listener_result.success(true); + dismiss(); + } + } + }); + } + + public interface Listener { + void success(); + } + + public interface Listener_Result { + void success(boolean b); + } + +} diff --git a/app/src/main/java/com/tfq/finances/utils/DecimalInputFilter.java b/app/src/main/java/com/tfq/finances/utils/DecimalInputFilter.java new file mode 100644 index 0000000..0394e39 --- /dev/null +++ b/app/src/main/java/com/tfq/finances/utils/DecimalInputFilter.java @@ -0,0 +1,46 @@ +package com.tfq.finances.utils; + +import android.text.InputFilter; +import android.text.Spanned; + +import java.util.regex.Pattern; + +/** + * 小数输入过滤器,用于限制EditText的输入格式 + * 功能:限制用户只能输入最多两位小数,支持负数输入 + */ +public class DecimalInputFilter implements InputFilter { + // 正则表达式匹配规则: + // ^-? - 可选的负号开头 + // \d* - 零个或多个数字(整数部分) + // \.? - 可选的小数点 + // \d{0,2} - 零到两个数字(小数部分) + private final Pattern decimalPattern = Pattern.compile("^-?\\d*\\.?\\d{0,2}$"); + + /** + * 输入过滤方法 + * @param source 新输入的字符 + * @param start 新输入字符的起始位置 + * @param end 新输入字符的结束位置 + * @param dest 当前EditText中的完整文本 + * @param dstart 当前光标起始位置 + * @param dend 当前光标结束位置 + * @return null表示接受输入,空字符串表示拒绝输入 + */ + @Override + public CharSequence filter(CharSequence source, int start, int end, + Spanned dest, int dstart, int dend) { + String newText = dest.toString().substring(0, dstart) + + source.toString() + + dest.toString().substring(dend); + + // 特殊情况处理:允许空输入或仅输入负号 + if (newText.isEmpty() || newText.equals("-")) return null; + + // 验证新文本是否符合小数格式要求 + if (!decimalPattern.matcher(newText).matches()) { + return "";// 拒绝不符合格式的输入 + } + return null;// 接受符合格式的输入 + } +} diff --git a/app/src/main/java/com/tfq/finances/utils/androidpicker/CalculateUtils.java b/app/src/main/java/com/tfq/finances/utils/androidpicker/CalculateUtils.java index c54d013..3a60d90 100644 --- a/app/src/main/java/com/tfq/finances/utils/androidpicker/CalculateUtils.java +++ b/app/src/main/java/com/tfq/finances/utils/androidpicker/CalculateUtils.java @@ -18,13 +18,10 @@ import com.github.gzuliyujiang.wheelpicker.annotation.DateMode; import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; import com.github.gzuliyujiang.wheelpicker.entity.DateEntity; import com.github.gzuliyujiang.wheelpicker.widget.DateWheelLayout; -import com.tfq.finances.finances.activity.Activity_Detail_Add; import com.tfq.finances.main.model.TypeOriginConfig; -import com.tfq.finances.network.api.finances.TransactionsService; -import com.tfq.finances.network.config.ApiCallback; import com.tfq.finances.utils.animation.AnimationClick; import com.tfq.library.utils.LogK; -import com.tfq.library.utils.PermissionDialog; +import com.tfq.finances.utils.ConfirmationDialog; import com.tfq.library.utils.ToasterUtil; import java.math.BigDecimal; @@ -57,7 +54,6 @@ public class CalculateUtils { * 仅用于是否添加成功的判断,用于刷新recyclerview */ private boolean isReqSuccessRefreshRv; - private TypeOriginConfig typeOriginConfig; private int yearMonthDay = com.tfq.finances.utils.androidpicker.DateMode.YEAR_MONTH; private Listener listener; @@ -528,10 +524,6 @@ public class CalculateUtils { picker.show(); } - public void setOriginBean(TypeOriginConfig typeOriginConfig) { - this.typeOriginConfig = typeOriginConfig; - } - /** * 将计算结果上传到服务器 */ @@ -557,52 +549,12 @@ public class CalculateUtils { Editable text = et_remark.getText(); String remark = text == null ? "" : text.toString(); - //String userDesc = typeOriginConfig.getTypeOriginName(); - Integer categoryId = typeOriginConfig.getTypeOriginId(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - if (!isReqServer) { - isReqServer = true; - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - isReqServer = false; - } - }, 1000); - String finalToday = today; - if (false) { - new PermissionDialog(mActivity, "添加记账", "点击确认将添加" + (type == 1 ? "支出" : "收入") + remark + bigDecimal + "元", new PermissionDialog.Listener() { - @Override - public void success() { - addTransactions(categoryId, remark, finalToday); - } - }).show(); - } else { - addTransactions(categoryId, remark, finalToday); - } - } - } + } private void addTransactions(Integer categoryId, String remark, String finalToday) { - new TransactionsService(mActivity).addTransactions(type, categoryId, bigDecimal, remark, finalToday, new ApiCallback() { - @Override - public void onSuccess(String response) { - isReqServer = false; - isReqSuccessRefreshRv = true; - ToasterUtil.show("记账项目创建成功"); - reset(); - Activity_Detail_Add activityDetailAdd = (Activity_Detail_Add) mActivity; - activityDetailAdd.setReqSuccessRefreshRv(isReqSuccessRefreshRv); - } - - @Override - public void onFailure(int errorCode, String errorMessage) { - isReqServer = false; - ToasterUtil.show(errorMessage); - } - }); } private void reset() { diff --git a/app/src/main/java/com/tfq/finances/utils/androidpicker/DateWheelLayout.java b/app/src/main/java/com/tfq/finances/utils/androidpicker/DateWheelLayout.java index f749214..73a209a 100644 --- a/app/src/main/java/com/tfq/finances/utils/androidpicker/DateWheelLayout.java +++ b/app/src/main/java/com/tfq/finances/utils/androidpicker/DateWheelLayout.java @@ -29,7 +29,7 @@ import com.github.gzuliyujiang.wheelview.annotation.ScrollState; import com.github.gzuliyujiang.wheelview.contract.WheelFormatter; import com.github.gzuliyujiang.wheelview.widget.NumberWheelView; import com.github.gzuliyujiang.wheelview.widget.WheelView; -import com.tfq.finances.jzrcj.R; +import com.tfq.demo.R; import java.util.Arrays; import java.util.List; diff --git a/BaseLibrary/src/main/java/com/tfq/library/utils/AddTextDialog.java b/app/src/main/java/com/tfq/finances/view/AddTextDialog.java similarity index 96% rename from BaseLibrary/src/main/java/com/tfq/library/utils/AddTextDialog.java rename to app/src/main/java/com/tfq/finances/view/AddTextDialog.java index c94be8f..d51f7be 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/utils/AddTextDialog.java +++ b/app/src/main/java/com/tfq/finances/view/AddTextDialog.java @@ -1,6 +1,4 @@ -package com.tfq.library.utils; - -import static androidx.core.content.ContextCompat.getSystemService; +package com.tfq.finances.view; import android.annotation.SuppressLint; import android.app.Activity; @@ -17,7 +15,11 @@ import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; -import com.tfq.library.R; +import com.tfq.demo.R; +import com.tfq.library.utils.AppUtil; +import com.tfq.finances.utils.DecimalInputFilter; +import com.tfq.library.utils.DialogUtils; +import com.tfq.library.utils.ToasterUtil; public class AddTextDialog { boolean isClick = false; diff --git a/app/src/main/java/com/tfq/finances/finances/view/CircleProgressBarWithAnimation.java b/app/src/main/java/com/tfq/finances/view/CircleProgressBarWithAnimation.java similarity index 99% rename from app/src/main/java/com/tfq/finances/finances/view/CircleProgressBarWithAnimation.java rename to app/src/main/java/com/tfq/finances/view/CircleProgressBarWithAnimation.java index 1150d9b..513a8ca 100644 --- a/app/src/main/java/com/tfq/finances/finances/view/CircleProgressBarWithAnimation.java +++ b/app/src/main/java/com/tfq/finances/view/CircleProgressBarWithAnimation.java @@ -1,4 +1,4 @@ -package com.tfq.finances.finances.view; +package com.tfq.finances.view; import android.animation.ValueAnimator; import android.annotation.SuppressLint; @@ -19,7 +19,9 @@ import androidx.annotation.NonNull; import com.tfq.library.utils.LogK; - +/** + * 进度显示圆圈圈 百分比 + */ public class CircleProgressBarWithAnimation extends View { private Paint bgPaint, progressPaint, textPaint; private RectF rectF; diff --git a/app/src/main/res/drawable-xhdpi/app_logo.png b/app/src/main/res/drawable-xhdpi/app_logo.png index 258adc5..199fed3 100644 Binary files a/app/src/main/res/drawable-xhdpi/app_logo.png and b/app/src/main/res/drawable-xhdpi/app_logo.png differ diff --git a/app/src/main/res/drawable-xhdpi/app_splash.png b/app/src/main/res/drawable-xhdpi/app_splash.png index 7613a46..f7cb552 100644 Binary files a/app/src/main/res/drawable-xhdpi/app_splash.png and b/app/src/main/res/drawable-xhdpi/app_splash.png differ diff --git a/app/src/main/res/drawable/ll_radio_rectangle3.xml b/app/src/main/res/drawable/ll_radio_rectangle3.xml deleted file mode 100644 index 23b80b4..0000000 --- a/app/src/main/res/drawable/ll_radio_rectangle3.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_about_us_layout.xml b/app/src/main/res/layout/activity_about_us_layout.xml index 478f6e9..1a365d4 100644 --- a/app/src/main/res/layout/activity_about_us_layout.xml +++ b/app/src/main/res/layout/activity_about_us_layout.xml @@ -78,16 +78,8 @@ android:orientation="horizontal" android:paddingLeft="18dp" android:paddingRight="18dp" - > - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_budgets_layout.xml b/app/src/main/res/layout/activity_budgets_layout.xml deleted file mode 100644 index cb9a5d3..0000000 --- a/app/src/main/res/layout/activity_budgets_layout.xml +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_detail_add.xml b/app/src/main/res/layout/activity_detail_add.xml deleted file mode 100644 index 474cced..0000000 --- a/app/src/main/res/layout/activity_detail_add.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_encrypt_home_layout.xml b/app/src/main/res/layout/activity_encrypt_home_layout.xml deleted file mode 100644 index c50b2a1..0000000 --- a/app/src/main/res/layout/activity_encrypt_home_layout.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_export_layout.xml b/app/src/main/res/layout/activity_export_layout.xml deleted file mode 100644 index 1508b0d..0000000 --- a/app/src/main/res/layout/activity_export_layout.xml +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_favorite_layout.xml b/app/src/main/res/layout/activity_favorite_layout.xml deleted file mode 100644 index 155fc2d..0000000 --- a/app/src/main/res/layout/activity_favorite_layout.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_files_home_layout.xml b/app/src/main/res/layout/activity_files_home_layout.xml deleted file mode 100644 index 5151c39..0000000 --- a/app/src/main/res/layout/activity_files_home_layout.xml +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_files_zip_layout.xml b/app/src/main/res/layout/activity_files_zip_layout.xml deleted file mode 100644 index ebda2f9..0000000 --- a/app/src/main/res/layout/activity_files_zip_layout.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fm_sd.xml b/app/src/main/res/layout/activity_fm_sd.xml deleted file mode 100644 index ad22e31..0000000 --- a/app/src/main/res/layout/activity_fm_sd.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 2648bb8..60829f7 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -138,6 +138,7 @@ android:layout_height="20dp" android:padding="3dp" android:src="@mipmap/ic_check" + /> - - diff --git a/app/src/main/res/layout/activity_photo_list.xml b/app/src/main/res/layout/activity_photo_list.xml deleted file mode 100644 index 233fcf9..0000000 --- a/app/src/main/res/layout/activity_photo_list.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_photo_scan.xml b/app/src/main/res/layout/activity_photo_scan.xml deleted file mode 100644 index 8d34c61..0000000 --- a/app/src/main/res/layout/activity_photo_scan.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_player_list.xml b/app/src/main/res/layout/activity_player_list.xml deleted file mode 100644 index cf73ae8..0000000 --- a/app/src/main/res/layout/activity_player_list.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pwd_edit_layout.xml b/app/src/main/res/layout/activity_pwd_edit_layout.xml deleted file mode 100644 index ddc4cbc..0000000 --- a/app/src/main/res/layout/activity_pwd_edit_layout.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pwd_verify_layout.xml b/app/src/main/res/layout/activity_pwd_verify_layout.xml deleted file mode 100644 index 4320a0b..0000000 --- a/app/src/main/res/layout/activity_pwd_verify_layout.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_setting_more_layout.xml b/app/src/main/res/layout/activity_setting_more_layout.xml index 5608b66..885dff8 100644 --- a/app/src/main/res/layout/activity_setting_more_layout.xml +++ b/app/src/main/res/layout/activity_setting_more_layout.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@mipmap/image_bg_02" + android:background="@mipmap/image_bg_01" android:orientation="vertical" android:paddingTop="25dp"> diff --git a/app/src/main/res/layout/activity_suggest_layout.xml b/app/src/main/res/layout/activity_suggest_layout.xml index 02de016..67c1285 100644 --- a/app/src/main/res/layout/activity_suggest_layout.xml +++ b/app/src/main/res/layout/activity_suggest_layout.xml @@ -2,7 +2,7 @@ diff --git a/app/src/main/res/layout/activity_transactions_layout.xml b/app/src/main/res/layout/activity_transactions_layout.xml deleted file mode 100644 index 219075c..0000000 --- a/app/src/main/res/layout/activity_transactions_layout.xml +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_version_update.xml b/app/src/main/res/layout/activity_version_update.xml deleted file mode 100644 index 4c26f05..0000000 --- a/app/src/main/res/layout/activity_version_update.xml +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_video_list_layout.xml b/app/src/main/res/layout/activity_video_list_layout.xml deleted file mode 100644 index f384edd..0000000 --- a/app/src/main/res/layout/activity_video_list_layout.xml +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_video_player.xml b/app/src/main/res/layout/activity_video_player.xml deleted file mode 100644 index daceaa7..0000000 --- a/app/src/main/res/layout/activity_video_player.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -