- 博客(40)
- 收藏
- 关注
原创 Android DataBinding的使用
一、介绍本文是用来简记DataBinding使用前的配置及一些情况下的使用。二、环境配置在项目的要使用DataBinding的module的gradle构建文件里添加如下文件:android { .... dataBinding { enabled = true } }DataBinding插件将会在你的项目内添加必需提供的以及编译...
2019-02-19 15:22:58 1022
原创 adb无线连接手机调试配置
1、手机和电脑连入同一个wifi2、手机处于开发者模式,手机连接电脑,在命令行输入:adb tcpip 55553、断开手机和电脑的连接,命令行输入:adb connect <手机ip地址>4、取消连接:adb disconnect <手机ip地址>4、查询电脑连接了多少设备:adb devices5、指定某设备:adb -s <devic...
2020-04-23 10:15:22 520
原创 Handler源码解析
一、Looper属性static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>();private static Looper sMainLooper; // guarded by Looper.classfinal MessageQueue mQueue;final Thre...
2020-04-21 14:42:52 224
原创 RecyclerView源码分析 — LayoutManager
类名功能RecyclerView.LayoutManager负责Item视图的布局的显示RecyclerView.ItemDecoration绘制Item的分割样式RecyclerView.ItemAnimator负责处理数据添加删除时的动画效果RecyclerView.Adapter创建每一项Item视图RecyclerView.ViewHol...
2020-03-18 20:37:36 527
原创 类加载器 ClassLoader
一、类加载流程graph LRA[加载]-->B[验证]B-->C[准备]C-->D[解析]D-->E[初始化]类加载过程,虚拟机主要完成三件事:通过类的完全限定名(包名+类名)来获取类的二进制字节流。将这个字节流所代表静态存储结构转化为方法区域的运行时数据结构。在堆内存中生成类的Class对象作为方法区的数据访问入口。二、ClassLoader ...
2020-03-06 12:03:35 164
原创 Android启动页图片适配
一、在 drawable 中创建一个 xml 文件:splah.xml<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/app_welcom_bg1" an...
2019-12-11 11:16:30 4295
原创 SharedElement
一、共享元素简单使用(Activity -> Activity)1、在第一个Activity的控件中添加属性:android:transitionName="0_image"添加的方式还有:ViewCompat.setTransitionName(imageView,"0_image");imageView.setTransitionName("0_image");2、在第二...
2019-09-04 11:11:02 309
原创 IoC的简单使用
一、反射的相关apiAPI描述getClass()获取类getName()获得类的完整名字。getAnnotation(xxx.class)获取注解getMethod()获所有(包括父类)public方法getFields()获所有(包括父类)public属性invoke(xx,yy)执行方法getDeclaredMethods...
2019-04-15 16:27:16 923
原创 Java动态代理---Java Proxy
一、Proxy.newProxyInstance()/** * * @param loader 用于定义代理类的类加载器 * @param interfaces 要实现的代理类的接口列表 * @param h 代理类 * @return 具有由指定的类装入器定义并实现指定接口的代理类的指定调用处理程序的代理实例 * @throws...
2019-04-13 16:44:47 169
原创 Java流系列(七):其它
一、writer.flush()和writer.close()的区别相同点:都会刷新缓冲区不同点:A:flush()只刷新缓冲区,close()先刷新缓冲区然后关闭流.B:flush()刷新缓冲区后可以继续写入数据继续刷新缓冲区;close()关闭流后就无法继续写入数据了,否则报流已经关闭异常.二、编码:将字符数据转换成字节数据的过程1、如果没有指定编码表,则默认使用本地编码...
2019-02-22 15:11:31 494
原创 Java流系列(六):RandomAccessFile(随机读写)
1、RandomAccessFile(随机访问文件):可以对文件进行随机的读取和写出,这是到目前为止,我学习的唯一一个可以同时进行读和写操作的类。因为这个类同时实现了DataOutput, DataInput这两个接口.完成文件指针的跳跃有两种方式:randomAccessFile.seek(绝对位置(永远从文件的开头开始计算)); 可以向前移动指针,也可以向后移动指针.randomAc...
2019-02-22 15:10:53 3093
原创 Java流系列(五):打印流、转换流、字符缓冲流
一、打印流PrintStream和PrintWriter的区别:相同点:都是只有输出功能的流.不同点:A:PrintStream:默认情况下会自动刷新缓冲区;PrintWriter默认情况下不会自动刷新缓冲区.B:PrintStream(OutputStream out, boolean autoFlush):第二个参数可以值是否要启用自动刷新缓冲区功能,如果指定则为true,否则为...
2019-02-22 15:10:18 431
原创 Java流系列(四):对象流、内存流
一、对象流(一)、使用对象输入流完成对指定文件的读取操作 (String path=“src”+File.separator+“hsj.bak”;)1.声明对象输入流对象ObjectInputStream objectInputStream=null;2.实例化对象输入流对象objectInputStream=new ObjectInputStream(new FileInpu...
2019-02-22 15:09:46 1034
原创 Java流系列(三):数据流、缓存流
一、数据流注意:使用data输出流写出数据后,在使用Data输入流读取时一定要保证读取的顺序和写出的顺序一致,否则数据出现错乱。(一)、使用数据输入流完成数据的读取操作1.声明数据输入流对象DataInputStream dataInputStream=null;2.实例化数据输入流对象dataInputStream=new DataInputStream(new FileInput...
2019-02-22 15:09:13 1686
原创 Java流系列(二):字节流、字符流
一、字节流(一)、从指定路径的文件中读取数据声明输入流对象InputStream inputStream=null;2.实例化文件输入流对象并指定要读取的文件路径inputStream=new FileInputStream(path);3.读取数据,一个字符一个字符的读(利用了循环)int ch=0;while((ch=inputStream.read())!=-1){...
2019-02-22 15:08:36 406
原创 Java流系列(一):流的分类
File:只能对文件本身的信息进行操作,比如:获取文件的大小等,但无法对文件中的内容进行操作.如果想对文件中的内容进行操作,则必须借助于流的概念.一、流:一串流动的数据,以先进先出的方式发送信息的通道.流的分类:1:按照流的方向(参考点永远是自己的程序)分:输入流(InputStream):只能向其中读取数据的流.输出流(OutputStream):只能向其中写出数据的流....
2019-02-22 15:07:26 4117
原创 网络编程
一、网络编程的概念1、什么是计算机网络?把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便的互相产地消息,共享硬件、软件、数据信息等资源。2、网络通讯协议要使计算机连成的网络能够互通信息,需要对数据传输速率、传输代码、代码结构、传输控制步骤、出错控制等制定一组标准,这一组共同遵守的通信标准就是网络通讯协议,不同的计算机之间...
2019-02-21 14:37:48 383
原创 Java反射
Class类是反射的源头.一、 获取类模板对象的方式:A:方式一:类名.classClass clz1=Person.class;B:方式二:对象名.getClass()方法Class clz2=p.getClass();C:方式三:Class.forName(“包名+类名的字符串”);Class clz3=Class.forName("com.hsj.domain...
2019-02-21 14:35:14 307
原创 XML解析
一、了解XMLXML 指可扩展标记语言(EXtensible Markup Language)XML 是一种标记语言,很类似 HTMLXML 的设计宗旨是传输数据,而非显示数据XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性XML 与 HTML 的主要差异XML 被设计为传输和存储数据,其焦点是数据的内容。HTML 被设计用来显示数据,其焦点是数据...
2019-02-21 14:34:06 178
原创 (七)Android基础系列之:BroadcastReceiver
一、按广播发送的特点:默认情况下,广播接收者的接收顺序就是在功能清单文件中的注册顺序A:正常广播:广播在同一时刻一起发送,接收者会同时收到,其中一个接收者不能终止其它接收者接收广播。实例化意图对象并指定意图对象的actionIntent intent=new Intent(“android.intent.action.hsj”);发送正常广播this.sendBroadcast(in...
2019-02-21 14:28:23 208
原创 (六)Android基础系列之:Service
服务:Android系统的后台服务组件,在后台长时间运行并且不提供用户界面的应用程序组件服务的特点:1.没有用户界面2.不会轻易被Android系统终止3.在系统资源恢复后Service也将自动恢复运行状态4.可用于进程间通信一、启动式服务销毁服务时函数的调用:onDestroy()多次销毁服务,不会多次调用onDestroy(),但也不会报错.启动式服务的特点:A:一旦...
2019-02-21 14:28:06 279
原创 (五)Android基础系列之:Intent
一、Intent1、意图分类:显示意图:指定了目标组件名的意图对象.隐式意图:没有指定目标组件名的意图对象,它通过意图过滤器中的action,category,data进行匹配找到要启动的目标组件。2、隐式意图匹配规则一:一个意图过滤器(intent-filter)至少包含一个action,否则它将阻塞所有意图匹配成功.规则二:一个意图(intent)中至少包含一个acti...
2019-02-20 15:24:08 364
原创 (四)Android基础系列之:Fragment
一、Fragment生命周期函数1、当Fragment第一次依附于它所属的activity时自动调用的方法@Overridepublic void onAttach(Activity activity) { super.onAttach(activity);}2、当Fragment被创建时做初始化操作时自动调用的方法@Overridepublic void onCreate...
2019-02-20 15:22:57 351
原创 (三)Android基础系列之:内容提供者
一、ContentProvider使用内容提供者的好处:统一的数据的访问方式1、注册自定义的内容提供者 <!-- 注册自定义的内容提供者 android:authorities="域名":指定内容提供者的域名 android:name="内容提供者的完整包名+类名": android:enabled="true":控制当前内容提供者是否可以使用,true:表示可...
2019-02-20 15:20:52 445
原创 (二)Android基础系列之:数据存储
一、Android数据存储分类A:Shared Preferences:存储私有的数据以键值对的形式文件的路径为:/data/data/应用程序主包名/shared_prefs/文件名 文件以Xml的形式存储的.1.读取数据的步骤:A:调用Context对象的getSharedPreferences(文件名,文件的操作模式)得到SharedPreferences对象this.sha...
2019-02-20 15:19:22 219
原创 (一)Android基础系列之:ActionBar
一、ActionBar的显示和隐藏1、声明ActionBar对象private ActionBar actionBar;2、得到ActionBar对象this.actionBar=this.getSupportActionBar();3、启用ActionBar上的返回键this.actionBar.setDisplayHomeAsUpEnabled(true);4、显示和隐藏...
2019-02-20 15:18:01 275
原创 Android NDK基础
一、JNI 的概念1、概念JNI全称 Java Native Interface,Java 本地接口。可以通过JNI调用系统提供的API。2、JNI 与 NDK 的区别JNI:JNI是一套编程接口,用来实现Java代码与本地C/C++代码的交互。NDK:NDK是Google开发的一套开发和编译工具集,可以生成动态链接库,主要用于Android的JNI开发。3、JNI 的作用扩展...
2019-02-20 10:23:00 192
原创 Android 组件化
一、组件化使用的原因及好处原因1、实际业务变化非常快,但是单一工程的业务模块耦合度太高,牵一发而动全身; 2、对工程所做的任何修改都必须要编译整个工程; 3、功能测试和系统测试每次都要进行4、团队协同开发存在较多的冲突.不得不花费更多的时间去沟通和协调,并且在开发过程中,任何一位成员没办法专注于自己的功能点,影响开发效率; 5、不能灵活的对业务模块进行配置和组装;好处1、...
2019-02-19 15:44:43 121
原创 Android开发中的一些问题
1、AndroidStudio运行项目提示:解析软件包错误把图片中箭头所指的地方不勾选2、使用ARouter报错:there’s no route matched the path一般是不同的module使用了相同的一级路径。ARouter要求path必须有两级路径/app/xxx,第一级路径是Group的名称,在Arouter第一次寻找到route的时候便删除了这个一级路径的grou...
2019-01-23 15:34:13 749
原创 Android自定义注解
仿写BufferKnife来熟悉自定义注解1、创建一个Java Library:annotationprocessor注意:一定要创建一个Java Library,而不是Android Library因为在使用自定义AbstractProcessor需要使用到javax包中的相关类和接口,这个在android库中并不存在,所以需要使用到Java库。build.gradle的配置:app...
2018-12-07 15:02:45 265
原创 Window flag
参考了:https://blog.csdn.net/i_lovefish/article/details/80500251、防止锁屏(保持屏幕常量)WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON2、设置全屏WindowManager.LayoutParams.FLAG_FULLSCREEN3、恢复window非全屏显示WindowMan...
2018-12-01 14:28:15 1085
原创 RxJava操作符简记
官方文档RxAndroid源码ProgressOn思维导图一、创建操作符1、create操作符创建一个被观察者Observable对象Observable&lt;String&gt; observable = Observable.create(new ObservableOnSubscribe&lt;String&gt;() { @Override public v...
2018-11-20 15:31:11 447
原创 RxJava源码分析(二):常用操作符
一、map操作符map操作符的作用是将被观察者Observable发送的数据在apply()方法中转化成自己需要的返回到下游Observer的onNext()方法中。例:Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subs...
2018-10-08 17:59:30 165
转载 Andoird屏幕适配方案
1、替换系统的dpi转自:https://blog.csdn.net/u013000152/article/details/808553152、使用AutoLayout进行屏幕适配转自:https://blog.csdn.net/zhengjingle/article/details/51742839
2018-10-08 17:55:39 139
原创 RxJava源码分析(一):最简单的订阅流程
一、Observable.create()方法源码: @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) public static &amp;lt;T&amp;gt; Observable&amp;lt;T&amp;gt; create(ObservableOnSubscribe&amp;lt;T&amp;gt; sou
2018-09-29 15:58:45 247
转载 Java并发编程:volatile关键字解析
转载自:(https://www.cnblogs.com/dolphin0520/p/3920373.html
2018-09-28 17:37:00 154
原创 java中的锁:synchronized与ReentrantLock
一、synchronized1、具体的实现方式有:A:同步代码块synchronized(锁旗标/监视哨/任意对象){ //需要同步的代码块}B:同步方法[访问修饰符] synchronized 方法返回值的数据类型 方法名([参数列表]){ //需要同步的代码}2、同步代码块和同步函数的区别: A:语法不同 B:同步代码块的锁是任意对象,同步的实例方法使用锁是...
2018-09-28 16:47:40 259
原创 通过代码动态修改应用图标和应用名
1、AndroidManifest.xml文件的配置<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_l...
2018-06-20 17:53:43 6860
原创 git的一些常用命令
自己的文件(电脑上的)--git add <file>-->添加到暂存区 --git commit -m "<修改信息>"-->提交到本地库 --git push <origin> <master>-->推送到远程仓库1、提交git add <file> (缓存file文件,file为文件名) git add ...
2018-06-19 19:58:38 380 2
原创 Android app生命周期全局监听(判断app是否处于后台)
一、在Application中注册ActivityLifecycleCallbacks:registerActivityLifecycleCallbacks(myActivityLifecycle);public class MyApplication extends Application { private static MyActivityLifecycle myA...
2018-06-19 15:33:01 6011 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人