
K2_Jetpack
王的备忘录
对新型物联网系统搭建有一定经验,项目涉及,RFID智能载体柜,智能锁控系统,手持库管系统,可移动智能医废收集车,智能话机,智能盒子,智能家居应用,车载应用等!坐标沈阳。
展开
-
switchMap
val user:LiveData<User> = Transformations.switchMap(userIdLiveData){ userId-> Repository.getUser(userId) }switchMap接受两个参数,一个是userIdLiveData,switchMap会对它进行观察第二个参数是转换函数,在该函数中返回一个livedata对象。switchMap的工作原理就是将转换函数中返回的livedata转换成另一个可以观察的livedata对象原创 2022-05-02 20:20:25 · 913 阅读 · 0 评论 -
LiveData的map和switchMap方法
1,Transformations的map()方法来对LiveData的数据类型进行转换2,switchMap对于viewmodel中某个livedata对象是调用另外方法获得的,借助它将改livedata方法转换成另外一个可观察的livedata对象原创 2022-05-02 08:49:36 · 955 阅读 · 0 评论 -
Android databinding include 引入的布局 控件id 引用方式
<include android:id="@+id/includeTest" layout="@layout/layout_b" />原创 2021-06-08 11:02:49 · 1246 阅读 · 0 评论 -
popUpTo 和 popUpToInclusive
当你使用 action 来进行导航的时候,你可以选择从后退栈中弹出额外的目的地.举个例子,如果你的应用有一个登录流程,一旦用户登录了,你应该从回退栈中弹出所有登录相关的目的地,这样可以保证用户回退的时候不会又回到登录流程中.为了在一个目的地导航到另一个目的地的时候弹出目的地,可以添加一个app:popUpTo属性到关联的<action>元素中.app:popUpTo这个属性告诉 Navigation 在调用navigate()的时候从回退栈中弹出一些目的地.这个属性的值...原创 2021-06-07 14:22:30 · 3504 阅读 · 0 评论 -
navigation的回退栈
Android 维护了一个back stack包含了你访问的目的地.你app 的第一个 目的地在用户打开 app 的时候就会放进栈中. 每一次调用navigate()方法会把另一个目的地放到栈顶. 当调用NavController.navigateUp()和NavController.popBackStack()来进行向上或向后的操作的时候,会移除栈顶的目的地....原创 2021-06-07 14:22:11 · 1261 阅读 · 0 评论 -
横屏时bottomNavigationView各个item平均分配位置显示
setLabelVisibilityMode(int labelVisibilityMode)设置导航项目的标签可见性模式setItemHorizontalTranslationEnabled(boolean itemHorizontalTranslationEnabled)设置当合并的项目宽度填满屏幕时,菜单项是否在选择时水平平移app:itemHorizontalTranslationEnabled="false"app:labelVisibilityMode="labeled.原创 2021-05-17 15:47:31 · 1076 阅读 · 0 评论 -
DeepLink的使用
Navigation组件提供了对深层链接(DeepLink)的支持。通过该特性,我们可以利用PendingIntent或者一个真实的URL链接,直接跳转到应用程序的某个destination(Fragment/Activity)最常见的两种使用场景:1.PendingIntent的方式。当你的应用程序收到某个通知推送,你希望用户在点击该通知时,能够直接跳转到展示该通知内容的页面,那么就可以通过PendingIntent来完成此操作。private PendingIntent getPen.原创 2021-03-23 11:16:50 · 1278 阅读 · 0 评论 -
NavigationUI对App bar和页面切换进行管理
NavigationUI.setupActionBarWithNavController()App bar与NavController绑定,这样,当NavController为你完成Fragment切换时,系统会自动为你在App bar中完成一些常见操作。比如,当你切换到一个新的Fragment时,系统会自动在App bar的左侧添加返回按钮,响应返回事件等。App bar左侧的抽屉菜单(DrawLayout + NavigationView) App bar右侧的菜单(menu) 底...原创 2021-03-23 10:56:07 · 445 阅读 · 0 评论 -
使用safe args传递参数
<argument android:name="user_name" app:argType="string" android:defaultValue='"unknown"'/>//通过safe args完成参数传递Bundle bundle = new MainFragmentArgs.Builder().setUserName("Michael").setAge(30).build().toBundle();Navigati..原创 2021-03-23 10:43:32 · 606 阅读 · 0 评论 -
MVVM职责分类
Model,模型层,即数据模型,用于获取和存储数据。 View,视图,即Activity/Fragment ViewModel,视图模型,负责业务逻辑。MVVM 的本质是数据驱动,把解耦做的更彻底,viewModel不持有view 。View 产生事件,使用 ViewModel进行逻辑处理后,通知Model更新数据,Model把更新的数据给ViewModel,ViewModel自动通知View更新界面,而不是主动调用View的方法。https://blog.csdn....原创 2021-03-17 15:58:25 · 291 阅读 · 0 评论 -
Fragment间数据共享ViewModel
两个 Fragment 通过ViewModelProvider获取ViewModel时 传入的都是它们宿主Activity。这样,当这两个 Fragment 各自获取 ViewModelProvider 时,它们会收到相同的 SharedViewModel 实例(其范围限定为该 Activity)。此方法具有以下 优势:Activity 不需要执行任何操作,也不需要对此通信有任何了解。除了 SharedViewModel 约定之外,Fragment 不需要相互了解。如果其中一个 Fragment原创 2021-03-17 14:55:22 · 2662 阅读 · 0 评论 -
ViewModel
ViewModel 以注重生命周期的方式存储和管理界面相关的数据。(作用)ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。(特点)特点生命周期长于Activity不持有UI层引用使用步骤继承ViewModel自定义MyViewModel在MyViewModel中编写获取UI数据的逻辑使用LiveData将获取到的UI数据抛出在Activity/Fragment中使用ViewModelProvider获取MyViewModel实例观察MyViewM..原创 2021-03-17 14:54:25 · 107 阅读 · 0 评论 -
LiveData
LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity/Fragment)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。LiveData是一个数据持有者,给源数据包装一层。 源数据使用LiveData包装后,可以被observer观察,数据有更新时observer可感知。 但 observer的感知,只发生在(Activity/Fragment)活跃生命周原创 2021-03-17 14:43:30 · 136 阅读 · 1 评论 -
DataBinding响应事件
public class EventHandlerListener { private Context context; public EventHandlerListener(Context context) { this.context = context; } //点击Button会触发这个方法 public void onButtonClicked(){ Toast.makeText(context, "小鑫好好看啊!!"...原创 2021-03-02 14:16:11 · 175 阅读 · 0 评论 -
DataBinding在布局文件中通过标签导入静态工具类
<data> <variable name="book" type="com.example.jetpack.Book" /> <import type="com.example.jetpack.BookRatingUtil"/> </data><TextView android:id="@+id/tvRating" ...原创 2021-03-02 14:03:31 · 327 阅读 · 1 评论 -
Navigation的Deep Link
val args = Bundle() args.putString("deep_args",et_deep_link.text.toString()) val deep = findNavController().createDeepLink() .setDestination(R.id.notificationSampleFragment) .setArguments(...原创 2021-02-23 14:16:38 · 505 阅读 · 0 评论 -
navigation的action跳转,切换动画和传参
1,action在navigation_main.xml中设置action<action android:id="@+id/action_dashBoardSampleFragment_to_notificationSampleFragment" app:destination="@id/notificationSampleFragment"/>action设置好了之后,我们可以执行下面代码进行跳转:findNavController().navigate(R.id.action原创 2021-02-23 11:50:40 · 1476 阅读 · 0 评论 -
navigation的配置以及绑定
1,startDestination是APP默认启动的页面,这里面必须要指定,否则会报错crash。navigation_main.xml<navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.andro...原创 2021-02-23 09:35:52 · 746 阅读 · 0 评论 -
Navigation在侧边栏DrawerLayout的使用
DrawerLayout配置好我们NavigationView里面的_headerLayout_、_menu_即可;app:headerLayout="@layout/nav_header_main" 侧边栏的头app:menu="@menu/activity_main_drawer" 侧边栏的菜单项目特殊点name是androidx.navigation.fragment.NavHostFragment的fragmentapp:navGraph="@navigatio...原创 2021-02-23 09:22:15 · 322 阅读 · 0 评论 -
Jetpack中的Lifecycles
1,实现LifecycleObserver接口2,AppCompatActivity中添加观察者AppCompatActivity/Fragment已实现LifecycleObserver,实现LifecycleObserver的组件可与实现LifecycleOwner的组件无缝协同工作,因为所有者可以提供生命周期,而观察者可以注册以观察生命周期。3,Activity中添加观察者Activity中使用Lifecycles需要我们手动实现LifecycleObserver。...原创 2021-02-22 13:10:26 · 138 阅读 · 0 评论