From ea692d190b5caa68b62c437daeff87c2bfb96b22 Mon Sep 17 00:00:00 2001 From: xiaoyan <xiaoyan159@163.com> Date: Tue, 27 Dec 2022 16:04:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AF=A6=E6=83=85=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.name | 1 - app/build.gradle | 10 +- .../ExampleInstrumentedTest.kt | 4 +- app/src/main/AndroidManifest.xml | 2 +- .../navinfo/vivo/db/dao/entity/Attachment.kt | 4 - .../java/com/navinfo/vivo/ui/ViewExtend.kt | 15 - .../vivo/ui/message/ObtainMessageFragment.kt | 43 --- .../vivo/ui/message/ObtainMessageViewModel.kt | 6 - .../navinfo/{vivo => volvo}/MainActivity.kt | 7 +- .../db/dao/MapLifeDataBase.java | 4 +- .../{vivo => volvo}/db/dao/MessageDao.kt | 4 +- .../navinfo/volvo/db/dao/entity/Attachment.kt | 30 ++ .../{vivo => volvo}/db/dao/entity/Message.kt | 4 +- .../{vivo => volvo}/db/dao/entity/User.kt | 3 +- .../java/com/navinfo/volvo/ui/ViewExtend.kt | 13 + .../ui/dashboard/DashboardFragment.kt | 4 +- .../ui/dashboard/DashboardViewModel.kt | 2 +- .../{vivo => volvo}/ui/home/HomeFragment.kt | 19 +- .../{vivo => volvo}/ui/home/HomeViewModel.kt | 2 +- .../volvo/ui/message/ObtainMessageFragment.kt | 68 +++++ .../ui/message/ObtainMessageViewModel.kt | 66 +++++ .../ui/notifications/NotificationsFragment.kt | 4 +- .../notifications/NotificationsViewModel.kt | 2 +- .../drawable/ic_baseline_access_time_24.xml | 6 + .../drawable/ic_baseline_audio_file_24.xml | 5 + .../res/drawable/ic_baseline_camera_24.xml | 5 + .../ic_baseline_fiber_manual_record_24.xml | 5 + .../drawable/ic_baseline_image_search_24.xml | 5 + .../main/res/drawable/ic_baseline_mail_24.xml | 5 + .../drawable/selector_bg_4_round_corner.xml | 8 + .../res/drawable/shape_bg_4_round_corner.xml | 21 ++ .../shape_bg_4_round_corner_default.xml | 21 ++ app/src/main/res/layout/activity_main.xml | 5 +- app/src/main/res/layout/fragment_home.xml | 2 +- .../res/layout/fragment_obtain_message.xml | 267 ++++++++++++++++-- .../main/res/navigation/mobile_navigation.xml | 19 +- app/src/main/res/values-night/themes.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- app/src/main/res/values/styles.xml | 6 + app/src/main/res/values/themes.xml | 2 +- .../{vivo => volvo}/ExampleUnitTest.kt | 2 +- settings.gradle | 2 +- 42 files changed, 582 insertions(+), 125 deletions(-) delete mode 100644 .idea/.name rename app/src/androidTest/java/com/navinfo/{vivo => volvo}/ExampleInstrumentedTest.kt (86%) delete mode 100644 app/src/main/java/com/navinfo/vivo/db/dao/entity/Attachment.kt delete mode 100644 app/src/main/java/com/navinfo/vivo/ui/ViewExtend.kt delete mode 100644 app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageFragment.kt delete mode 100644 app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageViewModel.kt rename app/src/main/java/com/navinfo/{vivo => volvo}/MainActivity.kt (83%) rename app/src/main/java/com/navinfo/{vivo => volvo}/db/dao/MapLifeDataBase.java (98%) rename app/src/main/java/com/navinfo/{vivo => volvo}/db/dao/MessageDao.kt (83%) create mode 100644 app/src/main/java/com/navinfo/volvo/db/dao/entity/Attachment.kt rename app/src/main/java/com/navinfo/{vivo => volvo}/db/dao/entity/Message.kt (84%) rename app/src/main/java/com/navinfo/{vivo => volvo}/db/dao/entity/User.kt (69%) create mode 100644 app/src/main/java/com/navinfo/volvo/ui/ViewExtend.kt rename app/src/main/java/com/navinfo/{vivo => volvo}/ui/dashboard/DashboardFragment.kt (91%) rename app/src/main/java/com/navinfo/{vivo => volvo}/ui/dashboard/DashboardViewModel.kt (88%) rename app/src/main/java/com/navinfo/{vivo => volvo}/ui/home/HomeFragment.kt (56%) rename app/src/main/java/com/navinfo/{vivo => volvo}/ui/home/HomeViewModel.kt (89%) create mode 100644 app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageFragment.kt create mode 100644 app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageViewModel.kt rename app/src/main/java/com/navinfo/{vivo => volvo}/ui/notifications/NotificationsFragment.kt (91%) rename app/src/main/java/com/navinfo/{vivo => volvo}/ui/notifications/NotificationsViewModel.kt (87%) create mode 100644 app/src/main/res/drawable/ic_baseline_access_time_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_audio_file_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_camera_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_image_search_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_mail_24.xml create mode 100644 app/src/main/res/drawable/selector_bg_4_round_corner.xml create mode 100644 app/src/main/res/drawable/shape_bg_4_round_corner.xml create mode 100644 app/src/main/res/drawable/shape_bg_4_round_corner_default.xml create mode 100644 app/src/main/res/values/styles.xml rename app/src/test/java/com/navinfo/{vivo => volvo}/ExampleUnitTest.kt (92%) diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 818e88c..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -NavinfoVivo \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b15943a..cb0c65a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,11 +6,11 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' //apply plugin: 'realm-android' android { - namespace 'com.navinfo.vivo' + namespace 'com.navinfo.volvo' compileSdk 32 defaultConfig { - applicationId "com.navinfo.vivo" + applicationId "com.navinfo.volvo" minSdk 24 targetSdk 32 versionCode 1 @@ -44,6 +44,7 @@ android { } buildFeatures { viewBinding true + dataBinding true } } @@ -58,6 +59,7 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1' implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1' implementation 'androidx.navigation:navigation-ui-ktx:2.4.1' + implementation 'com.google.code.gson:gson:2.10' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.4' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' @@ -75,4 +77,8 @@ dependencies { // implementation "android.arch.lifecycle:extensions:1.1.1" // annotationProcessor "android.arch.lifecycle:compiler:1.1.1" implementation 'com.tencent.wcdb:wcdb-android:1.1-19' + // 文件选择器 https://github.com/rosuH/AndroidFilePicker/blob/master/README_CN.md + implementation 'me.rosuh:AndroidFilePicker:0.8.2' + // 时间选择器 https://github.com/Gredicer/datetimepicker + implementation 'com.github.Gredicer:datetimepicker:V1.0.0' } \ No newline at end of file diff --git a/app/src/androidTest/java/com/navinfo/vivo/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/navinfo/volvo/ExampleInstrumentedTest.kt similarity index 86% rename from app/src/androidTest/java/com/navinfo/vivo/ExampleInstrumentedTest.kt rename to app/src/androidTest/java/com/navinfo/volvo/ExampleInstrumentedTest.kt index f16bf01..5d650bd 100644 --- a/app/src/androidTest/java/com/navinfo/vivo/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/navinfo/volvo/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo +package com.navinfo.volvo import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.navinfo.vivo", appContext.packageName) + assertEquals("com.navinfo.volvo", appContext.packageName) } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3ee1abf..deae353 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.NavinfoVivo" + android:theme="@style/Theme.NavinfoVolvo" tools:targetApi="31"> <activity android:name=".MainActivity" diff --git a/app/src/main/java/com/navinfo/vivo/db/dao/entity/Attachment.kt b/app/src/main/java/com/navinfo/vivo/db/dao/entity/Attachment.kt deleted file mode 100644 index 862769b..0000000 --- a/app/src/main/java/com/navinfo/vivo/db/dao/entity/Attachment.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.navinfo.vivo.db.dao.entity - -class Attachment { -} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/ui/ViewExtend.kt b/app/src/main/java/com/navinfo/vivo/ui/ViewExtend.kt deleted file mode 100644 index b675d64..0000000 --- a/app/src/main/java/com/navinfo/vivo/ui/ViewExtend.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.navinfo.vivo.ui - -import android.graphics.Color -import androidx.core.text.buildSpannedString -import androidx.core.text.color -import com.google.android.material.textfield.TextInputLayout - -class ViewExtend { - fun TextInputLayout.markRequiredInRed() { - hint = buildSpannedString { - append(hint) - color(Color.RED) { append(" *") } // Mind the space prefix. - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageFragment.kt b/app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageFragment.kt deleted file mode 100644 index ad58f41..0000000 --- a/app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageFragment.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.navinfo.vivo.ui.message - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider -import com.navinfo.vivo.databinding.FragmentHomeBinding -import com.navinfo.vivo.databinding.FragmentObtainMessageBinding -import com.navinfo.vivo.ui.home.HomeViewModel - -class ObtainMessageFragment: Fragment() { - private var _binding: FragmentObtainMessageBinding? = null - - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - val obtainMessageViewModel = - ViewModelProvider(this).get(ObtainMessageViewModel::class.java) - - _binding = FragmentObtainMessageBinding.inflate(inflater, container, false) - val root: View = binding.root - - val textView: TextView = binding.textHome - obtainMessageViewModel.text.observe(viewLifecycleOwner) { - textView.text = it - } - return root - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageViewModel.kt b/app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageViewModel.kt deleted file mode 100644 index 81681f1..0000000 --- a/app/src/main/java/com/navinfo/vivo/ui/message/ObtainMessageViewModel.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.navinfo.vivo.ui.message - -import androidx.lifecycle.ViewModel - -class ObtainMessageViewModel: ViewModel() { -} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/MainActivity.kt b/app/src/main/java/com/navinfo/volvo/MainActivity.kt similarity index 83% rename from app/src/main/java/com/navinfo/vivo/MainActivity.kt rename to app/src/main/java/com/navinfo/volvo/MainActivity.kt index d947a69..429cf49 100644 --- a/app/src/main/java/com/navinfo/vivo/MainActivity.kt +++ b/app/src/main/java/com/navinfo/volvo/MainActivity.kt @@ -1,13 +1,12 @@ -package com.navinfo.vivo +package com.navinfo.volvo import android.os.Bundle import com.google.android.material.bottomnavigation.BottomNavigationView import androidx.appcompat.app.AppCompatActivity import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration -import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController -import com.navinfo.vivo.databinding.ActivityMainBinding +import com.navinfo.volvo.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { @@ -29,7 +28,7 @@ class MainActivity : AppCompatActivity() { R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications ) ) - setupActionBarWithNavController(navController, appBarConfiguration) +// setupActionBarWithNavController(navController, appBarConfiguration) navView.setupWithNavController(navController) } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/db/dao/MapLifeDataBase.java b/app/src/main/java/com/navinfo/volvo/db/dao/MapLifeDataBase.java similarity index 98% rename from app/src/main/java/com/navinfo/vivo/db/dao/MapLifeDataBase.java rename to app/src/main/java/com/navinfo/volvo/db/dao/MapLifeDataBase.java index 64698d8..ec4e1ac 100644 --- a/app/src/main/java/com/navinfo/vivo/db/dao/MapLifeDataBase.java +++ b/app/src/main/java/com/navinfo/volvo/db/dao/MapLifeDataBase.java @@ -1,4 +1,4 @@ -package com.navinfo.vivo.db.dao; +package com.navinfo.volvo.db.dao; import android.content.Context; @@ -10,7 +10,7 @@ import androidx.room.RoomDatabase; import androidx.sqlite.db.SupportSQLiteDatabase; import androidx.sqlite.db.SupportSQLiteOpenHelper; -import com.navinfo.vivo.db.dao.entity.Message; +import com.navinfo.volvo.db.dao.entity.Message; import com.tencent.wcdb.database.SQLiteCipherSpec; import com.tencent.wcdb.database.SQLiteDatabase; diff --git a/app/src/main/java/com/navinfo/vivo/db/dao/MessageDao.kt b/app/src/main/java/com/navinfo/volvo/db/dao/MessageDao.kt similarity index 83% rename from app/src/main/java/com/navinfo/vivo/db/dao/MessageDao.kt rename to app/src/main/java/com/navinfo/volvo/db/dao/MessageDao.kt index 80f5cee..c4618a2 100644 --- a/app/src/main/java/com/navinfo/vivo/db/dao/MessageDao.kt +++ b/app/src/main/java/com/navinfo/volvo/db/dao/MessageDao.kt @@ -1,10 +1,10 @@ -package com.navinfo.vivo.db.dao +package com.navinfo.volvo.db.dao import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.navinfo.vivo.db.dao.entity.Message +import com.navinfo.volvo.db.dao.entity.Message @Dao interface MessageDao { diff --git a/app/src/main/java/com/navinfo/volvo/db/dao/entity/Attachment.kt b/app/src/main/java/com/navinfo/volvo/db/dao/entity/Attachment.kt new file mode 100644 index 0000000..0994bdf --- /dev/null +++ b/app/src/main/java/com/navinfo/volvo/db/dao/entity/Attachment.kt @@ -0,0 +1,30 @@ +package com.navinfo.volvo.db.dao.entity + +import androidx.room.TypeConverter +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import java.lang.reflect.Type + +class Attachment { + lateinit var path:String + lateinit var attachmentType: attachmentType +} + +enum class attachmentType { + PIC, AUDIO +} + +class AttachmentConvert { + private val gson = Gson() + + @TypeConverter + fun objectToString(list: List<Attachment>): String { + return gson.toJson(list) + } + + @TypeConverter + fun stringToObject(json: String?): List<Attachment> { + val listType: Type = object : TypeToken<List<Attachment>>() {}.type + return gson.fromJson(json, listType) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/db/dao/entity/Message.kt b/app/src/main/java/com/navinfo/volvo/db/dao/entity/Message.kt similarity index 84% rename from app/src/main/java/com/navinfo/vivo/db/dao/entity/Message.kt rename to app/src/main/java/com/navinfo/volvo/db/dao/entity/Message.kt index d356ad3..7c299ad 100644 --- a/app/src/main/java/com/navinfo/vivo/db/dao/entity/Message.kt +++ b/app/src/main/java/com/navinfo/volvo/db/dao/entity/Message.kt @@ -1,8 +1,10 @@ -package com.navinfo.vivo.db.dao.entity +package com.navinfo.volvo.db.dao.entity import androidx.room.Entity import androidx.room.PrimaryKey +import androidx.room.TypeConverters +@TypeConverters(AttachmentConvert::class) @Entity(tableName = "message") class Message( @PrimaryKey(autoGenerate = true) diff --git a/app/src/main/java/com/navinfo/vivo/db/dao/entity/User.kt b/app/src/main/java/com/navinfo/volvo/db/dao/entity/User.kt similarity index 69% rename from app/src/main/java/com/navinfo/vivo/db/dao/entity/User.kt rename to app/src/main/java/com/navinfo/volvo/db/dao/entity/User.kt index b2329ee..c1a5569 100644 --- a/app/src/main/java/com/navinfo/vivo/db/dao/entity/User.kt +++ b/app/src/main/java/com/navinfo/volvo/db/dao/entity/User.kt @@ -1,7 +1,6 @@ -package com.navinfo.vivo.db.dao.entity +package com.navinfo.volvo.db.dao.entity import androidx.room.PrimaryKey -import java.net.IDN class User( @PrimaryKey() diff --git a/app/src/main/java/com/navinfo/volvo/ui/ViewExtend.kt b/app/src/main/java/com/navinfo/volvo/ui/ViewExtend.kt new file mode 100644 index 0000000..bcea92a --- /dev/null +++ b/app/src/main/java/com/navinfo/volvo/ui/ViewExtend.kt @@ -0,0 +1,13 @@ +package com.navinfo.volvo.ui + +import android.graphics.Color +import androidx.core.text.buildSpannedString +import androidx.core.text.color +import com.google.android.material.textfield.TextInputLayout + +fun TextInputLayout.markRequiredInRed() { + hint = buildSpannedString { + append(hint)// Mind the space prefix. + color(Color.RED) { append(" *") } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/ui/dashboard/DashboardFragment.kt b/app/src/main/java/com/navinfo/volvo/ui/dashboard/DashboardFragment.kt similarity index 91% rename from app/src/main/java/com/navinfo/vivo/ui/dashboard/DashboardFragment.kt rename to app/src/main/java/com/navinfo/volvo/ui/dashboard/DashboardFragment.kt index 1ce55d1..9dda29c 100644 --- a/app/src/main/java/com/navinfo/vivo/ui/dashboard/DashboardFragment.kt +++ b/app/src/main/java/com/navinfo/volvo/ui/dashboard/DashboardFragment.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo.ui.dashboard +package com.navinfo.volvo.ui.dashboard import android.os.Bundle import android.view.LayoutInflater @@ -7,7 +7,7 @@ import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider -import com.navinfo.vivo.databinding.FragmentDashboardBinding +import com.navinfo.volvo.databinding.FragmentDashboardBinding class DashboardFragment : Fragment() { diff --git a/app/src/main/java/com/navinfo/vivo/ui/dashboard/DashboardViewModel.kt b/app/src/main/java/com/navinfo/volvo/ui/dashboard/DashboardViewModel.kt similarity index 88% rename from app/src/main/java/com/navinfo/vivo/ui/dashboard/DashboardViewModel.kt rename to app/src/main/java/com/navinfo/volvo/ui/dashboard/DashboardViewModel.kt index d040254..647da35 100644 --- a/app/src/main/java/com/navinfo/vivo/ui/dashboard/DashboardViewModel.kt +++ b/app/src/main/java/com/navinfo/volvo/ui/dashboard/DashboardViewModel.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo.ui.dashboard +package com.navinfo.volvo.ui.dashboard import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData diff --git a/app/src/main/java/com/navinfo/vivo/ui/home/HomeFragment.kt b/app/src/main/java/com/navinfo/volvo/ui/home/HomeFragment.kt similarity index 56% rename from app/src/main/java/com/navinfo/vivo/ui/home/HomeFragment.kt rename to app/src/main/java/com/navinfo/volvo/ui/home/HomeFragment.kt index 51b0759..9988424 100644 --- a/app/src/main/java/com/navinfo/vivo/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/navinfo/volvo/ui/home/HomeFragment.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo.ui.home +package com.navinfo.volvo.ui.home import android.os.Bundle import android.view.LayoutInflater @@ -7,7 +7,11 @@ import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider -import com.navinfo.vivo.databinding.FragmentHomeBinding +import androidx.navigation.Navigation +import com.navinfo.volvo.R +import com.navinfo.volvo.databinding.FragmentHomeBinding +import com.navinfo.volvo.db.dao.entity.Message +import com.navinfo.volvo.ui.message.ObtainMessageViewModel class HomeFragment : Fragment() { @@ -24,13 +28,20 @@ class HomeFragment : Fragment() { ): View { val homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java) + val obtainMessageViewModel = ViewModelProvider(requireActivity()).get(ObtainMessageViewModel::class.java) _binding = FragmentHomeBinding.inflate(inflater, container, false) val root: View = binding.root - val textView: TextView = binding.textHome + val textView: TextView = binding.tvNewMessage + textView.setOnClickListener { + val message = Message(1, "新建标题", "", "", "", 0, "1", "2", mutableListOf()) + obtainMessageViewModel.setCurrentMessage(message) + // 跳转到新建Message的Fragment + Navigation.findNavController(it).navigate(R.id.home_2_obtain_message) + } homeViewModel.text.observe(viewLifecycleOwner) { - textView.text = it + } return root } diff --git a/app/src/main/java/com/navinfo/vivo/ui/home/HomeViewModel.kt b/app/src/main/java/com/navinfo/volvo/ui/home/HomeViewModel.kt similarity index 89% rename from app/src/main/java/com/navinfo/vivo/ui/home/HomeViewModel.kt rename to app/src/main/java/com/navinfo/volvo/ui/home/HomeViewModel.kt index 3e57040..a816b95 100644 --- a/app/src/main/java/com/navinfo/vivo/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/navinfo/volvo/ui/home/HomeViewModel.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo.ui.home +package com.navinfo.volvo.ui.home import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData diff --git a/app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageFragment.kt b/app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageFragment.kt new file mode 100644 index 0000000..d90d8cf --- /dev/null +++ b/app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageFragment.kt @@ -0,0 +1,68 @@ +package com.navinfo.volvo.ui.message + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.gredicer.datetimepicker.DateTimePickerFragment +import com.navinfo.volvo.databinding.FragmentObtainMessageBinding +import com.navinfo.volvo.ui.markRequiredInRed + +class ObtainMessageFragment: Fragment() { + private var _binding: FragmentObtainMessageBinding? = null + private val obtainMessageViewModel by lazy { + ViewModelProvider(requireActivity()).get(ObtainMessageViewModel::class.java) + } + + // This property is only valid between onCreateView and + // onDestroyView. + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentObtainMessageBinding.inflate(inflater, container, false) + val root: View = binding.root + + obtainMessageViewModel?.getMessageLiveData()?.observe( + viewLifecycleOwner, Observer { + // 初始化界面显示内容 + if(it.title!=null) + binding.tvMessageTitle?.setText(it.title) + if (it.sendDate!=null) { + binding.btnSendTime.setText(it.sendDate) + } + } + ) + initView() + return root + } + + fun initView() { + // 设置问候信息提示的红色星号 + binding.tiLayoutTitle.markRequiredInRed() + // 设置点击按钮选择发送时间 + binding.btnSendTime.setOnClickListener { + val dialog = DateTimePickerFragment.newInstance().mode(0) + dialog.listener = object : DateTimePickerFragment.OnClickListener { + override fun onClickListener(selectTime: String) { + obtainMessageViewModel.updateMessageSendTime(selectTime) + } + + } + dialog.show(parentFragmentManager, "SelectSendTime") + } + + // 点击按钮选择拍照 + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageViewModel.kt b/app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageViewModel.kt new file mode 100644 index 0000000..bb7f275 --- /dev/null +++ b/app/src/main/java/com/navinfo/volvo/ui/message/ObtainMessageViewModel.kt @@ -0,0 +1,66 @@ +package com.navinfo.volvo.ui.message + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.liveData +import com.navinfo.volvo.db.dao.entity.Message +import com.navinfo.volvo.db.dao.entity.attachmentType + +class ObtainMessageViewModel: ViewModel() { + private val msgLiveData: MutableLiveData<Message> by lazy { + MutableLiveData<Message>() + } + + fun setCurrentMessage(msg: Message) { + msgLiveData.postValue(msg) + } + + fun getMessageLiveData(): MutableLiveData<Message> { + return msgLiveData + } + + // 更新消息标题 + fun updateMessageTitle(title: String) { + this.msgLiveData.value?.title = title + this.msgLiveData.postValue(this.msgLiveData.value) + } + + // 更新消息附件中的照片文件 + fun updateMessagePic(picUrl: String) { + for (attachment in this.msgLiveData.value!!.attachment) { + if (attachment.attachmentType == attachmentType.PIC) { + attachment.path = picUrl + } + } + this.msgLiveData.postValue(this.msgLiveData.value) + } + + // 更新消息附件中的录音文件 + fun updateMessageAudio(audioUrl: String) { + for (attachment in this.msgLiveData.value!!.attachment) { + if (attachment.attachmentType == attachmentType.AUDIO) { + attachment.path = audioUrl + } + } + this.msgLiveData.postValue(this.msgLiveData.value) + } + + // 更新发送人 + fun updateMessageSendFrom(sendFrom: String) { + this.msgLiveData.value?.fromId = sendFrom + this.msgLiveData.postValue(this.msgLiveData.value) + } + + // 更新接收人 + fun updateMessageSendTo(sendTo: String) { + this.msgLiveData.value?.toId = sendTo + this.msgLiveData.postValue(this.msgLiveData.value) + } + + // 更新发件时间 + fun updateMessageSendTime(sendTime: String) { + this.msgLiveData.value?.sendDate = sendTime + this.msgLiveData.postValue(this.msgLiveData.value) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/vivo/ui/notifications/NotificationsFragment.kt b/app/src/main/java/com/navinfo/volvo/ui/notifications/NotificationsFragment.kt similarity index 91% rename from app/src/main/java/com/navinfo/vivo/ui/notifications/NotificationsFragment.kt rename to app/src/main/java/com/navinfo/volvo/ui/notifications/NotificationsFragment.kt index 924ccc8..80b8a27 100644 --- a/app/src/main/java/com/navinfo/vivo/ui/notifications/NotificationsFragment.kt +++ b/app/src/main/java/com/navinfo/volvo/ui/notifications/NotificationsFragment.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo.ui.notifications +package com.navinfo.volvo.ui.notifications import android.os.Bundle import android.view.LayoutInflater @@ -7,7 +7,7 @@ import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider -import com.navinfo.vivo.databinding.FragmentNotificationsBinding +import com.navinfo.volvo.databinding.FragmentNotificationsBinding class NotificationsFragment : Fragment() { diff --git a/app/src/main/java/com/navinfo/vivo/ui/notifications/NotificationsViewModel.kt b/app/src/main/java/com/navinfo/volvo/ui/notifications/NotificationsViewModel.kt similarity index 87% rename from app/src/main/java/com/navinfo/vivo/ui/notifications/NotificationsViewModel.kt rename to app/src/main/java/com/navinfo/volvo/ui/notifications/NotificationsViewModel.kt index 4f0881c..92a3e47 100644 --- a/app/src/main/java/com/navinfo/vivo/ui/notifications/NotificationsViewModel.kt +++ b/app/src/main/java/com/navinfo/volvo/ui/notifications/NotificationsViewModel.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo.ui.notifications +package com.navinfo.volvo.ui.notifications import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData diff --git a/app/src/main/res/drawable/ic_baseline_access_time_24.xml b/app/src/main/res/drawable/ic_baseline_access_time_24.xml new file mode 100644 index 0000000..bdf91f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_access_time_24.xml @@ -0,0 +1,6 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"/> + <path android:fillColor="@android:color/white" android:pathData="M12.5,7H11v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_baseline_audio_file_24.xml b/app/src/main/res/drawable/ic_baseline_audio_file_24.xml new file mode 100644 index 0000000..5496fb8 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_audio_file_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M14,2H6C4.9,2 4.01,2.9 4.01,4L4,20c0,1.1 0.89,2 1.99,2H18c1.1,0 2,-0.9 2,-2V8L14,2zM16,13h-3v3.75c0,1.24 -1.01,2.25 -2.25,2.25S8.5,17.99 8.5,16.75c0,-1.24 1.01,-2.25 2.25,-2.25c0.46,0 0.89,0.14 1.25,0.38V11h4V13zM13,9V3.5L18.5,9H13z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_baseline_camera_24.xml b/app/src/main/res/drawable/ic_baseline_camera_24.xml new file mode 100644 index 0000000..4a77cd1 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_camera_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M9.4,10.5l4.77,-8.26C13.47,2.09 12.75,2 12,2c-2.4,0 -4.6,0.85 -6.32,2.25l3.66,6.35 0.06,-0.1zM21.54,9c-0.92,-2.92 -3.15,-5.26 -6,-6.34L11.88,9h9.66zM21.8,10h-7.49l0.29,0.5 4.76,8.25C21,16.97 22,14.61 22,12c0,-0.69 -0.07,-1.35 -0.2,-2zM8.54,12l-3.9,-6.75C3.01,7.03 2,9.39 2,12c0,0.69 0.07,1.35 0.2,2h7.49l-1.15,-2zM2.46,15c0.92,2.92 3.15,5.26 6,6.34L12.12,15L2.46,15zM13.73,15l-3.9,6.76c0.7,0.15 1.42,0.24 2.17,0.24 2.4,0 4.6,-0.85 6.32,-2.25l-3.66,-6.35 -0.93,1.6z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml b/app/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml new file mode 100644 index 0000000..57fc55c --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12,12m-8,0a8,8 0,1 1,16 0a8,8 0,1 1,-16 0"/> +</vector> diff --git a/app/src/main/res/drawable/ic_baseline_image_search_24.xml b/app/src/main/res/drawable/ic_baseline_image_search_24.xml new file mode 100644 index 0000000..d797b73 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_image_search_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M18,13v7L4,20L4,6h5.02c0.05,-0.71 0.22,-1.38 0.48,-2L4,4c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2v-5l-2,-2zM16.5,18h-11l2.75,-3.53 1.96,2.36 2.75,-3.54zM19.3,8.89c0.44,-0.7 0.7,-1.51 0.7,-2.39C20,4.01 17.99,2 15.5,2S11,4.01 11,6.5s2.01,4.5 4.49,4.5c0.88,0 1.7,-0.26 2.39,-0.7L21,13.42 22.42,12 19.3,8.89zM15.5,9C14.12,9 13,7.88 13,6.5S14.12,4 15.5,4 18,5.12 18,6.5 16.88,9 15.5,9z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_baseline_mail_24.xml b/app/src/main/res/drawable/ic_baseline_mail_24.xml new file mode 100644 index 0000000..f0abc2d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_mail_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM20,8l-8,5 -8,-5L4,6l8,5 8,-5v2z"/> +</vector> diff --git a/app/src/main/res/drawable/selector_bg_4_round_corner.xml b/app/src/main/res/drawable/selector_bg_4_round_corner.xml new file mode 100644 index 0000000..497f712 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_4_round_corner.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:drawable="@drawable/shape_bg_4_round_corner" android:state_pressed="true"></item> + <item android:drawable="@drawable/shape_bg_4_round_corner" android:state_selected="true"></item> + <item android:drawable="@drawable/shape_bg_4_round_corner" android:state_pressed="true"></item> + <item android:drawable="@drawable/shape_bg_4_round_corner" android:state_checked="true"></item> + <item android:drawable="@drawable/shape_bg_4_round_corner_default" ></item> +</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_bg_4_round_corner.xml b/app/src/main/res/drawable/shape_bg_4_round_corner.xml new file mode 100644 index 0000000..a03b6b2 --- /dev/null +++ b/app/src/main/res/drawable/shape_bg_4_round_corner.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <!--设置圆角--> + <!-- 按顺序分别对应:左下角的角度、右下角的角度、左上角的角度、右上角的角度--> + <corners + android:bottomLeftRadius="@dimen/default_widget_padding" + android:bottomRightRadius="@dimen/default_widget_padding" + android:topLeftRadius="@dimen/default_widget_padding" + android:topRightRadius="@dimen/default_widget_padding" /> + <!--设置圆角背景色--> +<!-- <solid android:color="@color/white" />--> + <!-- 设置边框大小与背景色--> + <stroke + android:width="1px" + android:color="@color/purple_200" /> + <padding android:bottom="@dimen/default_widget_padding" + android:left="@dimen/default_widget_padding" + android:right="@dimen/default_widget_padding" + android:top="@dimen/default_widget_padding"> + </padding> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_bg_4_round_corner_default.xml b/app/src/main/res/drawable/shape_bg_4_round_corner_default.xml new file mode 100644 index 0000000..d65ddff --- /dev/null +++ b/app/src/main/res/drawable/shape_bg_4_round_corner_default.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <!--设置圆角--> + <!-- 按顺序分别对应:左下角的角度、右下角的角度、左上角的角度、右上角的角度--> + <corners + android:bottomLeftRadius="@dimen/default_widget_padding" + android:bottomRightRadius="@dimen/default_widget_padding" + android:topLeftRadius="@dimen/default_widget_padding" + android:topRightRadius="@dimen/default_widget_padding" /> + <!--设置圆角背景色--> +<!-- <solid android:color="@color/white" />--> + <!-- 设置边框大小与背景色--> + <stroke + android:width="1px" + android:color="@color/black" /> + <padding android:bottom="@dimen/default_widget_padding" + android:left="@dimen/default_widget_padding" + android:right="@dimen/default_widget_padding" + android:top="@dimen/default_widget_padding"> + </padding> +</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 06ea6ca..9012e8f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -3,8 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/container" android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingTop="?attr/actionBarSize"> + android:layout_height="match_parent"> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/nav_view" @@ -22,7 +21,7 @@ android:id="@+id/nav_host_fragment_activity_main" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="0dp" app:defaultNavHost="true" app:layout_constraintBottom_toTopOf="@id/nav_view" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index c299bd2..f119357 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -7,7 +7,7 @@ tools:context=".ui.home.HomeFragment"> <TextView - android:id="@+id/text_home" + android:id="@+id/tv_new_message" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="8dp" diff --git a/app/src/main/res/layout/fragment_obtain_message.xml b/app/src/main/res/layout/fragment_obtain_message.xml index a72a899..e6817cf 100644 --- a/app/src/main/res/layout/fragment_obtain_message.xml +++ b/app/src/main/res/layout/fragment_obtain_message.xml @@ -1,36 +1,271 @@ <?xml version="1.0" encoding="utf-8"?> - -<ScrollView +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:overScrollMode="never" - android:scrollbars="none"> - <androidx.constraintlayout.widget.ConstraintLayout + android:padding="@dimen/activity_default_padding" + tools:context=".ui.message.ObtainMessageFragment"> + <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" - android:padding="@dimen/activity_default_padding" - tools:context=".ui.message.ObtainMessageFragment"> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:overScrollMode="never" + android:scrollbars="none"> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/ti_layout_title" style="@style/Widget.Material3.TextInputLayout.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" - app:hint="问候名称:" - app:errorEnabled="true" + android:layout_margin="@dimen/default_widget_padding" app:counterEnabled="true" app:counterMaxLength="10" - app:startIconDrawable="@drawable/ic_home_black_24dp" - app:layout_constraintRight_toRightOf="parent" + app:errorEnabled="true" + android:hint="问候信息" app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:startIconDrawable="@drawable/ic_baseline_mail_24"> <com.google.android.material.textfield.TextInputEditText + android:id="@+id/tv_message_title" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="问候名称"/> + android:layout_height="wrap_content" /> </com.google.android.material.textfield.TextInputLayout> - </androidx.constraintlayout.widget.ConstraintLayout> -</ScrollView> \ No newline at end of file + <com.google.android.material.textview.MaterialTextView + android:id="@+id/label_message_subtitle" + style="@style/TextAppearance.AppCompat.Subhead" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="问候信息" + app:layout_constraintTop_toBottomOf="@id/ti_layout_title"></com.google.android.material.textview.MaterialTextView> + + <com.google.android.material.divider.MaterialDivider + android:id="@+id/div_message" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginVertical="@dimen/default_widget_padding" + app:layout_constraintTop_toBottomOf="@id/label_message_subtitle"></com.google.android.material.divider.MaterialDivider> + + <LinearLayout + android:id="@+id/layer_message_info" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="@dimen/default_widget_padding" + app:layout_constraintTop_toBottomOf="@id/div_message"> + + <LinearLayout + style="@style/default_line" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="*" + android:textColor="@color/red"></TextView> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="上传图片:"></TextView> + + <com.google.android.material.button.MaterialButton + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="@style/Widget.Material3.Button.ElevatedButton" + app:icon="@drawable/ic_baseline_camera_24" + android:text="点击拍照" + android:padding="@dimen/default_widget_padding"></com.google.android.material.button.MaterialButton> + <Space + android:layout_width="@dimen/default_widget_padding" + android:layout_height="wrap_content"></Space> + <com.google.android.material.button.MaterialButton + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="@style/Widget.Material3.Button.ElevatedButton" + app:icon="@drawable/ic_baseline_image_search_24" + android:text="相册选择" + android:padding="@dimen/default_widget_padding"></com.google.android.material.button.MaterialButton> + </LinearLayout> + + <LinearLayout + style="@style/default_line" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="*" + android:textColor="@color/red"></TextView> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="上传音频:"></TextView> + + <com.google.android.material.button.MaterialButton + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="@style/Widget.Material3.Button.ElevatedButton" + app:icon="@drawable/ic_baseline_fiber_manual_record_24" + android:text="长按录音" + android:padding="@dimen/default_widget_padding"></com.google.android.material.button.MaterialButton> + <Space + android:layout_width="@dimen/default_widget_padding" + android:layout_height="wrap_content"></Space> + <com.google.android.material.button.MaterialButton + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="@style/Widget.Material3.Button.ElevatedButton" + app:icon="@drawable/ic_baseline_audio_file_24" + android:text="音频选择" + android:padding="@dimen/default_widget_padding"></com.google.android.material.button.MaterialButton> + </LinearLayout> + </LinearLayout> + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/label_send_info" + style="@style/TextAppearance.AppCompat.Subhead" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="发送信息" + app:layout_constraintTop_toBottomOf="@id/layer_message_info"></com.google.android.material.textview.MaterialTextView> + + <com.google.android.material.divider.MaterialDivider + android:id="@+id/div_send_info" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginVertical="@dimen/default_widget_padding" + app:layout_constraintTop_toBottomOf="@id/label_send_info"></com.google.android.material.divider.MaterialDivider> + + <LinearLayout + android:id="@+id/layer_send_info" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="@dimen/default_widget_padding" + app:layout_constraintTop_toBottomOf="@id/div_send_info"> + + <LinearLayout + style="@style/default_line" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="*" + android:textColor="@color/red"></TextView> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="我是谁:"></TextView> + + <androidx.appcompat.widget.AppCompatEditText + android:id="@+id/edt_send_from" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/selector_bg_4_round_corner"> + </androidx.appcompat.widget.AppCompatEditText> + </LinearLayout> + + <LinearLayout + style="@style/default_line" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="*" + android:textColor="@color/red"></TextView> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="发给谁:"></TextView> + + <androidx.appcompat.widget.AppCompatEditText + android:id="@+id/edt_send_to" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/selector_bg_4_round_corner"> + </androidx.appcompat.widget.AppCompatEditText> + </LinearLayout> + + <LinearLayout + style="@style/default_line" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="*" + android:textColor="@color/red"></TextView> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="发送时间:"></TextView> + + <com.google.android.material.button.MaterialButton + android:id="@+id/btn_send_time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="@style/Widget.Material3.Button.ElevatedButton" + app:icon="@drawable/ic_baseline_access_time_24" + android:text="现在" + android:padding="@dimen/default_widget_padding"></com.google.android.material.button.MaterialButton> + </LinearLayout> + + </LinearLayout> + + </androidx.constraintlayout.widget.ConstraintLayout> + </ScrollView> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent"> + + <com.google.android.material.button.MaterialButton + style="@style/Widget.Material3.Button.ElevatedButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="取消"></com.google.android.material.button.MaterialButton> + + <Space + android:layout_width="@dimen/default_widget_padding" + android:layout_height="wrap_content"></Space> + + <com.google.android.material.button.MaterialButton + style="@style/Widget.Material3.Button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="确认提交"></com.google.android.material.button.MaterialButton> + </LinearLayout> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 2b4cd1d..4da7628 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -7,19 +7,30 @@ <fragment android:id="@+id/navigation_home" - android:name="com.navinfo.vivo.ui.home.HomeFragment" + android:name="com.navinfo.volvo.ui.home.HomeFragment" android:label="@string/title_home" - tools:layout="@layout/fragment_home" /> + tools:layout="@layout/fragment_home" > + <action android:id="@+id/home_2_obtain_message" + app:destination="@id/navigation_obtain_message"> + + </action> + </fragment> <fragment android:id="@+id/navigation_dashboard" - android:name="com.navinfo.vivo.ui.dashboard.DashboardFragment" + android:name="com.navinfo.volvo.ui.dashboard.DashboardFragment" android:label="@string/title_dashboard" tools:layout="@layout/fragment_dashboard" /> <fragment android:id="@+id/navigation_notifications" - android:name="com.navinfo.vivo.ui.notifications.NotificationsFragment" + android:name="com.navinfo.volvo.ui.notifications.NotificationsFragment" android:label="@string/title_notifications" tools:layout="@layout/fragment_notifications" /> + + <fragment + android:id="@+id/navigation_obtain_message" + android:name="com.navinfo.volvo.ui.message.ObtainMessageFragment" + android:label="问候编辑" + tools:layout="@layout/fragment_obtain_message" /> </navigation> \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 12394cb..aada80e 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -1,6 +1,6 @@ <resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> - <style name="Theme.NavinfoVivo" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> + <style name="Theme.NavinfoVolvo" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/purple_200</item> <item name="colorPrimaryVariant">@color/purple_700</item> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 628fdfe..e29f70b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ <resources> - <string name="app_name">NavinfoVivo</string> + <string name="app_name">NavinfoVolvo</string> <string name="title_home">Home</string> <string name="title_dashboard">Dashboard</string> <string name="title_notifications">Notifications</string> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..229464f --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <style name="default_line"> + <item name="android:padding">@dimen/default_widget_padding</item> + </style> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index e307879..146ed17 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,6 +1,6 @@ <resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> - <style name="Theme.NavinfoVivo" parent="Theme.Material3.DayNight.NoActionBar"> + <style name="Theme.NavinfoVolvo" parent="Theme.Material3.DayNight.NoActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/purple_500</item> <item name="colorPrimaryVariant">@color/purple_700</item> diff --git a/app/src/test/java/com/navinfo/vivo/ExampleUnitTest.kt b/app/src/test/java/com/navinfo/volvo/ExampleUnitTest.kt similarity index 92% rename from app/src/test/java/com/navinfo/vivo/ExampleUnitTest.kt rename to app/src/test/java/com/navinfo/volvo/ExampleUnitTest.kt index 5e88705..fc7791d 100644 --- a/app/src/test/java/com/navinfo/vivo/ExampleUnitTest.kt +++ b/app/src/test/java/com/navinfo/volvo/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package com.navinfo.vivo +package com.navinfo.volvo import org.junit.Test diff --git a/settings.gradle b/settings.gradle index 7dd811e..d7635cb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -24,5 +24,5 @@ dependencyResolutionManagement { mavenCentral() } } -rootProject.name = "NavinfoVivo" +rootProject.name = "NavinfoVolvo" include ':app'