diff --git a/app/build.gradle b/app/build.gradle index cc4d3df..7d67553 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -176,7 +176,10 @@ dependencies { implementation "com.github.zagum:Android-SwitchIcon:1.4.0"//必须的 implementation 'io.github.inflationx:calligraphy3:3.1.1' // implementation 'io.github.inflationx:viewpump:2.0.3' - implementation 'com.gyf.immersionbar:immersionbar:3.0.0-beta05' + // 沉浸状态栏:https://github.com/gyf-dev/ImmersionBar + implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2' // 基础依赖包,必须要依赖 + implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2' // kotlin扩展(可选) + implementation 'com.github.getActivity:ShapeView:9.2' implementation 'com.sherlockshi.widget:sherlockspinner:1.0.2' implementation 'com.zhy:flowlayout-lib:1.0.3' diff --git a/app/src/main/java/com/project/survey/extend/FloatExt.kt b/app/src/main/java/com/project/survey/extend/FloatExt.kt new file mode 100644 index 0000000..2218771 --- /dev/null +++ b/app/src/main/java/com/project/survey/extend/FloatExt.kt @@ -0,0 +1,19 @@ +package com.project.survey.extend + +import blankj.utilcode.util.ConvertUtils + +fun Float.dp2px(): Int { + return ConvertUtils.dp2px(this) +} + +fun Float.px2dp(): Int { + return ConvertUtils.px2dp(this) +} + +fun Float.sp2px(): Int { + return ConvertUtils.sp2px(this) +} + +fun Float.px2sp(): Int { + return ConvertUtils.px2sp(this) +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/extend/ToastExt.kt b/app/src/main/java/com/project/survey/extend/ToastExt.kt new file mode 100644 index 0000000..d596411 --- /dev/null +++ b/app/src/main/java/com/project/survey/extend/ToastExt.kt @@ -0,0 +1,12 @@ +package com.project.survey.extend + +import androidx.annotation.StringRes +import blankj.utilcode.util.ToastUtils + +fun toast(text: CharSequence?) { + ToastUtils.showShort(text) +} + +fun toast(@StringRes resId: Int) { + ToastUtils.showShort(resId) +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/extend/ViewExt.kt b/app/src/main/java/com/project/survey/extend/ViewExt.kt new file mode 100644 index 0000000..f7b947b --- /dev/null +++ b/app/src/main/java/com/project/survey/extend/ViewExt.kt @@ -0,0 +1,27 @@ +package com.project.survey.extend + +import android.view.View + + +/** + * 防止重复点击 + */ +var lastTime = 0L +fun View.setOnClickNoRepeatListener(interval: Long = 300, onClick: (View) -> Unit) { + setOnClickListener { + val currentTime = System.currentTimeMillis() + if (lastTime != 0L && (currentTime - lastTime < interval)) { + return@setOnClickListener + } + lastTime = currentTime + onClick(it) + } +} + +fun View.isVisibleOrInvisible(visible: Boolean){ + this.visibility = if (visible) View.VISIBLE else View.INVISIBLE +} + +fun View.isVisibleOrGone(visible: Boolean){ + this.visibility = if (visible) View.VISIBLE else View.GONE +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/BaseViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/BaseViewModel.kt new file mode 100644 index 0000000..5da15ab --- /dev/null +++ b/app/src/main/java/com/project/survey/logic/viewmodel/BaseViewModel.kt @@ -0,0 +1,26 @@ +package com.project.survey.logic.viewmodel + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +open class BaseViewModel : ViewModel() { + + val errorResponse = MutableLiveData() + + fun launch(block: suspend CoroutineScope.() -> Unit) { + viewModelScope.launch { + withContext(Dispatchers.IO) { + try { + block() + } catch (e: Exception) { + errorResponse.postValue(e.message) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt new file mode 100644 index 0000000..00414f3 --- /dev/null +++ b/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt @@ -0,0 +1,14 @@ +package com.project.survey.logic.viewmodel + +import com.project.survey.network.RetrofitClient + +class LoginViewModel : BaseViewModel(){ + + val api = RetrofitClient.createApiService() + + fun test(){ + launch { + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/network/Api.kt b/app/src/main/java/com/project/survey/network/Api.kt new file mode 100644 index 0000000..2ec4943 --- /dev/null +++ b/app/src/main/java/com/project/survey/network/Api.kt @@ -0,0 +1,4 @@ +package com.project.survey.network + +interface Api { +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/network/RetrofitClient.kt b/app/src/main/java/com/project/survey/network/RetrofitClient.kt new file mode 100644 index 0000000..81e0102 --- /dev/null +++ b/app/src/main/java/com/project/survey/network/RetrofitClient.kt @@ -0,0 +1,59 @@ +package com.project.survey.network + +import com.bingce.http.HttpsTrustUtil +import com.project.survey.BuildConfig +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory +import retrofit2.converter.gson.GsonConverterFactory +import java.util.concurrent.TimeUnit + +object RetrofitClient { + + fun createApiService(): Api { + return createService() + } + + inline fun createService(): T { + return createRetrofit().create(T::class.java) + } + + + fun createRetrofit(): Retrofit { + return Retrofit.Builder() + .baseUrl("") + .client(createOkHttpClient()) + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) //retrofit默认支持Call返回类型,改为支持Observable返回类型 + .build() + } + + private fun createOkHttpClient(): OkHttpClient { + return OkHttpClient.Builder() + .connectTimeout(60L, TimeUnit.SECONDS) + .readTimeout(60L, TimeUnit.SECONDS) + .writeTimeout(60L, TimeUnit.SECONDS) + .addInterceptor { chain -> + val originalRequest = chain.request() + val updateRequest = originalRequest.newBuilder() + .header("Content-Type", "application/json;charset=UTF-8") + .header("User-Agent", "ANDROID") + .header("System-Type", "APP_TOKEN") + .build() + return@addInterceptor chain.proceed(updateRequest) + } + .addInterceptor(HttpLoggingInterceptor().apply { + level = if (BuildConfig.DEBUG) + HttpLoggingInterceptor.Level.BODY + else + HttpLoggingInterceptor.Level.NONE + }) + .sslSocketFactory( + HttpsTrustUtil.createSSLSocketFactory(), + HttpsTrustUtil.TrustAllManager() + ) + .hostnameVerifier(HttpsTrustUtil.TrustAllHostnameVerifier()) + .build() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/MainActivity.kt b/app/src/main/java/com/project/survey/ui/MainActivity.kt index f4071e0..cb26b05 100644 --- a/app/src/main/java/com/project/survey/ui/MainActivity.kt +++ b/app/src/main/java/com/project/survey/ui/MainActivity.kt @@ -1,7 +1,6 @@ package com.project.survey.ui import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter import androidx.viewpager.widget.ViewPager import blankj.utilcode.util.AppUtils @@ -10,7 +9,6 @@ import com.bingce.ui.TabEntity import com.bingce.utils.AppUtil import com.bingce.utils.RegisterUtil import com.bingce.utils.SdkUtils -import com.flyco.tablayout.listener.CustomTabEntity import com.flyco.tablayout.listener.OnTabSelectListener import com.project.survey.R import com.project.survey.databinding.ActivityMainBinding @@ -18,16 +16,21 @@ import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.ui.home.HomeFragment import com.project.survey.ui.home.InstrumentFragment import com.project.survey.ui.home.MeFragment +import com.project.survey.util.ActivityNavUtil - +/** + * 主页 + */ class MainActivity : BaseBindingActivity() { - private val mFragments = mutableListOf() - - override fun getBinding(): ActivityMainBinding { - return ActivityMainBinding.inflate(layoutInflater) + companion object { + fun start() { + ActivityNavUtil.startActivity {} + } } + override fun getBinding(): ActivityMainBinding = ActivityMainBinding.inflate(layoutInflater) + override fun initView() { verifySdk() initTabFragment() @@ -49,35 +52,33 @@ class MainActivity : BaseBindingActivity() { ) } + override fun initData() { + } + private fun initTabFragment() { //设置tab - val mTabEntities = ArrayList() - mTabEntities.add( - TabEntity( - "首页", - R.mipmap.icon_home_selected, - R.mipmap.icon_home_selected_not - ) - ) - mTabEntities.add( - TabEntity( - "仪器", - R.mipmap.icon_instrument_selected, - R.mipmap.icon_instrument_selected_not + mBinding.tabLayout.setTabData( + arrayListOf( + TabEntity( + getString(R.string.tab_home_page), + R.drawable.icon_home_selected, + R.drawable.icon_home_unselected + ), + TabEntity( + getString(R.string.tab_instrument), + R.drawable.icon_instrument_selected, + R.drawable.icon_instrument_unselected + ), + TabEntity( + getString(R.string.tab_mine), + R.drawable.icon_me_selected, + R.drawable.icon_me_unselected + ) ) ) - mTabEntities.add( - TabEntity( - "我的", - R.mipmap.icon_me_selected, - R.mipmap.icon_me_selected_not - ) - ) - mBinding.tabLayout.setTabData(mTabEntities) - mBinding.tabLayout.setOnTabSelectListener(object : OnTabSelectListener { override fun onTabSelect(position: Int) { - mBinding.vp.setCurrentItem(position) + mBinding.vp.currentItem = position } override fun onTabReselect(position: Int) { @@ -85,10 +86,17 @@ class MainActivity : BaseBindingActivity() { }) //设置viewPager - mFragments.add(HomeFragment()) - mFragments.add(InstrumentFragment()) - mFragments.add(MeFragment()) - mBinding.vp.adapter = MyPagerAdapter(supportFragmentManager) + val fragments = arrayListOf( + HomeFragment(), + InstrumentFragment(), + MeFragment() + ) + mBinding.vp.adapter = object : FragmentPagerAdapter(supportFragmentManager) { + override fun getCount(): Int = fragments.size + + override fun getItem(position: Int): Fragment = fragments[position] + + } mBinding.vp.offscreenPageLimit = 3 mBinding.vp.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( @@ -108,20 +116,5 @@ class MainActivity : BaseBindingActivity() { }) } - override fun initData() { - } - - private inner class MyPagerAdapter : FragmentPagerAdapter { - constructor(fm: FragmentManager) : super(fm) - - constructor(fm: FragmentManager, behavior: Int) : super(fm, behavior) - - override fun getItem(position: Int): Fragment { - return mFragments[position] - } - override fun getCount(): Int { - return mFragments.size - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/SplashActivity.kt b/app/src/main/java/com/project/survey/ui/SplashActivity.kt index 22b90aa..7fd55e0 100644 --- a/app/src/main/java/com/project/survey/ui/SplashActivity.kt +++ b/app/src/main/java/com/project/survey/ui/SplashActivity.kt @@ -1,6 +1,5 @@ package com.project.survey.ui -import android.content.Intent import com.project.survey.databinding.ActivitySplashBinding import com.project.survey.ui.base.BaseBindingActivity @@ -9,12 +8,10 @@ import com.project.survey.ui.base.BaseBindingActivity */ class SplashActivity : BaseBindingActivity() { - override fun getBinding(): ActivitySplashBinding { - return ActivitySplashBinding.inflate(layoutInflater) - } + override fun getBinding(): ActivitySplashBinding = ActivitySplashBinding.inflate(layoutInflater) override fun initView() { - startActivity(Intent(this, MainActivity::class.java)) + MainActivity.start() finish() } diff --git a/app/src/main/java/com/project/survey/ui/base/BaseBindingActivity.kt b/app/src/main/java/com/project/survey/ui/base/BaseBindingActivity.kt index 974bce1..b41ac9f 100644 --- a/app/src/main/java/com/project/survey/ui/base/BaseBindingActivity.kt +++ b/app/src/main/java/com/project/survey/ui/base/BaseBindingActivity.kt @@ -8,16 +8,22 @@ import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.widget.Toolbar +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData import androidx.viewbinding.ViewBinding import blankj.utilcode.util.Utils import com.project.survey.App import com.project.survey.R +import com.project.survey.ui.interfacee.ImmersionAction import com.project.survey.util.Tools +import com.project.survey.util.param.ParamUtil import org.polaric.colorful.Colorful abstract class BaseBindingActivity : AppCompatActivity() { - protected val mBinding get() = _binding!! - private var _binding: VB? = null + + private lateinit var _binding: VB + protected val mBinding: VB + get() = _binding private var toolBar: Toolbar? = null @@ -27,9 +33,11 @@ abstract class BaseBindingActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(getContentView()) - //设置背景色 - mBinding.root.setBackgroundColor(Tools.getColor(R.color.bg_content)) + ParamUtil.initParam(this) + _binding = getBinding() + setContentView(mBinding.root) +// //设置背景色 +// mBinding.root.setBackgroundColor(Tools.getColor(R.color.bg_content)) initToolBar() initView() @@ -50,23 +58,6 @@ abstract class BaseBindingActivity : AppCompatActivity() { window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } - private fun getContentView(): View { -// val baseBinding = ActivityBaseBindingBinding.inflate(layoutInflater) -// val layoutParams = LinearLayout.LayoutParams( -// ViewGroup.LayoutParams.MATCH_PARENT, -// ViewGroup.LayoutParams.MATCH_PARENT -// ) - _binding = getBinding() -// baseBinding.llParent.addView(mBinding.root, layoutParams) -// baseBinding.llParent.setBackgroundColor( -// ContextCompat.getColor( -// this, -// R.color.bg_content_new -// ) -// ) - return mBinding.root - } - protected open fun initToolBar() { toolBar = findViewById(R.id.toolbar) setSupportActionBar(toolBar) diff --git a/app/src/main/java/com/project/survey/ui/base/BaseBindingFragment.kt b/app/src/main/java/com/project/survey/ui/base/BaseBindingFragment.kt new file mode 100644 index 0000000..1bcfaaa --- /dev/null +++ b/app/src/main/java/com/project/survey/ui/base/BaseBindingFragment.kt @@ -0,0 +1,43 @@ +package com.project.survey.ui.base + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.viewbinding.ViewBinding +import com.project.survey.util.param.ParamUtil + +abstract class BaseBindingFragment : Fragment() { + + private lateinit var _binding: VB + protected val binding: VB + get() = _binding + + abstract fun getBinding(inflater: LayoutInflater, container: ViewGroup?): VB + abstract fun initView() + abstract fun initData() + abstract fun initListener() + + override fun onAttach(context: Context) { + super.onAttach(context) + ParamUtil.initParam(this) + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = getBinding(inflater, container) + return _binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initView() + initListener() + initData() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/base/BaseFragmentBinding.java b/app/src/main/java/com/project/survey/ui/base/BaseFragmentBinding.java index 1380b3b..768b6f7 100644 --- a/app/src/main/java/com/project/survey/ui/base/BaseFragmentBinding.java +++ b/app/src/main/java/com/project/survey/ui/base/BaseFragmentBinding.java @@ -1,5 +1,6 @@ package com.project.survey.ui.base; +import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -14,6 +15,11 @@ import androidx.viewbinding.ViewBinding; public abstract class BaseFragmentBinding extends Fragment { protected VB mBinding; + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + } + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { diff --git a/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt b/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt index a8ad65f..224a5a8 100644 --- a/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt @@ -3,47 +3,54 @@ package com.project.survey.ui.home import android.view.LayoutInflater import android.view.ViewGroup import com.project.survey.databinding.FragmentHomeBinding +import com.project.survey.extend.setOnClickNoRepeatListener import com.project.survey.ui.approval.ApprovalActivity -import com.project.survey.ui.base.BaseFragmentBinding +import com.project.survey.ui.base.BaseBindingFragment import com.project.survey.ui.controlnet.ControlNetFirstListActivity import com.project.survey.ui.controlnet.ControlNetSpeciaListActivity import com.project.survey.ui.lofting.LoftingListActivity import com.project.survey.ui.pointmeasure.PointMeasureListActivity -class HomeFragment : BaseFragmentBinding() { - override fun getViewBinding( - inflater: LayoutInflater, - container: ViewGroup? - ): FragmentHomeBinding { +/** + * 首页 + */ +class HomeFragment : BaseBindingFragment() { + + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentHomeBinding { return FragmentHomeBinding.inflate(inflater, container, false) } override fun initView() { - mBinding.tvPointMeasure.setOnClickListener { - //点测量 + binding.tvProject.text = "哈哈哈哈哈" + } + + override fun initData() { + binding.itemToBeProcessed.setBadge(4) + } + + override fun initListener() { + //点测量 + binding.itemPointMeasure.setOnClickNoRepeatListener { PointMeasureListActivity.launch(requireContext()) } - mBinding.tvLofting.setOnClickListener { - //放样 + //放样 + binding.itemLofting.setOnClickNoRepeatListener { LoftingListActivity.launch(requireContext()) } - mBinding.rlApprovalWait.setOnClickListener { + binding.itemToBeProcessed.setOnClickNoRepeatListener { ApprovalActivity.launch(requireContext(), ApprovalActivity.TYPE_WAIT) } - mBinding.tvApprovalProcessed.setOnClickListener { + binding.itemProcessed.setOnClickNoRepeatListener { ApprovalActivity.launch(requireContext(), ApprovalActivity.TYPE_PROCESSED) } - mBinding.tvApprovalInitated.setOnClickListener { + binding.itemInitiated.setOnClickNoRepeatListener { ApprovalActivity.launch(requireContext(), ApprovalActivity.TYPE_INITIATED) } - mBinding.tvControlNetFirst.setOnClickListener { + binding.itemControlNetFirst.setOnClickNoRepeatListener { ControlNetFirstListActivity.launch(requireContext()) } - mBinding.tvControlNetSpecial.setOnClickListener { + binding.itemControlNetSpecial.setOnClickNoRepeatListener { ControlNetSpeciaListActivity.launch(requireContext()) } } - - override fun initData() { - } } \ No newline at end of file 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 70b81c9..fe08959 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 @@ -4,8 +4,6 @@ import android.content.Intent import android.view.LayoutInflater import android.view.ViewGroup import blankj.utilcode.util.AppUtils -import blankj.utilcode.util.ToastUtils -import blankj.utilcode.util.Utils import com.bingce.device.Device import com.bingce.device.enums.ConnectTypeEnum import com.bingce.device.enums.DeviceTypeEnum @@ -15,16 +13,23 @@ import com.bingce.rtk.command.RTK import com.bingce.rtk.config.GnssConfigManager import com.project.survey.R import com.project.survey.databinding.FragmentInstrumentBinding -import com.project.survey.ui.base.BaseFragmentBinding +import com.project.survey.extend.setOnClickNoRepeatListener +import com.project.survey.extend.toast +import com.project.survey.ui.base.BaseBindingFragment import com.project.survey.ui.instrument.basestationtranslation.RtkBaseCorrectActivity import com.project.survey.ui.instrument.coordinatesystem.BingCeCoordinateSystemActivity import com.project.survey.ui.instrument.mobilestationmode.GnssConfigSetActivity import com.project.survey.ui.instrument.mobilestationmode.base.RtkPointCorrectActivity import com.project.survey.ui.instrument.satellitosis.SatelliteStatusActivity import com.project.survey.ui.instrument.setupstation.InstrumentSetFragmentSetupStationTypeUtils +import com.project.survey.util.ActivityNavUtil -class InstrumentFragment : BaseFragmentBinding() { - override fun getViewBinding( +/** + * 仪器 + */ +class InstrumentFragment : BaseBindingFragment() { + + override fun getBinding( inflater: LayoutInflater, container: ViewGroup? ): FragmentInstrumentBinding { @@ -32,24 +37,32 @@ class InstrumentFragment : BaseFragmentBinding() { } override fun initView() { - mBinding.tvConnectTSActivity.setOnClickListener { - //全站仪联机 + + } + + override fun initData() { + binding.tvProject.text = "哈哈哈哈哈" + } + + override fun initListener() { + //全站仪联机 + binding.itemConnectTotalStation.setOnClickNoRepeatListener { ConnectTSActivity.start(requireContext()) } - mBinding.tvConnectRtkActivity.setOnClickListener { - //RTK联机 + //RTK联机 + binding.itemConnectRTK.setOnClickNoRepeatListener { ConnectRtkActivity.start(this) } - mBinding.tvSatelliteStatusActivity.setOnClickListener { - //卫星状态 - startActivity(Intent(requireContext(), SatelliteStatusActivity::class.java)) + //卫星状态 + binding.itemSatelliteStatus.setOnClickNoRepeatListener { + ActivityNavUtil.startActivity { } } - mBinding.tvTotalStationSetupStation.setOnClickListener { - //全站仪设站 + //全站仪设站 + binding.itemTotalStationSetupStation.setOnClickListener { InstrumentSetFragmentSetupStationTypeUtils.chooseSetupStationType(this) } - mBinding.tvMobileStationMode.setOnClickListener { - //移动站模式 + //移动站模式 + binding.itemMobileStationMode.setOnClickListener { if (Device.getInstance().isDeviceConnected || AppUtils.isAppDebug()) { if (RTK.getInstance().isSupportRoverSetting) { GnssConfigManager.reset() //重置配置,防止未退出重新连接其他品牌型号导致配置集未改变的问题 @@ -57,14 +70,14 @@ class InstrumentFragment : BaseFragmentBinding() { roverIntent.putExtra("sysMode", 0) startActivity(roverIntent) } else { - ToastUtils.showShort(R.string.device_not_support_this_mode) + toast(R.string.device_not_support_this_mode) } } else { - ToastUtils.showShort(R.string.rtk_not_connected) + toast(R.string.rtk_not_connected) } } - mBinding.tvBaseStationMode.setOnClickListener { - //基准站模式 + //基准站模式 + binding.itemBaseStationMode.setOnClickListener { if (Device.getInstance().isDeviceConnected || AppUtils.isAppDebug()) { if (RTK.getInstance().isSupportBaseSetting) { GnssConfigManager.reset() //重置配置,防止未退出重新连接其他品牌型号导致配置集未改变的问题 @@ -72,50 +85,41 @@ class InstrumentFragment : BaseFragmentBinding() { baseIntent.putExtra("sysMode", 1) startActivity(baseIntent) } else { - ToastUtils.showShort(R.string.device_not_support_this_mode) + toast(R.string.device_not_support_this_mode) } } else { - ToastUtils.showShort(R.string.rtk_not_connected) + toast(R.string.rtk_not_connected) } } - mBinding.tvBaseStationTranslation.setOnClickListener { - //基站平移 + //基站平移 + binding.itemBaseStationTranslation.setOnClickListener { startBaseStationTranslation() } - mBinding.tvCoordinateSystem.setOnClickListener { - //坐标系统 + //坐标系统 + binding.itemCoordinateSystem.setOnClickListener { BingCeCoordinateSystemActivity.viewAndModifyCurrentCoordinateSystem(requireContext()) } - mBinding.tvPointCorrection.setOnClickListener { - //点校正 - startActivity(Intent(Utils.getApp(), RtkPointCorrectActivity::class.java)) + //点校正 + binding.itemPointCorrection.setOnClickListener { + ActivityNavUtil.startActivity { } } - - } private fun startBaseStationTranslation() { if (!AppUtils.isAppDebug()) { if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_TS) { - ToastUtils.showShort(R.string.please_choose_rtk_instrument) + toast(R.string.please_choose_rtk_instrument) return } if (Device.getInstance().connectType == ConnectTypeEnum.CONNECT_TYPE_PHONE_LOCATION) { - ToastUtils.showShort(R.string.rtk_native_unnecessary) + toast(R.string.rtk_native_unnecessary) return } if (!Device.getInstance().isDeviceConnected) { - ToastUtils.showShort(R.string.please_connect_bluetooth) + toast(R.string.please_connect_bluetooth) return } } - val intent504 = Intent( - Utils.getApp(), - RtkBaseCorrectActivity::class.java - ) - startActivity(intent504) - } - - override fun initData() { + ActivityNavUtil.startActivity { } } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/home/MeFragment.kt b/app/src/main/java/com/project/survey/ui/home/MeFragment.kt index e341f19..0f83490 100644 --- a/app/src/main/java/com/project/survey/ui/home/MeFragment.kt +++ b/app/src/main/java/com/project/survey/ui/home/MeFragment.kt @@ -1,33 +1,34 @@ package com.project.survey.ui.home -import android.content.Intent import android.view.LayoutInflater import android.view.ViewGroup import com.project.survey.databinding.FragmentMeBinding -import com.project.survey.ui.base.BaseFragmentBinding +import com.project.survey.extend.setOnClickNoRepeatListener +import com.project.survey.ui.base.BaseBindingFragment import com.project.survey.ui.login.LoginActivity import com.project.survey.ui.project.ProjectListActivity -class MeFragment : BaseFragmentBinding() { - override fun getViewBinding( - inflater: LayoutInflater, - container: ViewGroup? - ): FragmentMeBinding { +/** + * 我的 + */ +class MeFragment : BaseBindingFragment() { + + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentMeBinding { return FragmentMeBinding.inflate(inflater, container, false) } override fun initView() { - - mBinding.llLogin.setOnClickListener { - startActivity(Intent(context, LoginActivity::class.java)) - } - - mBinding.llSwitchProject.setOnClickListener { - startActivity(Intent(requireContext(), ProjectListActivity::class.java)) - } - } override fun initData() { } + + override fun initListener() { + binding.llLogin.setOnClickNoRepeatListener { + LoginActivity.start() + } + binding.llSwitchProject.setOnClickNoRepeatListener { + ProjectListActivity.start() + } + } } \ No newline at end of file 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 3310b35..902c20d 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,7 +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); +// 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/interfacee/ImmersionAction.kt b/app/src/main/java/com/project/survey/ui/interfacee/ImmersionAction.kt new file mode 100644 index 0000000..b57a78d --- /dev/null +++ b/app/src/main/java/com/project/survey/ui/interfacee/ImmersionAction.kt @@ -0,0 +1,6 @@ +package com.project.survey.ui.interfacee + +interface ImmersionAction { + + fun immersion() +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/login/LoginActivity.kt b/app/src/main/java/com/project/survey/ui/login/LoginActivity.kt index df9e7b2..576be9c 100644 --- a/app/src/main/java/com/project/survey/ui/login/LoginActivity.kt +++ b/app/src/main/java/com/project/survey/ui/login/LoginActivity.kt @@ -2,20 +2,28 @@ package com.project.survey.ui.login import android.content.Intent import android.view.View +import com.gyf.immersionbar.ImmersionBar import com.project.survey.R import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.databinding.ActivityLoginBinding +import com.project.survey.util.ActivityNavUtil import com.project.survey.util.Tools class LoginActivity : BaseBindingActivity() { - private var isOutLogin = false//默认集团登录 - - override fun getBinding(): ActivityLoginBinding { - return ActivityLoginBinding.inflate(layoutInflater) + companion object{ + fun start(){ + ActivityNavUtil.startActivity { } + } } + override fun getBinding(): ActivityLoginBinding = ActivityLoginBinding.inflate(layoutInflater) + + private var isOutLogin = false//默认集团登录 + override fun initView() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + mBinding.tvShowOutLogin.setOnClickListener { //切换到外部登录 isOutLogin = true @@ -47,7 +55,6 @@ class LoginActivity : BaseBindingActivity() { * 内部登录 */ private fun loginByInner() { - startActivity(Intent(this, LoginInputCodeActivity::class.java)) } @@ -83,4 +90,7 @@ class LoginActivity : BaseBindingActivity() { } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt index c9f393e..73a35ba 100644 --- a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt +++ b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt @@ -6,6 +6,7 @@ import com.flyco.tablayout.listener.CustomTabEntity import com.project.survey.R import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.databinding.ActivityProjectListBinding +import com.project.survey.util.ActivityNavUtil class ProjectListActivity : BaseBindingActivity() { override fun getBinding(): ActivityProjectListBinding { @@ -42,4 +43,9 @@ class ProjectListActivity : BaseBindingActivity() { override fun initData() { } + companion object { + fun start(){ + ActivityNavUtil.startActivity { } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/util/ActivityNavUtil.kt b/app/src/main/java/com/project/survey/util/ActivityNavUtil.kt new file mode 100644 index 0000000..2dc5d63 --- /dev/null +++ b/app/src/main/java/com/project/survey/util/ActivityNavUtil.kt @@ -0,0 +1,13 @@ +package com.project.survey.util + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import blankj.utilcode.util.ActivityUtils + +object ActivityNavUtil { + + inline fun startActivity(block: Bundle.() -> Unit) { + ActivityUtils.startActivity(Bundle().apply(block), T::class.java) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/util/param/Param.java b/app/src/main/java/com/project/survey/util/param/Param.java new file mode 100644 index 0000000..a75dad3 --- /dev/null +++ b/app/src/main/java/com/project/survey/util/param/Param.java @@ -0,0 +1,15 @@ +package com.project.survey.util.param; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * des 参数解析注解 + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Param { + String value() default ""; +} diff --git a/app/src/main/java/com/project/survey/util/param/ParamUtil.kt b/app/src/main/java/com/project/survey/util/param/ParamUtil.kt new file mode 100644 index 0000000..efd7cf5 --- /dev/null +++ b/app/src/main/java/com/project/survey/util/param/ParamUtil.kt @@ -0,0 +1,82 @@ +package com.project.survey.util.param + +import android.app.Activity +import android.os.Bundle +import android.text.TextUtils +import androidx.fragment.app.Fragment + +/** + * 页面跳转传参 注解+反射获取页面入参 + */ +object ParamUtil { + /** + * Fragment + */ + fun initParam(fragment: Fragment) { + val javaClass = fragment.javaClass + fragment.arguments?.apply { + setParam(fragment, this) + } + } + + /** + * Activity + */ + fun initParam(activity: Activity) { + activity.intent.extras?.apply { + setParam(activity, this) + } + } + + private fun setParam(obj: Any, intent: Bundle) { + val javaClass = obj.javaClass + val fields = javaClass.declaredFields + for (item in fields) { + if (item.isAnnotationPresent(Param::class.java)) { + item.getAnnotation(Param::class.java)?.let { + val key: String = if (TextUtils.isEmpty(it.value)) item.name else it.value + if (intent.containsKey(key)) { + val type = item.type + when (type) { + Boolean::class.javaPrimitiveType -> { + intent.getBoolean(key, false) + } + Int::class.javaPrimitiveType -> { + intent.getInt(key, 0) + } + Long::class.javaPrimitiveType -> { + intent.getLong(key, 0L) + } + String::class.java -> { + intent.getString(key) + } + Double::class.javaPrimitiveType -> { + intent.getDouble(key, 0.0) + } + Byte::class.javaPrimitiveType -> { + intent.getByte(key, "".toByte()) + } + Char::class.javaPrimitiveType -> { + intent.getChar(key, '\u0000') + } + Float::class.javaPrimitiveType -> { + intent.getFloat(key, 0f) + } + else -> { + intent.getParcelable(key) + } + }?.apply { + item.isAccessible = true + try { + item[obj] = this + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + item.isAccessible = false + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/widget/SectionItemWidget.kt b/app/src/main/java/com/project/survey/widget/SectionItemWidget.kt new file mode 100644 index 0000000..852c577 --- /dev/null +++ b/app/src/main/java/com/project/survey/widget/SectionItemWidget.kt @@ -0,0 +1,38 @@ +package com.project.survey.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.appcompat.widget.LinearLayoutCompat +import com.project.survey.R +import com.project.survey.databinding.WidgetSectionItemBinding +import com.project.survey.extend.isVisibleOrGone + +class SectionItemWidget @JvmOverloads constructor( + context: Context, + val attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayoutCompat(context, attrs, defStyleAttr) { + + private val binding: WidgetSectionItemBinding + + init { + binding = WidgetSectionItemBinding.inflate(LayoutInflater.from(context), this, true) + val typeArray = context.obtainStyledAttributes(attrs, R.styleable.SectionItemWidget) + + val icon = typeArray.getResourceId(R.styleable.SectionItemWidget_siw_icon, -1) + binding.ivIcon.setImageResource(icon) + + binding.tvName.text = typeArray.getString(R.styleable.SectionItemWidget_siw_name) + + typeArray.recycle() + } + + /** + * 设置未读数 + */ + fun setBadge(count: Int): SectionItemWidget = apply { + binding.tvBadge.isVisibleOrGone(count > 0) + binding.tvBadge.text = "$count" + } +} \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/icon_home_selected.png b/app/src/main/res/drawable-xhdpi/icon_home_selected.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/icon_home_selected.png rename to app/src/main/res/drawable-xhdpi/icon_home_selected.png diff --git a/app/src/main/res/mipmap-xxhdpi/icon_home_selected_not.png b/app/src/main/res/drawable-xhdpi/icon_home_unselected.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/icon_home_selected_not.png rename to app/src/main/res/drawable-xhdpi/icon_home_unselected.png diff --git a/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected.png b/app/src/main/res/drawable-xhdpi/icon_instrument_selected.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/icon_instrument_selected.png rename to app/src/main/res/drawable-xhdpi/icon_instrument_selected.png diff --git a/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected_not.png b/app/src/main/res/drawable-xhdpi/icon_instrument_unselected.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/icon_instrument_selected_not.png rename to app/src/main/res/drawable-xhdpi/icon_instrument_unselected.png diff --git a/app/src/main/res/mipmap-xxhdpi/icon_me_selected.png b/app/src/main/res/drawable-xhdpi/icon_me_selected.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/icon_me_selected.png rename to app/src/main/res/drawable-xhdpi/icon_me_selected.png diff --git a/app/src/main/res/mipmap-xxhdpi/icon_me_selected_not.png b/app/src/main/res/drawable-xhdpi/icon_me_unselected.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/icon_me_selected_not.png rename to app/src/main/res/drawable-xhdpi/icon_me_unselected.png diff --git a/app/src/main/res/drawable/bg_badge.xml b/app/src/main/res/drawable/bg_badge.xml new file mode 100644 index 0000000..7cfb7a1 --- /dev/null +++ b/app/src/main/res/drawable/bg_badge.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_section_r_8.xml b/app/src/main/res/drawable/bg_section_r_8.xml new file mode 100644 index 0000000..79a07a8 --- /dev/null +++ b/app/src/main/res/drawable/bg_section_r_8.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_section_r_8_top.xml b/app/src/main/res/drawable/bg_section_r_8_top.xml new file mode 100644 index 0000000..f723d96 --- /dev/null +++ b/app/src/main/res/drawable/bg_section_r_8_top.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dedicated_control_network.xml b/app/src/main/res/drawable/icon_dedicated_control_network.xml similarity index 100% rename from app/src/main/res/drawable/dedicated_control_network.xml rename to app/src/main/res/drawable/icon_dedicated_control_network.xml diff --git a/app/src/main/res/drawable/head_control_network.xml b/app/src/main/res/drawable/icon_head_control_network.xml similarity index 100% rename from app/src/main/res/drawable/head_control_network.xml rename to app/src/main/res/drawable/icon_head_control_network.xml diff --git a/app/src/main/res/drawable/initiated.xml b/app/src/main/res/drawable/icon_initiated.xml similarity index 100% rename from app/src/main/res/drawable/initiated.xml rename to app/src/main/res/drawable/icon_initiated.xml diff --git a/app/src/main/res/drawable/stakeout.xml b/app/src/main/res/drawable/icon_lofting.xml similarity index 100% rename from app/src/main/res/drawable/stakeout.xml rename to app/src/main/res/drawable/icon_lofting.xml diff --git a/app/src/main/res/drawable/ic_point_measurement.xml b/app/src/main/res/drawable/icon_point_measurement.xml similarity index 100% rename from app/src/main/res/drawable/ic_point_measurement.xml rename to app/src/main/res/drawable/icon_point_measurement.xml diff --git a/app/src/main/res/drawable/processed.xml b/app/src/main/res/drawable/icon_processed.xml similarity index 100% rename from app/src/main/res/drawable/processed.xml rename to app/src/main/res/drawable/icon_processed.xml diff --git a/app/src/main/res/drawable/icon_to_be_processed.xml b/app/src/main/res/drawable/icon_to_be_processed.xml new file mode 100644 index 0000000..da1ac72 --- /dev/null +++ b/app/src/main/res/drawable/icon_to_be_processed.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/img_login_top.xml b/app/src/main/res/drawable/img_login_top.xml new file mode 100644 index 0000000..3afc395 --- /dev/null +++ b/app/src/main/res/drawable/img_login_top.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index bbfe580..885f7c1 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -3,27 +3,14 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:focusable="true" - android:focusableInTouchMode="true" android:orientation="vertical" - android:paddingHorizontal="@dimen/sw_22dp"> + android:paddingHorizontal="@dimen/margin_side"> - - - + android:layout_marginTop="100dp" + android:src="@drawable/img_login_top" /> + tl:tl_underline_height="0.5dp" /> diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 25a2088..8b3fd71 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,230 +1,195 @@ + app:layout_constraintTop_toTopOf="parent" + tools:text="某工程" /> - - - + + - - - - - - - - - - + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/layoutFirst"> - - + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + app:layout_constraintTop_toBottomOf="@+id/layoutSecond"> - - + + + + - - - - - - - - + app:layout_constraintEnd_toStartOf="@id/viewSpacer3" + app:layout_constraintHorizontal_weight="1" + app:layout_constraintStart_toEndOf="@id/itemControlNetFirst" + app:layout_constraintTop_toTopOf="@id/itemControlNetFirst" + app:siw_icon="@drawable/icon_dedicated_control_network" + app:siw_name="@string/dedicated_control_network" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_instrument.xml b/app/src/main/res/layout/fragment_instrument.xml index 39c2850..50821eb 100644 --- a/app/src/main/res/layout/fragment_instrument.xml +++ b/app/src/main/res/layout/fragment_instrument.xml @@ -1,209 +1,174 @@ + app:layout_constraintTop_toTopOf="parent" + tools:text="某工程" /> - - - + + + + + + - - - - - - - - - - - - + + + + app:layout_constraintTop_toBottomOf="@+id/layoutFirst"> - - + + + + + + + + + + - - - - - - - - - - + + - - - - - - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_weight="1" + app:layout_constraintStart_toEndOf="@id/itemCoordinateSystem" + app:layout_constraintTop_toTopOf="@id/itemBaseStationTranslation" + app:siw_icon="@drawable/point_correction" + app:siw_name="@string/point_correction" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/widget_section_item.xml b/app/src/main/res/layout/widget_section_item.xml new file mode 100644 index 0000000..00662c7 --- /dev/null +++ b/app/src/main/res/layout/widget_section_item.xml @@ -0,0 +1,44 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/app/src/main/res/mipmap-anydpi/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 324e72c..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values/attr.xml b/app/src/main/res/values/attr.xml index 31a94cd..5b0a918 100644 --- a/app/src/main/res/values/attr.xml +++ b/app/src/main/res/values/attr.xml @@ -28,4 +28,9 @@ true + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/color.xml b/app/src/main/res/values/color.xml index f9e1047..04c52f4 100644 --- a/app/src/main/res/values/color.xml +++ b/app/src/main/res/values/color.xml @@ -17,5 +17,13 @@ #10000000 #e5e5e5 + #396BD0 + #5B5A5E + #333333 + #FFFFFF + #F9FAFB + #FFFFFF + #EBEBEB + #FFFFFF \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index c4efc82..75595e3 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,6 +1,13 @@ + 20dp + 20dp + + 14sp + 13sp + + -1559.52dp -1558.08dp -1556.63dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 96da30f..407f6a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -340,4 +340,8 @@ 备注里包含关键词的所有记录都将被筛选 排序 + 首页 + 仪器 + 我的 + \ No newline at end of file