![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 78
li6472
这个作者很懒,什么都没留下…
展开
-
Android Observe
代码解释很全面,复制到IDE中,可以更方便查看如何使用的祝君早日掌握package observe;import java.util.Observable;import java.util.Observer;//TODO 总体流程:先执行具体类中的——————引用自observer的抽象change方法,// 在执行observer中的update方法,// 最后执行Observable中的具体设计接口,//原创 2021-11-30 14:50:08 · 1964 阅读 · 0 评论 -
Android JNI开发(第一篇)
一 前导1、前导 2、什么是NDK(Native Develop Kit 本地开发) 3、为什么使用NDK 4、NDK到SO 5、JNI二 什么是NDK(Native Develop Kit 本地开发)第三方应用完成可以通过JNI调用自己的C动态度。于是NDK就应运而生了。官网地址:Android NDK官网Android NDK 是一套允许您使用原生代码语言(例如C和C++) 实现部分应用的工具集。在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。...原创 2021-10-28 16:20:23 · 582 阅读 · 0 评论 -
蓝牙的配置与调用
Android蓝牙音乐:Android蓝牙音乐_li6472的博客-CSDN博客解释都在代码里。可以通过复制到IDEL中,然后慢慢分析,很全面,直接用就可以一 AndroidManifest.xml中添加权限 <!-- 蓝牙 --> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="andr...原创 2021-10-19 18:11:09 · 1524 阅读 · 0 评论 -
Android蓝牙音乐
一 蓝牙权限在apk中的AndroidManifest.xml中要有以下语句获得蓝牙相关权限: <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission...原创 2021-10-19 13:56:59 · 2238 阅读 · 1 评论 -
ViewModel(Factory 与 key)
一 为什么要学习ViewModel自定义实例?那么你可能会疑问了,使用 ViewModelProviders.of(getActivity()).get(ViewModel.class); 创建ViewModel这么简单轻松,为什么还要自己构建Factory呢。原因有以下几点:如果你继承的ViewModel类是有参构造,那么上面这个方式是不支持在实例ViewModel的传参的,所以需要自己构建Factory类 一个Activity可能根据业务会有多个不同的ViewModel,那么根据不同的业务下配原创 2021-09-14 16:17:58 · 897 阅读 · 0 评论 -
MutableLiveData详解
一 LiveData是干什么的?1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据.2.其次LiveData其实也是一个观察者模式的数据实体类,它可以跟它注册的观察者回调数据是否已经更新.3.LiveData还能知晓它绑定的Activity或者Fragment的生命周期,它只会给前台活动的activity回调(这个很厉害).这样你可以放心的在它的回调方法里直接将数据添加到View,而不用担心会不会报错.(你也可以不用费心费力判断Fragment是否还存活)二.原创 2021-09-14 15:36:48 · 14762 阅读 · 0 评论 -
fragment调用方法isadded()、isvisible()、isDetached()
一 public final boolean isAdded()如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回false。二 public final boolean isDetached()如果该Fragment已经明确的从UI中分离,那么它返回true。也就是说,在该Fragment对象上使用FragmentTransaction.detach(Fragment)方法。该方法在API Level 13中被引入。三 public final b原创 2021-09-14 11:24:09 · 950 阅读 · 0 评论 -
一个使用Room库的实例
1.添加依赖:implementation 'android.arch.persistence.room:runtime:1.0.0'annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'2.创建Entity实体类:每个Entity实体对象都会映射为表中的某一行@Entity(tableName = "student") //使用Entity注解定义表名为studentpublic class原创 2021-09-13 13:26:03 · 140 阅读 · 0 评论 -
Room库
一 引言Room是Jetpack组件中一个对象关系映射(ORM)库。可以很容易将 SQLite 表数据转换为 Java 对象。Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。 支持与LiveData、RxJava、Kotlin协成组合使用。 Google 官方强烈推荐使用Room。二 优点编译期检查,Room会在编译的时候验证每个@Query和@Entity等,它不仅检查语法问题,还会检查是否有该表,这就意味着几乎没有任原创 2021-09-13 13:09:41 · 328 阅读 · 0 评论 -
Android中XML的命名空间、自定义属性
命名空间里面存放的是特定属性的集合,android、tools、app(自定义命名空间)1、androidxmlns:android=”http://schemas.android.com/apk/res/android”xmlns:即xml namespace,声明我们要开始定义一个命名空间了android:称作namespace-prefix,它是命名空间的名字http://schemas.android.com/apk/res/android:这看起来是一个URL,但是这...原创 2021-09-10 16:48:17 · 463 阅读 · 0 评论 -
Android依赖包
LitePal 用于操作数据库OkHtto 用于进行网络请求GSON 用于解析JSON数据Glide 用于加载展示图片原创 2021-09-10 14:36:55 · 196 阅读 · 0 评论 -
android之Fragment
一 Fragment的生命周期图二 核心要点:官方文档说创建Fragment时至少需要实现三个方法:onCreate( ),onCreateView( ),OnPause( ); 不过貌似只写一个onCreateView也是可以的... Fragment的生命周期和Activity有点类似:三种状态: Resumed:在允许中的Fragment可见 Paused:所在Activity可见,但是得不到焦点 Stoped: ①调用addToBackStack(),Fragment被添加到Bc原创 2021-08-31 14:35:49 · 120 阅读 · 0 评论 -
android之Intent之复杂数据的传递
1.Intent传递简单数据还记得我们在Activity那里学过如何在两个Activity中互相传递简单数据的方法吗?就是可以直接通过调用Intent的putExtra()方法存入数据,然后在获得Intent后调用getXxxExtra获得 对应类型的数据;传递多个的话,可以使用Bundle对象作为容器,通过调用Bundle的putXxx先将数据 存储到Bundle中,然后调用Intent的putExtras()方法将Bundle存入Intent中,然后获得Intent以后, 调用getExt原创 2021-08-31 14:01:12 · 642 阅读 · 0 评论 -
android之intent
四大组件间的 枢纽——Intent(意图)startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity startService(Intent)/bindService(Intent):来启动一个Service sendBroadcast:发送广播到指定BroadcastReceiver 另外别忘了我们在注册四大组件时,写得很多的Intent-Filter1.显式Intent与隐式Intent的区别显式Inten原创 2021-08-31 13:37:07 · 108 阅读 · 0 评论 -
android之activity数据传递
一 Activity间的数据传递:二 多个Activity间的交互(后一个传回给前一个)三 随时关闭所有Activity有时我们可能会打开了很多个Activity,突然来个这样的需求,在某个页面可以关掉 所有的Activity并退出程序!好吧,下面提供一个关闭所有Activity的方法, 就是用一个list集合来存储所有Activity!具体代码如下:public class ActivityCollector { public static LinkedL原创 2021-08-31 11:38:26 · 230 阅读 · 0 评论 -
android之activity
一 介绍Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方!二 Activity的概念与Activity的生命周期图:注意事项:1. onPause()和onStop()被调用的前提是: 打开了一个新的Activity!而前者是旧Activity还可见的状态;后者是旧Activ原创 2021-08-31 11:22:45 · 153 阅读 · 0 评论 -
文本变化监听
1.监听EditText的内容变化TextWatcher可以调用EditText.addTextChangedListener(mTextWatcher); 为EditText设置内容变化监听!实现该类需实现三个方法:public void beforeTextChanged(CharSequence s, int start,int count, int after); public void onTextChanged(CharSequence s, int start, int b原创 2021-08-30 16:13:17 · 159 阅读 · 0 评论 -
监听与回调
例如:TouchListener与OnTouchEvent的比较TouchListener是基于监听的,而OnTouchEvent则是基于回调的1.基于监听的TouchListener代码解析:设置一个ImageView,然后setOnTouchListener,重写onTouch方法即可实现代码: main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2021-08-30 15:56:32 · 598 阅读 · 0 评论 -
Handler消息传递机制
Activity中UI组件中的信息传递Handler1.Handler:2.Handler类的引入:3.Handler的执行流程图:流程图解析: 相关名词UI线程:就是我们的主线程,系统在创建UI线程的时候会初始化一个Looper对象,同时也会创建一个与其关联的MessageQueue; Handler:作用就是发送与处理信息,如果希望Handler正常工作,在当前线程中要有一个Looper对象 Message:Handler接收与处理的消息对象 MessageQue原创 2021-08-30 15:41:07 · 299 阅读 · 0 评论 -
回调的事件处理机制
1.方法回调 将功能定义与功能分开的一种手段,一种解耦合的设计思想;在Java中回调是通过接口来实现的, 作为一种系统架构,必须要有自己的运行环境,且需要为用户提供实现接口;实现依赖于客户,这样就可以 达到接口统一,实现不同,系统通过在不同的状态下"回调"我们的实现类,从而达到接口和实现的分离!2基于回调的事件处理机制使用场景1)自定义view当用户在GUI组件上激发某个事件时,组件有自己特定的方法会负责处理该事件 通常用法:继承基本的GUI组件,重写该组件的事件处理方法,即自...原创 2021-08-30 15:05:55 · 781 阅读 · 0 评论 -
结合MVVM架构和架构组件LiveData实现Activity和Fragment的页面交互
结合MVBVM架构和架构组件LiveData实现Activity和Fragment的页面交互原创 2021-08-20 17:08:48 · 460 阅读 · 0 评论 -
MVVM框架使用之BaseObservable与双向绑定
黑色字体重要一 双向绑定在TextView中,我们通过dataBinding把实体中的数据放到TextView中展示,这是从实体到view方向上的绑定'我们在TextView手动输入了一些数据,我们通过dataBinding把view中的数据设置到对应的实体类的字段中,这是从view到实体类方向上的绑定,整合起来就是双向绑定二 双向绑定的问题- 死循环绑定:因为数据源改变会通知view刷新,而view改变又会通知数据源刷新,这样一直循环往复,那么对于一些相同数据也要更改,浪费资源,就..原创 2021-08-18 15:43:28 · 1030 阅读 · 0 评论 -
MVVM理解
先上图模型-视图-视图模型解释一下 模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁一 终极解释MVVM是Model-View-ViewModel的简写(它本质上就是MVC (Model-View- Controller)的改进版)两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数...原创 2021-08-17 17:50:05 · 317 阅读 · 0 评论 -
MVVM写一个简单的程序
一 首先配置DataBinding如下以前更新UI需要进入UI线程,影响效率,它解决了将数据分解映射到各个view的问题。什么个意思?具体来说,就是针对每个Activity或者Fragment的布局,在编译阶段,会生成一个ViewDataBinding类的对象,该对象持有Activity要展示的数据和布局中的各个view的引用。同时还有如下优势:将数据分解到各个view、在UI线程上更新数据、监控数据的变化,实时更新,这样一来,你要展示的数据已经和展示它的布局紧紧绑定在了一起。我认为这才是Dat..原创 2021-08-17 17:38:57 · 216 阅读 · 0 评论 -
java回调函数
一 理解当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback二 比喻你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,原创 2021-08-17 13:55:30 · 76 阅读 · 0 评论 -
MVVM框架使用之xml详解
(字体放大会促进学习兴趣哦)一 DataBinding的标签(compilerCommon这个jar包中的android/databinding/tool/store/LayoutFileParser.java这个类中找到。)- layout标签(根标签)- data标签:class属性- variable标签:type属性、name属性- import标签:type属性、alias属性layout标签1 layout标签内部只能有一个直接子view,多于1个就会报错,这个和Scr原创 2021-08-18 16:32:39 · 793 阅读 · 0 评论 -
LiveData速成
一 解释定义LiveData是一个数据持有类特征 数据可以被观察者订阅; 能够感知组件(Fragment、Activity、Service)的生命周期; 只有在组件出于激活状态(STARTED、RESUMED)才会通知观察者有数据更新; 使用实现了LifecycleOwner接口优点防止篇幅过长自己百度吧,看一下就好目录一 解释定义特征使用优点...原创 2021-08-18 18:06:02 · 566 阅读 · 0 评论 -
ViewModel速成
一 主要应用场合ViewModel主要是拿来获取或者保留Activity/Fragment所需要的数据的,开发者可以在Activity/Fragment中观察ViewModel中的数据更改(这里需要配合LiveData食用).二 优点ViewModel旨在以生命周期意识的方式存储和管理用户界面相关的数据,它可以用来管理Activity和Fragment中的数据.还可以拿来处理Fragment与Fragment之间的通信等等.当Activity或者Fragment创建了关联的ViewModel原创 2021-08-19 14:46:36 · 413 阅读 · 0 评论 -
LifeCycle速成
学习一个新知识之前应该知道他的作用和应用场合是什么:Lifecycle类持有Activity 或 Fragment等组件的生命周期信息,并且允许其他对象观察这些信息。Lifecycle内部使用了两个枚举来跟踪其关联组件的生命周期状态:Event和State。祥见下面分析。可以通过调用Lifecycle类的 addObserver() 方法来添加观察者,如下: getLifecycle().addObserver(new TestLifeCycle());5一 导包1 首先...原创 2021-08-19 11:27:55 · 285 阅读 · 0 评论