diff --git a/app/build.gradle b/app/build.gradle index 1905399..cc4d3df 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,6 +150,7 @@ dependencies { implementation Libs.unCrop implementation Libs.webChatSdk implementation Libs.xxPermissions + implementation project(':colorful') annotationProcessor AndroidX.Room.compiler annotationProcessor Libs.Glide.compiler diff --git a/app/libs/colorful-release.aar b/app/libs/colorful-release.aar deleted file mode 100644 index f44c8eb..0000000 Binary files a/app/libs/colorful-release.aar and /dev/null differ diff --git a/app/src/main/java/com/project/survey/App.java b/app/src/main/java/com/project/survey/App.java index d355b2e..c3a8b04 100644 --- a/app/src/main/java/com/project/survey/App.java +++ b/app/src/main/java/com/project/survey/App.java @@ -124,8 +124,8 @@ public class App extends BaseApp { private void initThemeDark() { Colorful.defaults() - .primaryColor(Colorful.ThemeColor.BLUE) - .accentColor(Colorful.ThemeColor.BLUE) +// .primaryColor(Colorful.ThemeColor.SHANG_HAI_PROJECT) +// .accentColor(Colorful.ThemeColor.SHANG_HAI_PROJECT) .translucent(false) .dark(false); Colorful.init(this); diff --git a/app/src/main/java/com/project/survey/ui/base/BaseSurveyNewActivity.java b/app/src/main/java/com/project/survey/ui/base/BaseSurveyNewActivity.java index f75722c..d929f70 100644 --- a/app/src/main/java/com/project/survey/ui/base/BaseSurveyNewActivity.java +++ b/app/src/main/java/com/project/survey/ui/base/BaseSurveyNewActivity.java @@ -29,7 +29,6 @@ import com.bingce.device.ui.manager.TsMeasSdAnglesManager; import com.bingce.device.ui.utils.TSSettingDialogUtils; import com.bingce.rtk.command.RTK; import com.bingce.rtk.gnss.Gnss; -import com.bingce.surveyor.util.DeviceConnectUtil; import com.bingce.surveyor.util.SurveyDevicePoleHrHeightUtils; import com.bingce.totalstation.TsListener; import com.bingce.utils.PropertiesGet; @@ -41,6 +40,7 @@ import com.project.survey.ui.interfacee.IUIProvider; import com.project.survey.util.AnimUtil; import com.project.survey.util.BaseSurveyActivityUtils; import com.project.survey.util.CountDownUtils; +import com.project.survey.util.DeviceConnectUtil; import com.project.survey.util.DrawableUtils; import com.project.survey.util.SystemUtils; @@ -52,7 +52,7 @@ import java.util.List; import blankj.utilcode.util.ToastUtils; import blankj.utilcode.util.Utils; -public abstract class BaseSurveyNewActivity extends AppCompatActivity implements IUIProvider, Device.IDeviceConnectListener, RtkManager.IRtkListener, +public abstract class BaseSurveyNewActivity extends ColorfulActivity implements IUIProvider, Device.IDeviceConnectListener, RtkManager.IRtkListener, TsListener.MeasCoordinateListener, TsListener.MeasSdAnglesListener, TsListener.AnglesRefreshListener, TsListener.BatteryRefreshListener, TsListener.ChangeHrListener, CountDownUtils.ICountDownSwitcher { public final BaseSurveyActivityUtils baseSurveyActivityUtils = new BaseSurveyActivityUtils(this, this, onRootSetBackgroundColor()); diff --git a/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt b/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt index 401b6c3..70b81c9 100644 --- a/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt +++ b/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt @@ -33,12 +33,15 @@ class InstrumentFragment : BaseFragmentBinding() { override fun initView() { mBinding.tvConnectTSActivity.setOnClickListener { + //全站仪联机 ConnectTSActivity.start(requireContext()) } mBinding.tvConnectRtkActivity.setOnClickListener { + //RTK联机 ConnectRtkActivity.start(this) } mBinding.tvSatelliteStatusActivity.setOnClickListener { + //卫星状态 startActivity(Intent(requireContext(), SatelliteStatusActivity::class.java)) } mBinding.tvTotalStationSetupStation.setOnClickListener { diff --git a/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/BingCeCoordinateSystemActivity.java b/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/BingCeCoordinateSystemActivity.java index dcb6369..3310b35 100644 --- a/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/BingCeCoordinateSystemActivity.java +++ b/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/BingCeCoordinateSystemActivity.java @@ -31,6 +31,7 @@ public class BingCeCoordinateSystemActivity extends AutoLandscapeBingCeActivity ActivityCoordinateSystemBinding binding = ActivityCoordinateSystemBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); Toolbar mToolbar = findViewById(R.id.toolbar); + mToolbar.setTitle(R.string.coordinate_system); setSupportActionBar(mToolbar); if (getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); diff --git a/app/src/main/java/com/project/survey/ui/instrument/mobilestationmode/base/AbstractRtkPointCorrectActivity.java b/app/src/main/java/com/project/survey/ui/instrument/mobilestationmode/base/AbstractRtkPointCorrectActivity.java index 557a011..e5b0161 100644 --- a/app/src/main/java/com/project/survey/ui/instrument/mobilestationmode/base/AbstractRtkPointCorrectActivity.java +++ b/app/src/main/java/com/project/survey/ui/instrument/mobilestationmode/base/AbstractRtkPointCorrectActivity.java @@ -38,6 +38,7 @@ import com.bingce.device.ui.coordinatesystem.event.UpdateCoordinateSystemEvent; import com.bingce.utils.IOnSingleGetCallback; import com.bingce.utils.ThreadPoolUtil; import com.bingce.utils.Util; +import com.project.survey.R; import org.greenrobot.eventbus.EventBus; import org.polaric.colorful.ColorfulActivity; @@ -69,6 +70,7 @@ public abstract class AbstractRtkPointCorrectActivity extends ColorfulActivity { super.onCreate(savedInstanceState); setContentView(Rlayout.activity_point_correct()); bindView(); + mToolbar.setTitle(R.string.point_correction); setSupportActionBar(mToolbar); if (getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); diff --git a/app/src/main/java/com/project/survey/ui/instrument/satellitosis/SatelliteStatusActivity.java b/app/src/main/java/com/project/survey/ui/instrument/satellitosis/SatelliteStatusActivity.java index c18f0ae..a5bd928 100644 --- a/app/src/main/java/com/project/survey/ui/instrument/satellitosis/SatelliteStatusActivity.java +++ b/app/src/main/java/com/project/survey/ui/instrument/satellitosis/SatelliteStatusActivity.java @@ -6,7 +6,6 @@ import android.view.MenuItem; import android.view.View; import com.bingce.device.Device; -import com.bingce.device.ui.databinding.ActivitySatelliteStatusBinding; import com.bingce.rtk.command.RTK; import com.bingce.rtk.command.geomax.GeoMaxRTK; import com.bingce.rtk.enums.SateSystemEnum; @@ -14,6 +13,7 @@ import com.bingce.rtk.model.GnssPosition; import com.bingce.rtk.parser.nmea0183.SatInfo; import com.bingce.rtk.parser.nmea0183.SatelliteData; import com.project.survey.R; +import com.project.survey.databinding.ActivitySatelliteStatusBinding; import com.project.survey.ui.base.BaseSurveyNewActivity; diff --git a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java index df8f1b0..70ece01 100644 --- a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java +++ b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java @@ -46,7 +46,6 @@ import com.bingce.road.move.MoveK; import com.bingce.road.move.MoveLeftRight; import com.bingce.surveyor.agentweb.HelpWebActivity; import com.bingce.surveyor.util.ConstUtils; -import com.bingce.surveyor.util.DeviceConnectUtil; import com.bingce.surveyor.util.PreferencesUtil; import com.bingce.surveyor.util.SurveyLimitCheckUtils; import com.bingce.surveyor.util.SurveyRemarksUtils; @@ -73,6 +72,7 @@ import com.project.survey.ui.lofting.pointlofting.record.RecordsActivity; import com.project.survey.ui.lofting.pointlofting.record.util.RecordTypeConstants; import com.project.survey.ui.pointmeasure.measure.util.SurveyToolBarClickListenerUtils; import com.project.survey.util.CommonUtils; +import com.project.survey.util.DeviceConnectUtil; import com.project.survey.util.DrawableUtils; import com.project.survey.util.SurveyUIUtils; diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PointSurveyNewActivity.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PointSurveyNewActivity.java index f035722..db6b725 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PointSurveyNewActivity.java +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/PointSurveyNewActivity.java @@ -39,15 +39,9 @@ import com.bingce.coordlib.model.Blh; import com.bingce.coordlib.model.Coordinate; import com.bingce.coordlib.util.CoordUtil; import com.bingce.data.DeviceInfoData; -import com.bingce.data.cache.CachedCurrentJob; -import com.bingce.data.cache.CachedCurrentRoad; -import com.bingce.data.cache.CachedProject; import com.bingce.data.database.CodeDb; import com.bingce.data.database.DBQueryConstant; -import com.bingce.data.database.JobDb; import com.bingce.data.database.PointDb; -import com.bingce.data.surveyor.designdata.job.JobConstants; -import com.bingce.data.surveyor.designdata.job.JobRecord; import com.bingce.data.surveyor.surveydata.code.CodeConstants; import com.bingce.data.surveyor.surveydata.code.CodeRecord; import com.bingce.data.surveyor.surveydata.pointsurvey.PointConstants; @@ -55,12 +49,10 @@ import com.bingce.data.surveyor.surveydata.pointsurvey.PointRecord; import com.bingce.device.Device; import com.bingce.device.enums.DeviceTypeEnum; import com.bingce.device.util.DeviceUtils; -import com.bingce.error.BingCeErrorCode; import com.bingce.rtk.gnss.Gnss; import com.bingce.rtk.model.GnssPosition; import com.bingce.surveyor.agentweb.HelpWebActivity; import com.bingce.surveyor.util.ConstUtils; -import com.bingce.surveyor.util.DeviceConnectUtil; import com.bingce.surveyor.util.PreferencesUtil; import com.bingce.surveyor.util.SurveyRemarksUtils; import com.bingce.surveyor.util.dialog.CustomDialog; @@ -83,6 +75,7 @@ import com.project.survey.ui.instrument.setupstation.LauncherEvent; import com.project.survey.ui.pointmeasure.measure.util.SFUtils; import com.project.survey.ui.pointmeasure.measure.util.SurveyToolBarClickListenerUtils; import com.project.survey.util.CommonUtils; +import com.project.survey.util.DeviceConnectUtil; import com.project.survey.util.DrawableUtils; import com.project.survey.util.SurveyUIUtils; import com.project.survey.widget.bingce.dragdrop.DefaultItemCallback; diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/util/SurveyToolBarClickListenerUtils.java b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/util/SurveyToolBarClickListenerUtils.java index 7aa1809..dcf51bc 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/measure/util/SurveyToolBarClickListenerUtils.java +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/measure/util/SurveyToolBarClickListenerUtils.java @@ -14,12 +14,12 @@ import com.bingce.device.Device; import com.bingce.device.enums.DeviceTypeEnum; import com.bingce.rtk.command.RTK; import com.bingce.rtk.gnss.Gnss; -import com.bingce.surveyor.util.DeviceConnectUtil; import com.bingce.surveyor.util.dialog.CustomDialog; import com.bingce.surveyorBase.R.string; -import com.bingce.surveyorBase.databinding.ActivityBaseSurveyNewBinding; import com.bingce.utils.Util; +import com.project.survey.databinding.ActivityBaseSurveyNewBinding; import com.project.survey.databinding.LayoutBaseSurveyStakingSettingBinding; +import com.project.survey.util.DeviceConnectUtil; import blankj.utilcode.util.ToastUtils; import lecho.hellocharts.view.LineChartView; diff --git a/app/src/main/java/com/project/survey/util/BaseSurveyActivityUtils.java b/app/src/main/java/com/project/survey/util/BaseSurveyActivityUtils.java index d0bc728..14484e9 100644 --- a/app/src/main/java/com/project/survey/util/BaseSurveyActivityUtils.java +++ b/app/src/main/java/com/project/survey/util/BaseSurveyActivityUtils.java @@ -13,13 +13,13 @@ import com.bingce.device.enums.DeviceTypeEnum; import com.bingce.rtk.enums.WorkModeEnum; import com.bingce.rtk.gnss.Gnss; import com.bingce.rtk.model.GnssPosition; -import com.bingce.surveyorBase.databinding.ActivityBaseSurveyNewBinding; import com.bingce.totalstation.TotalStation; import com.bingce.totalstation.TsConfig; import com.bingce.totalstation.enums.SetupStationModeEnum; import com.bingce.utils.Util; import com.gyf.immersionbar.ImmersionBar; import com.project.survey.R; +import com.project.survey.databinding.ActivityBaseSurveyNewBinding; import com.project.survey.ui.interfacee.IUIProvider; import java.util.Locale; diff --git a/app/src/main/java/com/project/survey/util/DeviceConnectUtil.java b/app/src/main/java/com/project/survey/util/DeviceConnectUtil.java new file mode 100644 index 0000000..56c836f --- /dev/null +++ b/app/src/main/java/com/project/survey/util/DeviceConnectUtil.java @@ -0,0 +1,104 @@ +package com.project.survey.util; + +import android.content.Context; +import android.content.Intent; +import android.view.View; + +import com.bingce.AppChannel; +import com.bingce.device.Device; +import com.bingce.device.enums.DeviceTypeEnum; +import com.bingce.device.ui.ConnectRtkActivity; +import com.bingce.device.ui.ConnectTSActivity; +import com.bingce.surveyor.util.ConstUtils; +import com.bingce.surveyor.util.PreferencesUtil; +import com.bingce.surveyor.util.dialog.CustomRecycleDialog; +import com.bingce.surveyorBase.R; +import com.bingce.totalstation.TsConfig; +import com.bingce.totalstation.enums.SetupStationModeEnum; +import com.bingce.utils.Util; +import com.project.survey.databinding.ActivityBaseSurveyNewBinding; + +import java.util.ArrayList; +import java.util.List; + +import blankj.utilcode.util.ActivityUtils; +import blankj.utilcode.util.Utils; + +public class DeviceConnectUtil { + + public static boolean isDeviceConnectSelectDialog(Context context, ActivityBaseSurveyNewBinding activityBaseSurveyBinding) { + + if (!Device.getInstance().isDeviceConnected()) { + List stringListDevice = new ArrayList<>(); + stringListDevice.add(context.getString(R.string.total_station)); + stringListDevice.add(context.getString(R.string.rtk)); + CustomRecycleDialog.showDialog(context, R.string.choose_instrument_type, stringListDevice, PreferencesUtil.getLastConnectDeviceType(), false, (index, itemString) -> { + PreferencesUtil.putPreference(ConstUtils.preferConst.lastConnectDeviceType, index); + switch (index) { + case 0: + Intent intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class); + intent.putExtra("customChannel", AppChannel.customChannel); + ActivityUtils.getTopActivity().startActivity(intent); + + if (TsConfig.getInstance().getSetupStationMethod().getMode() == SetupStationModeEnum.ON_TOTAL_STATION) { + activityBaseSurveyBinding.tvSolutionState.setVisibility(View.GONE); + activityBaseSurveyBinding.tvRtkStatusDiffAge.setVisibility(View.GONE); + activityBaseSurveyBinding.tvRtkStatusHrms.setVisibility(View.GONE); + activityBaseSurveyBinding.tvRtkStatusVrms.setVisibility(View.GONE); + activityBaseSurveyBinding.pivPowerIcon.setVisibility(View.GONE); + activityBaseSurveyBinding.tvPowerNum.setVisibility(View.GONE); + } else { + activityBaseSurveyBinding.tvSolutionState.setVisibility(View.VISIBLE); + activityBaseSurveyBinding.tvRtkStatusDiffAge.setVisibility(View.VISIBLE); + activityBaseSurveyBinding.tvRtkStatusHrms.setVisibility(View.VISIBLE); + activityBaseSurveyBinding.tvRtkStatusVrms.setVisibility(View.VISIBLE); + activityBaseSurveyBinding.pivPowerIcon.setVisibility(View.VISIBLE); + activityBaseSurveyBinding.tvPowerNum.setVisibility(View.VISIBLE); + activityBaseSurveyBinding.pivPowerIcon.setProgress(0); + activityBaseSurveyBinding.pivPowerIcon.setTextSize(0); + activityBaseSurveyBinding.tvSolutionState.setText(String.format("Ha %s", Util.radianToDmsString(0, 0, true))); + activityBaseSurveyBinding.tvRtkStatusDiffAge.setText(String.format("Va %s", Util.radianToDmsString(0, 0, true))); + activityBaseSurveyBinding.tvRtkStatusHrms.setText(String.format("Hd %s", Util.formatDouble2String(0, 3))); + activityBaseSurveyBinding.tvRtkStatusVrms.setText(String.format("Sd %s", Util.formatDouble2String(0, 3))); + } + activityBaseSurveyBinding.tvPoleHighHr.setText("0.000m"); + activityBaseSurveyBinding.ivPoleHighHr.setImageDrawable(Utils.getApp().getResources().getDrawable(R.drawable.icon_hr_high_white)); + activityBaseSurveyBinding.ivRtkStatusSatellite.setImageDrawable(Utils.getApp().getResources().getDrawable(R.mipmap.icon_edm_np)); + activityBaseSurveyBinding.tvRtkStatusSatellite.setText(R.string.laser); + break; + case 1: + Intent intent2 = new Intent(ActivityUtils.getTopActivity(), ConnectRtkActivity.class); + ActivityUtils.getTopActivity().startActivity(intent2); + + activityBaseSurveyBinding.tvRtkStatusHrms.setText(Utils.getApp().getString(R.string.no_data)); + activityBaseSurveyBinding.tvRtkStatusVrms.setText(Utils.getApp().getString(R.string.no_delay)); + activityBaseSurveyBinding.tvSolutionState.setText(""); + activityBaseSurveyBinding.tvRtkStatusDiffAge.setText(""); + activityBaseSurveyBinding.pivPowerIcon.setProgress(0); + activityBaseSurveyBinding.pivPowerIcon.setTextSize(0); + activityBaseSurveyBinding.tvPoleHighHr.setText("0.000m"); + activityBaseSurveyBinding.ivPoleHighHr.setImageDrawable(Utils.getApp().getResources().getDrawable(R.drawable.icon_pole_high_white)); + activityBaseSurveyBinding.ivRtkStatusSatellite.setImageDrawable(Utils.getApp().getResources().getDrawable(R.mipmap.icon_home_satellite)); + activityBaseSurveyBinding.tvRtkStatusSatellite.setText(String.format("%s %s/%s", Utils.getApp().getString(R.string.satellite), 0, 0)); + break; + } + }); + return false; + } else { + return true; + } + } + + public static void startDeviceConnected(Context context, ActivityBaseSurveyNewBinding activityBaseSurveyBinding) { + if (DeviceConnectUtil.isDeviceConnectSelectDialog(context, activityBaseSurveyBinding)) { + if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) { + Intent intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class); + intent.putExtra("customChannel", AppChannel.customChannel); + ActivityUtils.getTopActivity().startActivity(intent); + } else { + Intent intent2 = new Intent(ActivityUtils.getTopActivity(), ConnectRtkActivity.class); + ActivityUtils.getTopActivity().startActivity(intent2); + } + } + } +} diff --git a/app/src/main/res/drawable/icon_menu_sideslip.xml b/app/src/main/res/drawable/icon_menu_sideslip.xml new file mode 100644 index 0000000..c1a12eb --- /dev/null +++ b/app/src/main/res/drawable/icon_menu_sideslip.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_base_survey_new.xml b/app/src/main/res/layout/activity_base_survey_new.xml new file mode 100644 index 0000000..7053745 --- /dev/null +++ b/app/src/main/res/layout/activity_base_survey_new.xml @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_satellite_status.xml b/app/src/main/res/layout/activity_satellite_status.xml new file mode 100644 index 0000000..da2dc35 --- /dev/null +++ b/app/src/main/res/layout/activity_satellite_status.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/colorful/.gitignore b/colorful/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/colorful/.gitignore @@ -0,0 +1 @@ +/build diff --git a/colorful/build.gradle b/colorful/build.gradle new file mode 100644 index 0000000..f723784 --- /dev/null +++ b/colorful/build.gradle @@ -0,0 +1,44 @@ +import com.bingce.AndroidSdk +import com.bingce.AndroidX +import com.bingce.BcFolder + +apply plugin: 'com.android.library' + +android { + compileSdk AndroidSdk.compileSdkVersion + namespace 'org.polaric.colorful' + + defaultConfig { + minSdkVersion AndroidSdk.minSdkVersion + targetSdkVersion AndroidSdk.targetSdkVersion + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + + sourceSets { + main { + java { + def bcFolder = new BcFolder(project) + srcDirs = [ + new File(bcFolder.rootProjectDir(), "base/buildSrc/color/main/java"),//用于存储模块相关的R、BuildConfig资源 + new File("src/main/java") + ] + } + } + } +} + +dependencies { + implementation AndroidX.appcompat + implementation AndroidX.recyclerview + implementation AndroidX.legacyPreference + implementation AndroidX.Lifecycle.extensions +} diff --git a/colorful/proguard-rules.pro b/colorful/proguard-rules.pro new file mode 100644 index 0000000..8ebe0cb --- /dev/null +++ b/colorful/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/polaric/Documents/Code/SDK/android-sdk-linux/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/colorful/src/main/AndroidManifest.xml b/colorful/src/main/AndroidManifest.xml new file mode 100644 index 0000000..7cec54a --- /dev/null +++ b/colorful/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/colorful/src/main/java/color/Rcolor.java b/colorful/src/main/java/color/Rcolor.java new file mode 100644 index 0000000..9201133 --- /dev/null +++ b/colorful/src/main/java/color/Rcolor.java @@ -0,0 +1,175 @@ +package color; + +import org.polaric.colorful.R; + +public class Rcolor { + + public static int shang_hai_project_color() { + return R.color.shang_hai_color; + } + + public static int md_red_500() { + return R.color.md_red_500; + } + + public static int md_red_700() { + return R.color.md_red_700; + } + + public static int md_pink_500() { + return R.color.md_pink_500; + } + + public static int md_pink_700() { + return R.color.md_pink_700; + } + + public static int md_purple_500() { + return R.color.md_purple_500; + } + + public static int md_purple_700() { + return R.color.md_purple_700; + } + + public static int md_deep_purple_500() { + return R.color.md_deep_purple_500; + } + + public static int md_deep_purple_700() { + return R.color.md_deep_purple_700; + } + + public static int md_indigo_500() { + return R.color.md_indigo_500; + } + + public static int md_indigo_700() { + return R.color.md_indigo_700; + } + + public static int md_blue_500() { + return R.color.md_blue_500; + } + + public static int md_blue_700() { + return R.color.md_blue_700; + } + + public static int md_light_blue_500() { + return R.color.md_light_blue_500; + } + + public static int md_light_blue_700() { + return R.color.md_light_blue_700; + } + + public static int ufo_blue() { + return R.color.ufo_blue; + } + + public static int alpha_black() { + return R.color.alpha_black; + } + + public static int alpha_green() { + return R.color.alpha_green; + } + + public static int md_teal_500() { + return R.color.md_teal_500; + } + + public static int md_teal_700() { + return R.color.md_teal_700; + } + + public static int md_green_500() { + return R.color.md_green_500; + } + + public static int md_green_700() { + return R.color.md_green_700; + } + + public static int md_light_green_500() { + return R.color.md_light_green_500; + } + + public static int md_light_green_700() { + return R.color.md_light_green_700; + } + + public static int md_lime_500() { + return R.color.md_lime_500; + } + + public static int md_lime_700() { + return R.color.md_lime_700; + } + + public static int md_yellow_500() { + return R.color.md_yellow_500; + } + + public static int md_yellow_700() { + return R.color.md_yellow_700; + } + + public static int md_amber_500() { + return R.color.md_amber_500; + } + + public static int md_amber_700() { + return R.color.md_amber_700; + } + + public static int md_orange_500() { + return R.color.md_orange_500; + } + + public static int md_orange_700() { + return R.color.md_orange_700; + } + + public static int md_deep_orange_500() { + return R.color.md_deep_orange_500; + } + + public static int md_deep_orange_700() { + return R.color.md_deep_orange_700; + } + + public static int md_brown_500() { + return R.color.md_brown_500; + } + + public static int md_brown_700() { + return R.color.md_brown_700; + } + + public static int md_grey_500() { + return R.color.md_grey_500; + } + + public static int md_grey_700() { + return R.color.md_grey_700; + } + + public static int md_blue_grey_500() { + return R.color.md_blue_grey_500; + } + + public static int md_blue_grey_700() { + return R.color.md_blue_grey_700; + } + + public static int md_white_1000() { + return R.color.md_white_1000; + } + + public static int md_black_1000() { + return R.color.md_black_1000; + } +} + diff --git a/colorful/src/main/java/color/Rdrawable.java b/colorful/src/main/java/color/Rdrawable.java new file mode 100644 index 0000000..a79d111 --- /dev/null +++ b/colorful/src/main/java/color/Rdrawable.java @@ -0,0 +1,9 @@ +package color; + +import org.polaric.colorful.R; + +public class Rdrawable { + public static int ic_arrow_back_white_48px() { + return R.drawable.ic_arrow_back_white_48px; + } +} diff --git a/colorful/src/main/java/color/Rid.java b/colorful/src/main/java/color/Rid.java new file mode 100644 index 0000000..2aa9cbe --- /dev/null +++ b/colorful/src/main/java/color/Rid.java @@ -0,0 +1,18 @@ +package color; + +import org.polaric.colorful.R; + +public class Rid { + + public static int color_indicator() { + return R.id.color_indicator; + } + + public static int colorful_color_picker_recycler() { + return R.id.colorful_color_picker_recycler; + } + + public static int colorful_color_picker_toolbar() { + return R.id.colorful_color_picker_toolbar; + } +} diff --git a/colorful/src/main/java/color/Rlayout.java b/colorful/src/main/java/color/Rlayout.java new file mode 100644 index 0000000..c1a499a --- /dev/null +++ b/colorful/src/main/java/color/Rlayout.java @@ -0,0 +1,18 @@ +package color; + +import org.polaric.colorful.R; + +public class Rlayout { + + public static int preference_colorpicker() { + return R.layout.preference_colorpicker; + } + + public static int dialog_colorpicker() { + return R.layout.dialog_colorpicker; + } + + public static int adapter_coloritem() { + return R.layout.adapter_coloritem; + } +} diff --git a/colorful/src/main/java/color/Rstring.java b/colorful/src/main/java/color/Rstring.java new file mode 100644 index 0000000..10ad1a6 --- /dev/null +++ b/colorful/src/main/java/color/Rstring.java @@ -0,0 +1,9 @@ +package color; + +import org.polaric.colorful.R; + +public class Rstring { + public static int select_color() { + return R.string.select_color; + } +} diff --git a/colorful/src/main/java/color/Rstyle.java b/colorful/src/main/java/color/Rstyle.java new file mode 100644 index 0000000..d737f4b --- /dev/null +++ b/colorful/src/main/java/color/Rstyle.java @@ -0,0 +1,13 @@ +package color; + +import org.polaric.colorful.R; + +public class Rstyle { + public static int Colorful_Light() { + return R.style.Colorful_Light; + } + + public static int Colorful_Dark() { + return R.style.Colorful_Dark; + } +} diff --git a/colorful/src/main/java/color/Rstyleable.java b/colorful/src/main/java/color/Rstyleable.java new file mode 100644 index 0000000..eb5413e --- /dev/null +++ b/colorful/src/main/java/color/Rstyleable.java @@ -0,0 +1,17 @@ +package color; + +import org.polaric.colorful.R; + +public class Rstyleable { + public static int[] colorpicker() { + return R.styleable.colorpicker; + } + + public static int colorpicker_primary_color() { + return R.styleable.colorpicker_primary_color; + } + + public static int colorpicker_accent_color() { + return R.styleable.colorpicker_accent_color; + } +} diff --git a/colorful/src/main/java/org/polaric/colorful/CircularView.java b/colorful/src/main/java/org/polaric/colorful/CircularView.java new file mode 100644 index 0000000..8c379d3 --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/CircularView.java @@ -0,0 +1,54 @@ +package org.polaric.colorful; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.util.AttributeSet; +import android.view.View; + +import androidx.annotation.ColorInt; +import androidx.annotation.RequiresApi; + +public class CircularView extends View { + + Paint paint = new Paint(); + Paint paint2 = new Paint();//灰色描边 + + public CircularView(Context context) { + super(context); + } + + public CircularView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public CircularView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @RequiresApi(21) + public CircularView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + public void setColor(@ColorInt int color) { + paint.setColor(color); + paint2.setStyle(Paint.Style.STROKE); + paint2.setStrokeWidth(4); + paint2.setColor(Color.LTGRAY); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight() / 2, canvas.getWidth() / 2 - 9, paint); + canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight() / 2, canvas.getWidth() / 2 - 5, paint2); + } + + public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int size = Math.min(getMeasuredWidth(), getMeasuredHeight()); + setMeasuredDimension(size, size); + } +} diff --git a/colorful/src/main/java/org/polaric/colorful/ColorPickerAdapter.java b/colorful/src/main/java/org/polaric/colorful/ColorPickerAdapter.java new file mode 100644 index 0000000..255f27e --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/ColorPickerAdapter.java @@ -0,0 +1,58 @@ +package org.polaric.colorful; + +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import color.Rlayout; + +class ColorPickerAdapter extends RecyclerView.Adapter { + private Context context; + private OnItemClickListener listener; + + ColorPickerAdapter(Context context) { + this.context=context; + } + + @Override + public int getItemCount() { + return Colorful.ThemeColor.values().length; + } + + @Override + public void onBindViewHolder(ItemViewHolder ViewHolder, int i) { + ViewHolder.circle.setColor(context.getResources().getColor(Colorful.ThemeColor.values()[i].getColorRes())); + } + + @Override + public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + final ItemViewHolder holder = new ItemViewHolder(LayoutInflater.from(context).inflate(Rlayout.adapter_coloritem(), viewGroup, false)); + holder.circle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (listener!=null) { + listener.onItemClick(Colorful.ThemeColor.values()[holder.getAdapterPosition()]); + } + } + }); + return holder; + } + + void setOnItemClickListener(OnItemClickListener l) { + listener=l; + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + CircularView circle; + ItemViewHolder(View v) { + super(v); + circle = ((CircularView) v); + } + } + + interface OnItemClickListener { + void onItemClick(Colorful.ThemeColor color); + } +} diff --git a/colorful/src/main/java/org/polaric/colorful/ColorPickerDialog.java b/colorful/src/main/java/org/polaric/colorful/ColorPickerDialog.java new file mode 100644 index 0000000..418cfd3 --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/ColorPickerDialog.java @@ -0,0 +1,64 @@ +package org.polaric.colorful; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.Toolbar; +import android.view.View; + +import color.Rdrawable; +import color.Rid; +import color.Rlayout; +import color.Rstring; + +public class ColorPickerDialog extends Dialog implements View.OnClickListener, ColorPickerAdapter.OnItemClickListener { + private RecyclerView recycler; + private Toolbar toolbar; + private OnColorSelectedListener listener; + + public ColorPickerDialog(Context context) { + super(context); + } + + @Override + public void onClick(View view) { + dismiss(); + } + + @Override + public void onItemClick(Colorful.ThemeColor color) { + dismiss(); + if (listener!=null) { + listener.onColorSelected(color); + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(Rlayout.dialog_colorpicker()); + + recycler = ((RecyclerView) findViewById(Rid.colorful_color_picker_recycler())); + toolbar = ((Toolbar) findViewById(Rid.colorful_color_picker_toolbar())); + + toolbar.setNavigationOnClickListener(this); + toolbar.setBackgroundColor(getContext().getResources().getColor(Colorful.getThemeDelegate().getPrimaryColor().getColorRes())); + toolbar.setTitle(Rstring.select_color()); + + toolbar.setNavigationIcon(Rdrawable.ic_arrow_back_white_48px()); + recycler.setLayoutManager(new GridLayoutManager(getContext(), 4)); + ColorPickerAdapter adapter = new ColorPickerAdapter(getContext()); + adapter.setOnItemClickListener(this); + recycler.setAdapter(adapter); + } + + public interface OnColorSelectedListener { + void onColorSelected(Colorful.ThemeColor color); + } + + public void setOnColorSelectedListener(OnColorSelectedListener listener) { + this.listener=listener; + } +} diff --git a/colorful/src/main/java/org/polaric/colorful/ColorPickerPreference.java b/colorful/src/main/java/org/polaric/colorful/ColorPickerPreference.java new file mode 100644 index 0000000..098d901 --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/ColorPickerPreference.java @@ -0,0 +1,62 @@ +package org.polaric.colorful; +import android.content.Context; +import android.content.res.TypedArray; +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; +import android.util.AttributeSet; + +import color.Rid; +import color.Rlayout; +import color.Rstyleable; + +public class ColorPickerPreference extends Preference implements ColorPickerDialog.OnColorSelectedListener { + private boolean primary; + private boolean accent; + + public ColorPickerPreference(Context context, AttributeSet attrs) { + super(context, attrs); + setWidgetLayoutResource(Rlayout.preference_colorpicker()); + + TypedArray ta = context.obtainStyledAttributes(attrs, Rstyleable.colorpicker()); + try { + primary = ta.getBoolean(Rstyleable.colorpicker_primary_color(),false); + accent = ta.getBoolean(Rstyleable.colorpicker_accent_color(), false); + } finally { + ta.recycle(); + } + } + + @Override + public void onColorSelected(Colorful.ThemeColor color) { + if (primary) { + Colorful.config(getContext()) + .primaryColor(color) + .apply(); + } else if (accent) { + Colorful.config(getContext()) + .accentColor(color) + .apply(); + } + if (getOnPreferenceChangeListener()!=null) { + getOnPreferenceChangeListener().onPreferenceChange(this, color); + } + } + + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + if (primary) { + ((CircularView) holder.findViewById(Rid.color_indicator())).setColor(getContext().getResources().getColor(Colorful.getThemeDelegate().getPrimaryColor().getColorRes())); + } else if (accent) { + ((CircularView) holder.findViewById(Rid.color_indicator())).setColor(getContext().getResources().getColor(Colorful.getThemeDelegate().getAccentColor().getColorRes())); + } + } + + @Override + protected void onClick() { + super.onClick(); + ColorPickerDialog dialog = new ColorPickerDialog(getContext()); + dialog.setOnColorSelectedListener(this); + dialog.show(); + } +} diff --git a/colorful/src/main/java/org/polaric/colorful/Colorful.java b/colorful/src/main/java/org/polaric/colorful/Colorful.java new file mode 100644 index 0000000..fc1ec28 --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/Colorful.java @@ -0,0 +1,196 @@ +package org.polaric.colorful; + +import android.app.Activity; +import android.content.Context; +import android.util.Log; + +import androidx.annotation.ColorRes; +import androidx.annotation.NonNull; +import androidx.preference.PreferenceManager; + +import color.Rcolor; + +public class Colorful { + private static ThemeDelegate delegate; + private static ThemeColor primaryColor = Defaults.primaryColor; + private static ThemeColor accentColor = Defaults.accentColor; + private static boolean isTranslucent = Defaults.trans; + private static boolean isDark = Defaults.darkTheme; + private static String themeString; + + private Colorful() { + // prevent initialization + } + + public static void init(Context context) { + Log.d(Util.LOG_TAG, "Attatching to " + context.getPackageName()); + themeString = PreferenceManager.getDefaultSharedPreferences(context).getString(Util.PREFERENCE_KEY, null); + if (themeString == null) { + primaryColor = Defaults.primaryColor; + accentColor = Defaults.accentColor; + isTranslucent = Defaults.trans; + isDark = Defaults.darkTheme; + themeString = generateThemeString(); + } else { + initValues(); + } + delegate = new ThemeDelegate(context, primaryColor, accentColor, isTranslucent, isDark); + } + + public static void applyTheme(@NonNull Activity activity) { + applyTheme(activity, true); + } + + public static void applyTheme(@NonNull Activity activity, boolean overrideBase) { + if (overrideBase) { + activity.setTheme(getThemeDelegate().getStyleResBase()); + } + activity.getTheme().applyStyle(getThemeDelegate().getStyleResPrimary(), true); + activity.getTheme().applyStyle(getThemeDelegate().getStyleResAccent(), true); + } + + private static void writeValues(Context context) { + PreferenceManager.getDefaultSharedPreferences(context).edit().putString(Util.PREFERENCE_KEY, generateThemeString()).apply(); + } + + private static void initValues() { + String[] colors = themeString.split(":"); + isDark = Boolean.parseBoolean(colors[0]); + isTranslucent = Boolean.parseBoolean(colors[1]); + primaryColor = Colorful.ThemeColor.values()[Integer.parseInt(colors[2])]; + accentColor = Colorful.ThemeColor.values()[Integer.parseInt(colors[3])]; + } + + private static String generateThemeString() { + return isDark + ":" + isTranslucent + ":" + primaryColor.ordinal() + ":" + accentColor.ordinal(); + } + + public static ThemeDelegate getThemeDelegate() { + if (delegate == null) { + Log.e(Util.LOG_TAG, "getThemeDelegate() called before init(Context). Call Colorful.init(Context) in your application class"); + } + return delegate; + } + + public static String getThemeString() { + return themeString; + } + + public enum ThemeColor { + SHANG_HAI_PROJECT(Rcolor.shang_hai_project_color(), Rcolor.shang_hai_project_color()); +// RED(Rcolor.md_red_500(), Rcolor.md_red_700()), +// PINK(Rcolor.md_pink_500(), Rcolor.md_pink_700()), +// PURPLE(Rcolor.md_purple_500(), Rcolor.md_purple_700()), +// DEEP_PURPLE(Rcolor.md_deep_purple_500(), Rcolor.md_deep_purple_700()), +// INDIGO(Rcolor.md_indigo_500(), Rcolor.md_indigo_700()), +// BLUE(Rcolor.md_blue_500(), Rcolor.md_blue_700()), +// LIGHT_BLUE(Rcolor.md_light_blue_500(), Rcolor.md_light_blue_700()), +// // CYAN(Rcolor.md_cyan_500, Rcolor.md_cyan_700), +// UFO_BLUE(Rcolor.ufo_blue(), Rcolor.ufo_blue()), +// TEAL(Rcolor.md_teal_500(), Rcolor.md_teal_700()), +// GREEN(Rcolor.md_green_500(), Rcolor.md_green_700()), +// LIGHT_GREEN(Rcolor.md_light_green_500(), Rcolor.md_light_green_700()), +// LIME(Rcolor.md_lime_500(), Rcolor.md_lime_700()), +// YELLOW(Rcolor.md_yellow_500(), Rcolor.md_yellow_700()), +// AMBER(Rcolor.md_amber_500(), Rcolor.md_amber_700()), +// ORANGE(Rcolor.md_orange_500(), Rcolor.md_orange_700()), +// DEEP_ORANGE(Rcolor.md_deep_orange_500(), Rcolor.md_deep_orange_700()), +// BROWN(Rcolor.md_brown_500(), Rcolor.md_brown_700()), +// GREY(Rcolor.md_grey_500(), Rcolor.md_grey_700()), +// BLUE_GREY(Rcolor.md_blue_grey_500(), Rcolor.md_blue_grey_700()), +// WHITE(Rcolor.md_white_1000(), Rcolor.md_white_1000()), +// BLACK(Rcolor.md_black_1000(), Rcolor.md_black_1000()), +// ALPHA_BLACK(Rcolor.alpha_black(), Rcolor.alpha_black()), +// ALPHA_GREEN(Rcolor.alpha_green(), Rcolor.alpha_green()); + + @ColorRes + private int colorRes; + @ColorRes + private int darkColorRes; + + ThemeColor(@ColorRes int colorRes, @ColorRes int darkColorRes) { + this.colorRes = colorRes; + this.darkColorRes = darkColorRes; + } + + public @ColorRes + int getColorRes() { + return colorRes; + } + + public @ColorRes + int getDarkColorRes() { + return darkColorRes; + } + } + + public static Config config(Context context) { + return new Config(context); + } + + public static Defaults defaults() { + return new Defaults(); + } + + public static class Defaults { + private static ThemeColor primaryColor = ThemeColor.SHANG_HAI_PROJECT; + private static ThemeColor accentColor = ThemeColor.SHANG_HAI_PROJECT; + private static boolean trans = false; + private static boolean darkTheme = false; + + public Defaults primaryColor(ThemeColor primary) { + primaryColor = primary; + return this; + } + + public Defaults accentColor(ThemeColor accent) { + accentColor = accent; + return this; + } + + public Defaults translucent(boolean translucent) { + trans = translucent; + return this; + } + + public Defaults dark(boolean dark) { + darkTheme = dark; + return this; + } + } + + public static class Config { + private Context context; + + private Config(Context context) { + this.context = context; + } + + public Config primaryColor(ThemeColor primary) { + primaryColor = primary; + return this; + } + + public Config accentColor(ThemeColor accent) { + accentColor = accent; + return this; + } + + public Config translucent(boolean translucent) { + isTranslucent = translucent; + return this; + } + + public Config dark(boolean dark) { + isDark = dark; + return this; + } + + public void apply() { + writeValues(context); + themeString = generateThemeString(); + delegate = new ThemeDelegate(context, primaryColor, accentColor, isTranslucent, isDark); + } + } + +} diff --git a/colorful/src/main/java/org/polaric/colorful/ColorfulActivity.java b/colorful/src/main/java/org/polaric/colorful/ColorfulActivity.java new file mode 100644 index 0000000..bf47fd3 --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/ColorfulActivity.java @@ -0,0 +1,75 @@ +package org.polaric.colorful; + +import android.app.ActivityManager; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.view.WindowManager; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +public abstract class ColorfulActivity extends AppCompatActivity { + private String themeString; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + themeString = Colorful.getThemeString(); + setTheme(Colorful.getThemeDelegate().getStyleResBase()); +// getTheme().applyStyle(Colorful.getThemeDelegate().getStyleResPrimary(), true); +// getTheme().applyStyle(Colorful.getThemeDelegate().getStyleResAccent(), true); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + if (Colorful.getThemeDelegate().isTranslucent()) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + + ActivityManager.TaskDescription tDesc = new ActivityManager.TaskDescription(null, null, getResources().getColor(Colorful.getThemeDelegate().getPrimaryColor().getColorRes())); + setTaskDescription(tDesc); + } + } + + @Override + public void setContentView(View view) { + //判断view的背景色 + autoSwitchRootViewBgColor(view); + super.setContentView(view); + } + + @Override + protected void onResume() { + super.onResume(); + if (!Colorful.getThemeString().equals(themeString)) { + Log.d(Util.LOG_TAG, "Theme change detected, restarting activity"); + recreate(); + } + } + + public static void autoSwitchRootViewBgColor(View contentView) { + if (contentView == null) { + return; + } + //判断contentView是否设置了颜色,如果是,就跳过 + Drawable bg = contentView.getBackground(); + if (bg != null) { + if (bg instanceof ColorDrawable) { + ColorDrawable colorDrawable = (ColorDrawable) bg; + Log.d("___bg____", "color:" + colorDrawable.getColor()); + } else { + Log.d("___bg____", bg.toString()); + } + return; + } + int bgColor = useDarkTheme ? R.color.app_background_color_night : R.color.app_background_color_day; + contentView.setBackgroundColor(contentView.getContext().getResources().getColor(bgColor)); + } + + public static void onThemeChanged(boolean useDarkColor) { + useDarkTheme = useDarkColor; + } + + private static boolean useDarkTheme = false; +} diff --git a/colorful/src/main/java/org/polaric/colorful/ThemeDelegate.java b/colorful/src/main/java/org/polaric/colorful/ThemeDelegate.java new file mode 100644 index 0000000..294bc46 --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/ThemeDelegate.java @@ -0,0 +1,58 @@ +package org.polaric.colorful; + +import android.content.Context; +import android.util.Log; + +import androidx.annotation.StyleRes; + +import color.Rstyle; + +public class ThemeDelegate { + private Colorful.ThemeColor primaryColor; + private Colorful.ThemeColor accentColor; + private boolean translucent; + private boolean dark; + @StyleRes private int styleResPrimary; + @StyleRes private int styleResAccent; + @StyleRes private int styleResBase; + + ThemeDelegate(Context context, Colorful.ThemeColor primary, Colorful.ThemeColor accent, boolean translucent, boolean dark) { + this.primaryColor=primary; + this.accentColor=accent; + this.translucent=translucent; + this.dark=dark; + long curTime = System.currentTimeMillis(); +// styleResPrimary = context.getResources().getIdentifier("primary" + primary.ordinal(), "style", context.getPackageName()); +// styleResAccent = context.getResources().getIdentifier("accent" + accent.ordinal(), "style", context.getPackageName()); + styleResBase = dark ? Rstyle.Colorful_Dark() : Rstyle.Colorful_Light(); + Log.d(Util.LOG_TAG, "ThemeDelegate fetched theme in " + (System.currentTimeMillis()-curTime) + " milliseconds"); + } + + @StyleRes public int getStyleResPrimary() { + return styleResPrimary; + } + + @StyleRes public int getStyleResAccent() { + return styleResAccent; + } + + @StyleRes public int getStyleResBase() { + return styleResBase; + } + + public Colorful.ThemeColor getPrimaryColor() { + return primaryColor; + } + + public Colorful.ThemeColor getAccentColor() { + return accentColor; + } + + public boolean isTranslucent() { + return translucent; + } + + public boolean isDark() { + return dark; + } +} diff --git a/colorful/src/main/java/org/polaric/colorful/Util.java b/colorful/src/main/java/org/polaric/colorful/Util.java new file mode 100644 index 0000000..8bb3b4d --- /dev/null +++ b/colorful/src/main/java/org/polaric/colorful/Util.java @@ -0,0 +1,6 @@ +package org.polaric.colorful; + +class Util { + static final String LOG_TAG="Colorful"; + static final String PREFERENCE_KEY="COLORFUL_PREF_KEY"; +} diff --git a/colorful/src/main/res/drawable/ic_arrow_back_white_48px.xml b/colorful/src/main/res/drawable/ic_arrow_back_white_48px.xml new file mode 100644 index 0000000..41eb073 --- /dev/null +++ b/colorful/src/main/res/drawable/ic_arrow_back_white_48px.xml @@ -0,0 +1,4 @@ + + + diff --git a/colorful/src/main/res/layout/adapter_coloritem.xml b/colorful/src/main/res/layout/adapter_coloritem.xml new file mode 100644 index 0000000..a6041ae --- /dev/null +++ b/colorful/src/main/res/layout/adapter_coloritem.xml @@ -0,0 +1,8 @@ + + diff --git a/colorful/src/main/res/layout/dialog_colorpicker.xml b/colorful/src/main/res/layout/dialog_colorpicker.xml new file mode 100644 index 0000000..9595659 --- /dev/null +++ b/colorful/src/main/res/layout/dialog_colorpicker.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file diff --git a/colorful/src/main/res/layout/preference_colorpicker.xml b/colorful/src/main/res/layout/preference_colorpicker.xml new file mode 100644 index 0000000..84ae29a --- /dev/null +++ b/colorful/src/main/res/layout/preference_colorpicker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + \ No newline at end of file diff --git a/colorful/src/main/res/values/attrs.xml b/colorful/src/main/res/values/attrs.xml new file mode 100644 index 0000000..d61fd85 --- /dev/null +++ b/colorful/src/main/res/values/attrs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/colorful/src/main/res/values/colors.xml b/colorful/src/main/res/values/colors.xml new file mode 100644 index 0000000..e1cea37 --- /dev/null +++ b/colorful/src/main/res/values/colors.xml @@ -0,0 +1,311 @@ + + + + + + #2964DA + #2964DA + #EBEBEB + + + #FFEBEE + #FFCDD2 + #EF9A9A + #E57373 + #EF5350 + #F44336 + #E53935 + #D32F2F + #C62828 + #B71C1C + #FF8A80 + #FF5252 + #FF1744 + #D50000 + + + #FCE4EC + #F8BBD0 + #F48FB1 + #F06292 + #EC407A + #E91E63 + #D81B60 + #C2185B + #AD1457 + #880E4F + #FF80AB + #FF4081 + #F50057 + #C51162 + + + #F3E5F5 + #E1BEE7 + #CE93D8 + #BA68C8 + #AB47BC + #9C27B0 + #8E24AA + #7B1FA2 + #6A1B9A + #4A148C + #EA80FC + #E040FB + #D500F9 + #AA00FF + + + #EDE7F6 + #D1C4E9 + #B39DDB + #9575CD + #7E57C2 + #673AB7 + #5E35B1 + #512DA8 + #4527A0 + #311B92 + #B388FF + #7C4DFF + #651FFF + #6200EA + + + #E8EAF6 + #C5CAE9 + #9FA8DA + #7986CB + #5C6BC0 + #3F51B5 + #3949AB + #303F9F + #283593 + #1A237E + #8C9EFF + #536DFE + #3D5AFE + #304FFE + + + #E3F2FD + #BBDEFB + #90CAF9 + #64B5F6 + #42A5F5 + #2196F3 + #1E88E5 + #1976D2 + #1565C0 + #0D47A1 + #82B1FF + #448AFF + #2979FF + #2962FF + + + #E1F5FE + #B3E5FC + #81D4fA + #4fC3F7 + #29B6FC + #03A9F4 + #039BE5 + #0288D1 + #0277BD + #01579B + #80D8FF + #40C4FF + #00B0FF + #0091EA + + + #E0F7FA + #B2EBF2 + #80DEEA + #4DD0E1 + #26C6DA + #00BCD4 + #00ACC1 + #0097A7 + #00838F + #006064 + #84FFFF + #18FFFF + #00E5FF + #00B8D4 + + + #E0F2F1 + #B2DFDB + #80CBC4 + #4DB6AC + #26A69A + #009688 + #00897B + #00796B + #00695C + #004D40 + #A7FFEB + #64FFDA + #1DE9B6 + #00BFA5 + + + #E8F5E9 + #C8E6C9 + #A5D6A7 + #81C784 + #66BB6A + #4CAF50 + #43A047 + #388E3C + #2E7D32 + #1B5E20 + #B9F6CA + #69F0AE + #00E676 + #00C853 + + + #F1F8E9 + #DCEDC8 + #C5E1A5 + #AED581 + #9CCC65 + #8BC34A + #7CB342 + #689F38 + #558B2F + #33691E + #CCFF90 + #B2FF59 + #76FF03 + #64DD17 + + + #F9FBE7 + #F0F4C3 + #E6EE9C + #DCE775 + #D4E157 + #CDDC39 + #C0CA33 + #A4B42B + #9E9D24 + #827717 + #F4FF81 + #EEFF41 + #C6FF00 + #AEEA00 + + + #FFFDE7 + #FFF9C4 + #FFF590 + #FFF176 + #FFEE58 + #FFEB3B + #FDD835 + #FBC02D + #F9A825 + #F57F17 + #FFFF82 + #FFFF00 + #FFEA00 + #FFD600 + + + #FFF8E1 + #FFECB3 + #FFE082 + #FFD54F + #FFCA28 + #FFC107 + #FFB300 + #FFA000 + #FF8F00 + #FF6F00 + #FFE57F + #FFD740 + #FFC400 + #FFAB00 + + + #FFF3E0 + #FFE0B2 + #FFCC80 + #FFB74D + #FFA726 + #FF9800 + #FB8C00 + #F57C00 + #EF6C00 + #E65100 + #FFD180 + #FFAB40 + #FF9100 + #FF6D00 + + + #FBE9A7 + #FFCCBC + #FFAB91 + #FF8A65 + #FF7043 + #FF5722 + #F4511E + #E64A19 + #D84315 + #BF360C + #FF9E80 + #FF6E40 + #FF3D00 + #DD2600 + + + #EFEBE9 + #D7CCC8 + #BCAAA4 + #A1887F + #8D6E63 + #795548 + #6D4C41 + #5D4037 + #4E342E + #3E2723 + + + #FAFAFA + #F5F5F5 + #EEEEEE + #E0E0E0 + #BDBDBD + #9E9E9E + #757575 + #616161 + #424242 + #212121 + #000000 + #ffffff + + + #ECEFF1 + #CFD8DC + #B0BBC5 + #90A4AE + #78909C + #607D8B + #546E7A + #455A64 + #37474F + #263238 + + #008B9C + #333333 + #8cd25a + + #fafafa + #303030 + \ No newline at end of file diff --git a/colorful/src/main/res/values/strings.xml b/colorful/src/main/res/values/strings.xml new file mode 100644 index 0000000..d39ef57 --- /dev/null +++ b/colorful/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Select Color + diff --git a/colorful/src/main/res/values/styles.xml b/colorful/src/main/res/values/styles.xml new file mode 100644 index 0000000..b6db0b0 --- /dev/null +++ b/colorful/src/main/res/values/styles.xml @@ -0,0 +1,420 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings.gradle b/settings.gradle index e7b4def..d08b5bf 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,2 @@ include ':app' +include ':colorful'